From 90f657757f9aee2d5017ff8ee5e40f957502b4d1 Mon Sep 17 00:00:00 2001 From: Imanol Fernandez Date: Wed, 1 Nov 2017 17:51:05 +0100 Subject: [PATCH 1/6] Add WebGL conformance 2.0.0 patches --- python/servo/testing_commands.py | 2 +- .../webgl/tools/import-conformance-tests.py | 11 ++- .../tests/webgl/tools/js-test-pre2.patch | 84 +++++++++++++++++++ 3 files changed, 94 insertions(+), 3 deletions(-) create mode 100644 tests/wpt/mozilla/tests/webgl/tools/js-test-pre2.patch diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py index 9c322694f12..17d743a3f6d 100644 --- a/python/servo/testing_commands.py +++ b/python/servo/testing_commands.py @@ -934,7 +934,7 @@ testing/web-platform/mozilla/tests for Servo-only tests""" % reference_path) @Command('update-webgl', description='Update the WebGL conformance suite tests from Khronos repo', category='testing') - @CommandArgument('--version', action='store_true', default='1.0.3', + @CommandArgument('--version', default='2.0.0', help='WebGL conformance suite version') def update_webgl(self, version=None): self.ensure_bootstrapped() diff --git a/tests/wpt/mozilla/tests/webgl/tools/import-conformance-tests.py b/tests/wpt/mozilla/tests/webgl/tools/import-conformance-tests.py index 8712a3d2de5..fdedb71989d 100755 --- a/tests/wpt/mozilla/tests/webgl/tools/import-conformance-tests.py +++ b/tests/wpt/mozilla/tests/webgl/tools/import-conformance-tests.py @@ -9,10 +9,16 @@ import bisect import argparse KHRONOS_REPO_URL = "https://github.com/KhronosGroup/WebGL.git" -PATCHES = [ +# Patches for conformance tests 1.0.x +PATCHES_1X = [ ("js-test-pre.patch", "resources/js-test-pre.js"), ("unit.patch", "conformance/more/unit.js") ] +# Patches for conformance tests 2.0.x +PATCHES_2X = [ + ("js-test-pre2.patch", "js/js-test-pre.js"), + ("unit.patch", "conformance/more/unit.js") +] # Fix for 'UnicodeDecodeError: 'ascii' codec can't decode byte' reload(sys) @@ -124,7 +130,8 @@ def update_conformance(version, destination, existing_repo, patches_dir): # Try to apply the patches to the required files if not patches_dir: patches_dir = os.path.abspath(os.path.dirname(sys.argv[0])) - for patch, file_name in PATCHES: + patches = PATCHES_2X if version.startswith('2') else PATCHES_1X + for patch, file_name in patches: try: patch = os.path.join(patches_dir, patch) subprocess.check_call(["patch", "-d", destination, file_name, patch]) diff --git a/tests/wpt/mozilla/tests/webgl/tools/js-test-pre2.patch b/tests/wpt/mozilla/tests/webgl/tools/js-test-pre2.patch new file mode 100644 index 00000000000..13cb667374c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/tools/js-test-pre2.patch @@ -0,0 +1,84 @@ +diff --git a/conformance-suites/2.0.0/js/js-test-pre.js b/conformance-suites/2.0.0/js/js-test-pre.js +index df30a6f..7ca8559 100644 +--- a/conformance-suites/2.0.0/js/js-test-pre.js ++++ b/conformance-suites/2.0.0/js/js-test-pre.js +@@ -111,11 +111,25 @@ function nonKhronosFrameworkNotifyDone() { + } + } + +-function reportTestResultsToHarness(success, msg) { +- if (window.parent.webglTestHarness) { +- window.parent.webglTestHarness.reportResults(window.location.pathname, success, msg); +- } +-} ++(function() { ++ var WPT_TEST_ID = 0; ++ ++ // Store the current WPT test harness `test` function ++ // if found, since it's overriden by some tests. ++ var wpt_test = window.test; ++ var wpt_assert_true = window.assert_true; ++ var wt_async_test = window.async_test; ++ ++ window.reportTestResultsToHarness = function reportTestResultsToHarness(success, msg) { ++ if (window.parent.webglTestHarness) { ++ window.parent.webglTestHarness.reportResults(window.location.pathname, success, msg); ++ } else if (wpt_test) { // WPT test harness ++ wpt_test(function () { ++ wpt_assert_true(success, msg); ++ }, "WebGL test #" + (WPT_TEST_ID++) + ": " + msg); ++ } ++ } ++ }()) + + function reportSkippedTestResultsToHarness(success, msg) { + if (window.parent.webglTestHarness) { +@@ -132,6 +146,12 @@ function notifyFinishedToHarness() { + } + } + ++(function() { ++ var oldNotify = notifyFinishedToHarness; ++ var t = async_test("Overall test"); ++ window.notifyFinishedToHarness = t.step_func_done(oldNotify); ++}()) ++ + var _bufferedConsoleLogs = []; + + function _bufferedLogToConsole(msg) +@@ -162,7 +182,7 @@ function _flushBufferedLogsToConsole() + } + } + +-var _jsTestPreVerboseLogging = false; ++var _jsTestPreVerboseLogging = true; + + function enableJSTestPreVerboseLogging() + { +@@ -175,24 +195,12 @@ function description(msg) + if (msg === undefined) { + msg = document.title; + } +- // For MSIE 6 compatibility +- var span = document.createElement("span"); +- span.innerHTML = '

' + msg + '

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".

'; +- var description = document.getElementById("description"); +- if (description.firstChild) +- description.replaceChild(span, description.firstChild); +- else +- description.appendChild(span); +- if (_jsTestPreVerboseLogging) { +- _bufferedLogToConsole(msg); +- } ++ ++ _bufferedLogToConsole("DESCRIPTION: " +msg); + } + + function _addSpan(contents) + { +- var span = document.createElement("span"); +- document.getElementById("console").appendChild(span); // insert it first so XHTML knows the namespace +- span.innerHTML = contents + '
'; + } + + function debug(msg) From 07094641f2cee3834565790af93404d0741c1154 Mon Sep 17 00:00:00 2001 From: Imanol Fernandez Date: Wed, 1 Nov 2017 18:24:16 +0100 Subject: [PATCH 2/6] Pull WebGL conformance 2.0.0 suite --- .../webgl/conformance-2.0.0/00_test_list.txt | 7 + .../conformance-2.0.0/CONFORMANCE_RULES.txt | 127 + .../tests/webgl/conformance-2.0.0/README.md | 79 + .../conformance-2.0.0/closure-library/AUTHORS | 19 + .../closure-library/CONTRIBUTING | 48 + .../conformance-2.0.0/closure-library/LICENSE | 176 + .../closure-library/README-Khronos.txt | 20 + .../closure-library/README.md | 9 + .../closure/bin/build/closurebuilder.py | 287 + .../closure/bin/build/depstree.py | 189 + .../closure/bin/build/depswriter.py | 204 + .../closure/bin/build/jscompiler.py | 135 + .../closure/bin/build/source.py | 127 + .../closure/bin/build/treescan.py | 78 + .../closure-library/closure/bin/calcdeps.py | 590 + .../closure-library/closure/bin/scopify.py | 221 + .../closure-library/closure/goog/base.js | 2496 +++ .../closure-library/closure/goog/deps.js | 1465 ++ .../conformance/00_readme.txt | 13 + .../conformance/00_test_list.txt | 18 + .../conformance/attribs/00_test_list.txt | 11 + .../gl-bindAttribLocation-aliasing.html | 92 + .../attribs/gl-bindAttribLocation-matrix.html | 121 + .../gl-bindAttribLocation-repeated.html | 91 + .../attribs/gl-disabled-vertex-attrib.html | 102 + .../attribs/gl-enable-vertex-attrib.html | 84 + .../attribs/gl-matrix-attributes.html | 159 + .../attribs/gl-vertex-attrib-render.html | 112 + .../attribs/gl-vertex-attrib-zero-issues.html | 154 + .../conformance/attribs/gl-vertex-attrib.html | 51 + .../gl-vertexattribpointer-offsets.html | 183 + .../attribs/gl-vertexattribpointer.html | 180 + .../conformance/buffers/00_test_list.txt | 12 + .../conformance/buffers/buffer-bind-test.html | 89 + .../buffer-data-and-buffer-sub-data.html | 190 + .../buffer-data-array-buffer-delete.html | 82 + .../buffers/buffer-uninitialized.html | 125 + .../element-array-buffer-delete-recreate.html | 92 + .../index-validation-copies-indices.html | 77 + ...validation-crash-with-buffer-sub-data.html | 61 + .../index-validation-large-buffer.html | 79 + ...-validation-verifies-too-many-indices.html | 73 + .../index-validation-with-resized-buffer.html | 130 + .../conformance/buffers/index-validation.html | 140 + .../conformance/canvas/00_test_list.txt | 15 + .../canvas/buffer-offscreen-test.html | 101 + .../canvas/buffer-preserve-test.html | 89 + .../conformance/canvas/canvas-test.html | 214 + .../conformance/canvas/canvas-zero-size.html | 66 + ...-static-webgl-to-multiple-canvas-test.html | 98 + .../canvas/draw-webgl-to-canvas-test.html | 101 + .../canvas/drawingbuffer-hd-dpi-test.html | 227 + .../drawingbuffer-static-canvas-test.html | 139 + .../canvas/drawingbuffer-test.html | 140 + ...ffer-bindings-affected-by-to-data-url.html | 97 + ...ebuffer-bindings-unaffected-on-resize.html | 108 + .../conformance/canvas/rapid-resizing.html | 192 + ...texture-bindings-unaffected-on-resize.html | 89 + .../conformance/canvas/to-data-url-test.html | 131 + .../viewport-unchanged-upon-resize.html | 115 + .../conformance/context/00_test_list.txt | 19 + .../context/constants-and-properties.html | 568 + ...ext-attribute-preserve-drawing-buffer.html | 131 + ...ributes-alpha-depth-stencil-antialias.html | 356 + .../context-creation-and-destruction.html | 58 + .../conformance/context/context-creation.html | 58 + ...text-eviction-with-garbage-collection.html | 80 + .../context/context-hidden-alpha.html | 189 + .../context/context-lost-restored.html | 308 + .../conformance/context/context-lost.html | 376 + .../context-no-alpha-fbo-with-alpha.html | 100 + .../context/context-release-upon-reload.html | 95 + .../context/context-release-with-workers.html | 95 + .../context/context-size-change.html | 115 + .../context/context-type-test.html | 76 + .../incorrect-context-object-behaviour.html | 90 + .../conformance/context/methods.html | 241 + .../context/premultiplyalpha-test.html | 268 + .../context/resource-sharing-test.html | 66 + .../context-release-child-with-worker.html | 76 + .../context-release-upon-reload-child.html | 75 + .../resources/context-release-worker.js | 4 + .../user-defined-properties-on-context.html | 72 + .../conformance/extensions/00_test_list.txt | 39 + .../angle-instanced-arrays-out-of-bounds.html | 79 + .../extensions/angle-instanced-arrays.html | 654 + .../extensions/ext-blend-minmax.html | 248 + .../extensions/ext-disjoint-timer-query.html | 328 + .../extensions/ext-frag-depth.html | 312 + .../conformance/extensions/ext-sRGB.html | 432 + .../extensions/ext-shader-texture-lod.html | 364 + .../ext-texture-filter-anisotropic.html | 192 + .../conformance/extensions/get-extension.html | 122 + .../extensions/oes-element-index-uint.html | 451 + .../extensions/oes-standard-derivatives.html | 423 + .../extensions/oes-texture-float-linear.html | 55 + .../oes-texture-float-with-canvas.html | 57 + .../oes-texture-float-with-image-data.html | 58 + .../oes-texture-float-with-image.html | 57 + .../oes-texture-float-with-video.html | 62 + .../extensions/oes-texture-float.html | 293 + .../oes-texture-half-float-linear.html | 58 + .../oes-texture-half-float-with-canvas.html | 62 + ...es-texture-half-float-with-image-data.html | 63 + .../oes-texture-half-float-with-image.html | 62 + .../oes-texture-half-float-with-video.html | 67 + .../extensions/oes-texture-half-float.html | 498 + .../oes-vertex-array-object-bufferData.html | 217 + .../extensions/oes-vertex-array-object.html | 659 + .../webgl-compressed-texture-etc.html | 167 + .../webgl-compressed-texture-pvrtc.html | 394 + .../webgl-compressed-texture-s3tc-srgb.html | 713 + .../webgl-compressed-texture-s3tc.html | 738 + .../webgl-compressed-texture-size-limit.html | 263 + .../extensions/webgl-debug-renderer-info.html | 127 + .../extensions/webgl-debug-shaders.html | 167 + .../extensions/webgl-depth-texture.html | 354 + ...-draw-buffers-framebuffer-unsupported.html | 149 + .../webgl-draw-buffers-max-draw-buffers.html | 141 + .../extensions/webgl-draw-buffers.html | 846 + .../extensions/webgl-shared-resources.html | 863 + .../conformance/glsl/00_test_list.txt | 11 + .../conformance/glsl/bugs/00_test_list.txt | 39 + .../conformance/glsl/bugs/README.md | 18 + .../bugs/angle-ambiguous-function-call.html | 72 + .../angle-constructor-invalid-parameters.html | 79 + .../glsl/bugs/angle-d3d11-compiler-error.html | 119 + .../glsl/bugs/angle-dx-variable-bug.html | 119 + ...ray-of-struct-with-int-first-position.html | 164 + .../bugs/bool-type-cast-bug-int-float.html | 335 + .../bugs/compare-loop-index-to-uniform.html | 89 + .../bugs/complex-glsl-does-not-crash.html | 214 + .../compound-assignment-type-combination.html | 49 + .../bugs/conditional-discard-in-loop.html | 163 + .../conditional-discard-optimization.html | 140 + .../bugs/constant-precision-qualifier.html | 146 + .../glsl/bugs/essl3-shaders-with-webgl1.html | 161 + .../floor-div-cos-should-not-truncate.html | 82 + .../glsl/bugs/floored-division-accuracy.html | 97 + .../glsl/bugs/fragcoord-linking-bug.html | 116 + .../bugs/gl-fragcoord-multisampling-bug.html | 68 + ...nvariant-does-not-leak-across-shaders.html | 100 + ...nvariant-does-not-leak-across-shaders.html | 97 + .../logic-inside-block-without-braces.html | 127 + .../long-expressions-should-not-crash.html | 159 + .../glsl/bugs/loop-if-loop-gradient.html | 98 + .../glsl/bugs/modulo-arithmetic-accuracy.html | 97 + .../glsl/bugs/multiplication-assignment.html | 82 + .../nested-functions-should-not-crash.html | 112 + .../nested-loops-with-break-and-continue.html | 106 + .../glsl/bugs/nested-sequence-operator.html | 70 + ...all-constant-in-user-defined-function.html | 97 + ...th-constant-exponent-should-not-crash.html | 88 + .../conformance/glsl/bugs/qualcomm-crash.html | 159 + .../qualcomm-loop-with-continue-crash.html | 94 + .../bugs/sampler-array-using-loop-index.html | 104 + .../bugs/sampler-struct-function-arg.html | 124 + .../sequence-operator-evaluation-order.html | 144 + .../bugs/sketchfab-lighting-shader-crash.html | 107 + .../bugs/struct-constructor-highp-bug.html | 65 + .../temp-expressions-should-not-crash.html | 123 + .../undefined-index-should-not-crash.html | 87 + .../bugs/uniforms-should-not-lose-values.html | 104 + .../glsl/constructors/00_test_list.txt | 14 + .../constructors/glsl-construct-bvec2.html | 62 + .../constructors/glsl-construct-bvec3.html | 62 + .../constructors/glsl-construct-bvec4.html | 62 + .../constructors/glsl-construct-ivec2.html | 62 + .../constructors/glsl-construct-ivec3.html | 62 + .../constructors/glsl-construct-ivec4.html | 62 + .../constructors/glsl-construct-mat2.html | 62 + .../constructors/glsl-construct-mat3.html | 62 + .../constructors/glsl-construct-mat4.html | 62 + .../glsl-construct-vec-mat-corner-cases.html | 218 + .../glsl-construct-vec-mat-index.html | 77 + .../constructors/glsl-construct-vec2.html | 62 + .../constructors/glsl-construct-vec3.html | 62 + .../constructors/glsl-construct-vec4.html | 62 + .../glsl/functions/00_test_list.txt | 36 + .../glsl/functions/glsl-function-abs.html | 68 + .../glsl/functions/glsl-function-acos.html | 118 + .../glsl/functions/glsl-function-asin.html | 118 + .../glsl/functions/glsl-function-atan-xy.html | 121 + .../glsl/functions/glsl-function-atan.html | 118 + .../glsl/functions/glsl-function-ceil.html | 76 + .../functions/glsl-function-clamp-float.html | 79 + .../glsl-function-clamp-gentype.html | 82 + .../glsl/functions/glsl-function-cos.html | 122 + .../glsl/functions/glsl-function-cross.html | 76 + .../functions/glsl-function-distance.html | 111 + .../glsl/functions/glsl-function-dot.html | 113 + .../functions/glsl-function-faceforward.html | 89 + .../glsl/functions/glsl-function-floor.html | 75 + .../glsl/functions/glsl-function-fract.html | 73 + .../glsl/functions/glsl-function-length.html | 110 + .../functions/glsl-function-max-float.html | 75 + .../functions/glsl-function-max-gentype.html | 75 + .../functions/glsl-function-min-float.html | 75 + .../functions/glsl-function-min-gentype.html | 75 + .../functions/glsl-function-mix-float.html | 77 + .../functions/glsl-function-mix-gentype.html | 77 + .../functions/glsl-function-mod-float.html | 76 + .../functions/glsl-function-mod-gentype.html | 79 + .../functions/glsl-function-normalize.html | 82 + .../glsl/functions/glsl-function-reflect.html | 84 + .../glsl/functions/glsl-function-sign.html | 75 + .../glsl/functions/glsl-function-sin.html | 119 + .../glsl-function-smoothstep-float.html | 120 + .../glsl-function-smoothstep-gentype.html | 79 + .../functions/glsl-function-step-float.html | 75 + .../functions/glsl-function-step-gentype.html | 74 + .../glsl/functions/glsl-function.html | 62 + .../glsl/implicit/00_test_list.txt | 65 + .../glsl/implicit/add_int_float.vert.html | 60 + .../glsl/implicit/add_int_mat2.vert.html | 60 + .../glsl/implicit/add_int_mat3.vert.html | 60 + .../glsl/implicit/add_int_mat4.vert.html | 60 + .../glsl/implicit/add_int_vec2.vert.html | 60 + .../glsl/implicit/add_int_vec3.vert.html | 60 + .../glsl/implicit/add_int_vec4.vert.html | 60 + .../glsl/implicit/add_ivec2_vec2.vert.html | 60 + .../glsl/implicit/add_ivec3_vec3.vert.html | 60 + .../glsl/implicit/add_ivec4_vec4.vert.html | 60 + .../implicit/assign_int_to_float.vert.html | 60 + .../implicit/assign_ivec2_to_vec2.vert.html | 60 + .../implicit/assign_ivec3_to_vec3.vert.html | 60 + .../implicit/assign_ivec4_to_vec4.vert.html | 60 + .../glsl/implicit/construct_struct.vert.html | 63 + .../glsl/implicit/divide_int_float.vert.html | 60 + .../glsl/implicit/divide_int_mat2.vert.html | 60 + .../glsl/implicit/divide_int_mat3.vert.html | 60 + .../glsl/implicit/divide_int_mat4.vert.html | 60 + .../glsl/implicit/divide_int_vec2.vert.html | 60 + .../glsl/implicit/divide_int_vec3.vert.html | 60 + .../glsl/implicit/divide_int_vec4.vert.html | 60 + .../glsl/implicit/divide_ivec2_vec2.vert.html | 60 + .../glsl/implicit/divide_ivec3_vec3.vert.html | 60 + .../glsl/implicit/divide_ivec4_vec4.vert.html | 60 + .../glsl/implicit/equal_int_float.vert.html | 60 + .../glsl/implicit/equal_ivec2_vec2.vert.html | 60 + .../glsl/implicit/equal_ivec3_vec3.vert.html | 60 + .../glsl/implicit/equal_ivec4_vec4.vert.html | 60 + .../implicit/function_int_float.vert.html | 63 + .../implicit/function_ivec2_vec2.vert.html | 63 + .../implicit/function_ivec3_vec3.vert.html | 63 + .../implicit/function_ivec4_vec4.vert.html | 63 + .../glsl/implicit/greater_than.vert.html | 60 + .../implicit/greater_than_equal.vert.html | 60 + .../glsl/implicit/less_than.vert.html | 60 + .../glsl/implicit/less_than_equal.vert.html | 60 + .../implicit/multiply_int_float.vert.html | 60 + .../glsl/implicit/multiply_int_mat2.vert.html | 60 + .../glsl/implicit/multiply_int_mat3.vert.html | 60 + .../glsl/implicit/multiply_int_mat4.vert.html | 60 + .../glsl/implicit/multiply_int_vec2.vert.html | 60 + .../glsl/implicit/multiply_int_vec3.vert.html | 60 + .../glsl/implicit/multiply_int_vec4.vert.html | 60 + .../implicit/multiply_ivec2_vec2.vert.html | 60 + .../implicit/multiply_ivec3_vec3.vert.html | 60 + .../implicit/multiply_ivec4_vec4.vert.html | 60 + .../implicit/not_equal_int_float.vert.html | 60 + .../implicit/not_equal_ivec2_vec2.vert.html | 60 + .../implicit/not_equal_ivec3_vec3.vert.html | 60 + .../implicit/not_equal_ivec4_vec4.vert.html | 60 + .../implicit/subtract_int_float.vert.html | 60 + .../glsl/implicit/subtract_int_mat2.vert.html | 60 + .../glsl/implicit/subtract_int_mat3.vert.html | 60 + .../glsl/implicit/subtract_int_mat4.vert.html | 60 + .../glsl/implicit/subtract_int_vec2.vert.html | 60 + .../glsl/implicit/subtract_int_vec3.vert.html | 60 + .../glsl/implicit/subtract_int_vec4.vert.html | 60 + .../implicit/subtract_ivec2_vec2.vert.html | 60 + .../implicit/subtract_ivec3_vec3.vert.html | 60 + .../implicit/subtract_ivec4_vec4.vert.html | 60 + .../glsl/implicit/ternary_int_float.vert.html | 60 + .../implicit/ternary_ivec2_vec2.vert.html | 60 + .../implicit/ternary_ivec3_vec3.vert.html | 60 + .../implicit/ternary_ivec4_vec4.vert.html | 60 + .../glsl/literals/00_test_list.txt | 3 + .../glsl/literals/float_literal.vert.html | 74 + .../glsl/literals/literal_precision.html | 58 + .../glsl/literals/overflow_leak.vert.html | 84 + .../glsl/matrices/00_test_list.txt | 3 + .../glsl/matrices/glsl-mat3-construction.html | 95 + .../glsl/matrices/glsl-mat4-to-mat3.html | 93 + .../matrices/matrix-compound-multiply.html | 94 + .../conformance/glsl/misc/00_test_list.txt | 114 + .../misc/attrib-location-length-limits.html | 112 + .../glsl/misc/boolean_precision.html | 95 + .../misc/const-variable-initialization.html | 267 + ...embedded-struct-definitions-forbidden.html | 64 + .../glsl/misc/empty-declaration.html | 134 + .../glsl/misc/empty_main.vert.html | 56 + ...ession-list-in-declarator-initializer.html | 89 + .../glsl/misc/gl_position_unset.vert.html | 60 + .../glsl/misc/global-variable-init.html | 316 + .../glsl/misc/glsl-function-nodes.html | 157 + .../glsl/misc/glsl-long-variable-names.html | 250 + .../glsl/misc/glsl-vertex-branch.html | 151 + .../conformance/glsl/misc/include.vs | 4 + .../glsl/misc/large-loop-compile.html | 195 + .../glsl/misc/non-ascii-comments.vert.html | 61 + .../conformance/glsl/misc/non-ascii.vert.html | 60 + .../glsl/misc/re-compile-re-link.html | 173 + .../sequence-operator-returns-constant.html | 83 + .../misc/shader-precision-format-obeyed.html | 106 + .../glsl/misc/shader-struct-scope.html | 254 + .../shader-uniform-packing-restrictions.html | 274 + .../shader-varying-packing-restrictions.html | 211 + .../shader-with-256-character-define.html | 59 + ...er-with-256-character-identifier.frag.html | 128 + .../shader-with-257-character-define.html | 59 + ...er-with-257-character-identifier.frag.html | 59 + .../shader-with-_webgl-identifier.vert.html | 60 + .../shader-with-arbitrary-indexing.frag.html | 64 + .../shader-with-arbitrary-indexing.vert.html | 63 + ...th-array-of-structs-containing-arrays.html | 156 + .../shader-with-array-of-structs-uniform.html | 168 + .../misc/shader-with-attrib-array.vert.html | 60 + .../misc/shader-with-attrib-struct.vert.html | 62 + .../misc/shader-with-clipvertex.vert.html | 59 + .../misc/shader-with-comma-assignment.html | 64 + ...der-with-comma-conditional-assignment.html | 215 + ...comma-separated-variable-declarations.html | 60 + ...der-with-conditional-scoping-negative.html | 65 + .../misc/shader-with-conditional-scoping.html | 68 + .../shader-with-default-precision.frag.html | 61 + .../shader-with-default-precision.vert.html | 62 + ...er-with-define-line-continuation.frag.html | 60 + .../misc/shader-with-dfdx-no-ext.frag.html | 60 + .../glsl/misc/shader-with-dfdx.frag.html | 59 + .../glsl/misc/shader-with-do-loop.html | 63 + .../misc/shader-with-error-directive.html | 74 + .../shader-with-explicit-int-cast.vert.html | 61 + .../shader-with-float-return-value.frag.html | 69 + .../glsl/misc/shader-with-for-loop.html | 106 + .../glsl/misc/shader-with-for-scoping.html | 61 + .../misc/shader-with-frag-depth.frag.html | 61 + .../shader-with-function-recursion.frag.html | 68 + .../shader-with-function-scoped-struct.html | 65 + .../misc/shader-with-functional-scoping.html | 62 + .../glsl/misc/shader-with-glcolor.vert.html | 58 + .../glsl/misc/shader-with-gles-1.frag.html | 62 + .../misc/shader-with-gles-symbol.frag.html | 62 + ...th-global-variable-precision-mismatch.html | 151 + .../shader-with-glprojectionmatrix.vert.html | 58 + .../shader-with-hex-int-constant-macro.html | 61 + ...-with-implicit-vec3-to-vec4-cast.vert.html | 61 + .../glsl/misc/shader-with-include.vert.html | 62 + .../shader-with-int-return-value.frag.html | 65 + .../shader-with-invalid-identifier.frag.html | 59 + .../shader-with-ivec2-return-value.frag.html | 65 + .../shader-with-ivec3-return-value.frag.html | 65 + .../shader-with-ivec4-return-value.frag.html | 65 + .../shader-with-limited-indexing.frag.html | 77 + .../glsl/misc/shader-with-long-line.html | 90 + .../shader-with-non-ascii-error.frag.html | 60 + .../misc/shader-with-non-reserved-words.html | 718 + .../glsl/misc/shader-with-precision.frag.html | 60 + .../shader-with-preprocessor-whitespace.html | 85 + .../misc/shader-with-quoted-error.frag.html | 60 + .../glsl/misc/shader-with-reserved-words.html | 286 + ...hader-with-short-circuiting-operators.html | 179 + ...ader-with-similar-uniform-array-names.html | 132 + .../misc/shader-with-too-many-uniforms.html | 146 + .../shader-with-two-initializer-types.html | 59 + ...th-undefined-preprocessor-symbol.frag.html | 62 + ...r-with-uniform-in-loop-condition.vert.html | 65 + .../shader-with-vec2-return-value.frag.html | 67 + .../shader-with-vec3-return-value.frag.html | 67 + .../shader-with-vec4-return-value.frag.html | 67 + ...hader-with-vec4-vec3-vec4-conditional.html | 59 + .../misc/shader-with-version-100.frag.html | 64 + .../misc/shader-with-version-100.vert.html | 61 + .../misc/shader-with-version-120.vert.html | 61 + .../misc/shader-with-version-130.vert.html | 61 + .../shader-with-webgl-identifier.vert.html | 60 + .../glsl/misc/shader-with-while-loop.html | 61 + .../misc/shader-without-precision.frag.html | 60 + ...h-constant-expression-loop-conditions.html | 138 + .../glsl/misc/shaders-with-invariance.html | 355 + .../shaders-with-mis-matching-uniforms.html | 110 + .../shaders-with-mis-matching-varyings.html | 103 + .../misc/shaders-with-missing-varyings.html | 97 + .../misc/shaders-with-name-conflicts.html | 106 + .../misc/shaders-with-uniform-structs.html | 312 + .../glsl/misc/shaders-with-varyings.html | 126 + .../conformance/glsl/misc/shared.html | 174 + .../conformance/glsl/misc/struct-assign.html | 235 + .../conformance/glsl/misc/struct-equals.html | 240 + .../misc/struct-mixed-array-declarators.html | 92 + .../misc/struct-nesting-exceeds-maximum.html | 78 + .../struct-nesting-of-variable-names.html | 95 + .../misc/struct-nesting-under-maximum.html | 74 + .../misc/struct-specifiers-in-uniforms.html | 86 + .../glsl/misc/struct-unary-operators.html | 91 + .../glsl/misc/ternary-operator-on-arrays.html | 87 + ...nary-operators-in-global-initializers.html | 88 + .../ternary-operators-in-initializers.html | 145 + .../misc/uniform-location-length-limits.html | 109 + .../glsl/reserved/00_test_list.txt | 8 + .../glsl/reserved/_webgl_field.vert.html | 63 + .../glsl/reserved/_webgl_function.vert.html | 61 + .../glsl/reserved/_webgl_struct.vert.html | 61 + .../glsl/reserved/_webgl_variable.vert.html | 57 + .../glsl/reserved/webgl_field.vert.html | 63 + .../glsl/reserved/webgl_function.vert.html | 61 + .../glsl/reserved/webgl_struct.vert.html | 61 + .../glsl/reserved/webgl_variable.vert.html | 57 + .../glsl/samplers/00_test_list.txt | 4 + .../glsl-function-texture2d-bias.html | 124 + .../samplers/glsl-function-texture2dlod.html | 132 + .../samplers/glsl-function-texture2dproj.html | 139 + .../glsl-function-texture2dprojlod.html | 163 + .../glsl/variables/00_test_list.txt | 6 + .../variables/gl-fragcoord-xy-values.html | 208 + .../glsl/variables/gl-fragcoord.html | 107 + .../variables/gl-fragdata-and-fragcolor.html | 61 + .../glsl/variables/gl-frontfacing.html | 109 + .../glsl/variables/gl-pointcoord.html | 164 + .../glsl/variables/glsl-built-ins.html | 129 + .../conformance/limits/00_test_list.txt | 6 + .../conformance/limits/gl-line-width.html | 95 + .../limits/gl-max-texture-dimensions.html | 132 + .../conformance/limits/gl-min-attribs.html | 109 + .../conformance/limits/gl-min-textures.html | 104 + .../conformance/limits/gl-min-uniforms.html | 128 + .../conformance/misc/00_test_list.txt | 15 + .../conformance/misc/bad-arguments-test.html | 123 + .../misc/boolean-argument-conversion.html | 138 + .../conformance/misc/delayed-drawing.html | 87 + .../conformance/misc/error-reporting.html | 96 + .../conformance/misc/expando-loss.html | 245 + .../misc/functions-returning-strings.html | 127 + .../conformance/misc/instanceof-test.html | 67 + .../misc/invalid-passed-params.html | 190 + .../conformance/misc/is-object.html | 101 + .../misc/null-object-behaviour.html | 112 + .../misc/object-deletion-behaviour.html | 466 + .../misc/shader-precision-format.html | 160 + .../misc/type-conversion-test.html | 174 + .../conformance/misc/uninitialized-test.html | 216 + .../conformance/misc/webgl-specific.html | 134 + .../conformance/more/00_test_list.txt | 57 + .../conformance/more/README.md | 53 + .../more/conformance/argGenerators-A.js | 86 + .../more/conformance/argGenerators-B1.js | 78 + .../more/conformance/argGenerators-B2.js | 171 + .../more/conformance/argGenerators-B3.js | 85 + .../more/conformance/argGenerators-B4.js | 88 + .../more/conformance/argGenerators-C.js | 136 + .../more/conformance/argGenerators-D_G.js | 252 + .../more/conformance/argGenerators-G_I.js | 141 + .../more/conformance/argGenerators-L_S.js | 139 + .../more/conformance/argGenerators-S_V.js | 229 + .../more/conformance/constants.html | 374 + .../more/conformance/getContext.html | 61 + .../conformance/more/conformance/methods.html | 203 + .../more/conformance/quickCheckAPI-A.html | 86 + .../more/conformance/quickCheckAPI-B1.html | 86 + .../more/conformance/quickCheckAPI-B2.html | 86 + .../more/conformance/quickCheckAPI-B3.html | 86 + .../more/conformance/quickCheckAPI-B4.html | 86 + .../more/conformance/quickCheckAPI-C.html | 86 + .../more/conformance/quickCheckAPI-D_G.html | 86 + .../more/conformance/quickCheckAPI-G_I.html | 86 + .../more/conformance/quickCheckAPI-L_S.html | 86 + .../more/conformance/quickCheckAPI-S_V.html | 86 + .../more/conformance/quickCheckAPI.js | 430 + .../more/conformance/webGLArrays.html | 188 + .../more/functions/bindBuffer.html | 71 + .../more/functions/bindBufferBadArgs.html | 96 + .../bindFramebufferLeaveNonZero.html | 52 + .../more/functions/bufferData.html | 89 + .../more/functions/bufferDataBadArgs.html | 81 + .../more/functions/bufferSubData.html | 140 + .../more/functions/bufferSubDataBadArgs.html | 96 + .../more/functions/copyTexImage2D.html | 132 + .../more/functions/copyTexImage2DBadArgs.html | 111 + .../more/functions/copyTexSubImage2D.html | 144 + .../functions/copyTexSubImage2DBadArgs.html | 119 + .../more/functions/deleteBufferBadArgs.html | 67 + .../more/functions/drawArrays.html | 137 + .../more/functions/drawArraysOutOfBounds.html | 307 + .../more/functions/drawElements.html | 145 + .../conformance/more/functions/isTests.html | 84 + .../more/functions/isTestsBadArgs.html | 110 + .../more/functions/readPixels.html | 65 + .../more/functions/readPixelsBadArgs.html | 126 + .../more/functions/texImage2D.html | 88 + .../more/functions/texImage2DBadArgs.html | 109 + .../more/functions/texImage2DHTML.html | 161 + .../more/functions/texImage2DHTMLBadArgs.html | 74 + .../more/functions/texSubImage2D.html | 93 + .../more/functions/texSubImage2DBadArgs.html | 118 + .../more/functions/texSubImage2DHTML.html | 174 + .../functions/texSubImage2DHTMLBadArgs.html | 106 + .../more/functions/uniformMatrix.html | 92 + .../more/functions/uniformMatrixBadArgs.html | 166 + .../conformance/more/functions/uniformf.html | 97 + .../more/functions/uniformfArrayLen1.html | 123 + .../more/functions/uniformfBadArgs.html | 128 + .../conformance/more/functions/uniformi.html | 97 + .../more/functions/uniformiBadArgs.html | 124 + .../more/functions/vertexAttrib.html | 144 + .../more/functions/vertexAttribBadArgs.html | 120 + .../more/functions/vertexAttribPointer.html | 108 + .../functions/vertexAttribPointerBadArgs.html | 94 + .../more/glsl/arrayOutOfBounds.html | 281 + .../more/glsl/uniformOutOfBounds.html | 219 + .../conformance/more/unit.css | 66 + .../conformance/more/unit.js | 993 ++ .../conformance/more/util.js | 1286 ++ .../conformance/ogles/00_test_list.txt | 2 + .../ogles/GL/abs/abs_001_to_006.html | 131 + .../ogles/GL/abs/abs_float_frag_xvary.frag | 35 + .../GL/abs/abs_float_frag_xvary_ref.frag | 37 + .../ogles/GL/abs/abs_float_vert_xvary.vert | 36 + .../GL/abs/abs_float_vert_xvary_ref.vert | 38 + .../ogles/GL/abs/abs_vec2_frag_xvary.frag | 35 + .../ogles/GL/abs/abs_vec2_frag_xvary_ref.frag | 38 + .../ogles/GL/abs/abs_vec2_vert_xvary.vert | 36 + .../ogles/GL/abs/abs_vec2_vert_xvary_ref.vert | 39 + .../ogles/GL/abs/abs_vec3_frag_xvary.frag | 35 + .../ogles/GL/abs/abs_vec3_frag_xvary_ref.frag | 40 + .../ogles/GL/abs/abs_vec3_vert_xvary.vert | 36 + .../ogles/GL/abs/abs_vec3_vert_xvary_ref.vert | 40 + .../conformance/ogles/GL/abs/input.run.txt | 2 + .../ogles/GL/acos/acos_001_to_006.html | 131 + .../ogles/GL/acos/acos_float_frag_xvary.frag | 36 + .../GL/acos/acos_float_frag_xvary_ref.frag | 111 + .../ogles/GL/acos/acos_float_vert_xvary.vert | 37 + .../GL/acos/acos_float_vert_xvary_ref.vert | 58 + .../ogles/GL/acos/acos_vec2_frag_xvary.frag | 36 + .../GL/acos/acos_vec2_frag_xvary_ref.frag | 147 + .../ogles/GL/acos/acos_vec2_vert_xvary.vert | 37 + .../GL/acos/acos_vec2_vert_xvary_ref.vert | 73 + .../ogles/GL/acos/acos_vec3_frag_xvary.frag | 36 + .../GL/acos/acos_vec3_frag_xvary_ref.frag | 183 + .../ogles/GL/acos/acos_vec3_vert_xvary.vert | 37 + .../GL/acos/acos_vec3_vert_xvary_ref.vert | 89 + .../conformance/ogles/GL/acos/input.run.txt | 2 + .../ogles/GL/all/all_001_to_004.html | 105 + .../ogles/GL/all/all_bvec2_frag.frag | 35 + .../ogles/GL/all/all_bvec2_frag_ref.frag | 45 + .../ogles/GL/all/all_bvec2_vert.vert | 36 + .../ogles/GL/all/all_bvec2_vert_ref.vert | 46 + .../ogles/GL/all/all_bvec3_frag.frag | 35 + .../ogles/GL/all/all_bvec3_frag_ref.frag | 46 + .../ogles/GL/all/all_bvec3_vert.vert | 36 + .../ogles/GL/all/all_bvec3_vert_ref.vert | 47 + .../conformance/ogles/GL/all/input.run.txt | 2 + .../ogles/GL/any/any_001_to_004.html | 105 + .../ogles/GL/any/any_bvec2_frag.frag | 35 + .../ogles/GL/any/any_bvec2_frag_ref.frag | 45 + .../ogles/GL/any/any_bvec2_vert.vert | 36 + .../ogles/GL/any/any_bvec2_vert_ref.vert | 46 + .../ogles/GL/any/any_bvec3_frag.frag | 35 + .../ogles/GL/any/any_bvec3_frag_ref.frag | 46 + .../ogles/GL/any/any_bvec3_vert.vert | 36 + .../ogles/GL/any/any_bvec3_vert_ref.vert | 47 + .../conformance/ogles/GL/any/input.run.txt | 2 + .../ogles/GL/array/array_001_to_006.html | 223 + .../array/empty_empty_array_float_frag.frag | 45 + .../array/empty_empty_array_float_vert.vert | 44 + .../array/empty_uniform_array_float_frag.frag | 45 + .../array/empty_uniform_array_float_vert.vert | 47 + .../initfunc_empty_array_float_frag.frag | 50 + .../initfunc_empty_array_float_vert.vert | 49 + .../conformance/ogles/GL/array/input.run.txt | 2 + .../ogles/GL/asin/asin_001_to_006.html | 131 + .../ogles/GL/asin/asin_float_frag_xvary.frag | 36 + .../GL/asin/asin_float_frag_xvary_ref.frag | 110 + .../ogles/GL/asin/asin_float_vert_xvary.vert | 37 + .../GL/asin/asin_float_vert_xvary_ref.vert | 57 + .../ogles/GL/asin/asin_vec2_frag_xvary.frag | 36 + .../GL/asin/asin_vec2_frag_xvary_ref.frag | 146 + .../ogles/GL/asin/asin_vec2_vert_xvary.vert | 37 + .../GL/asin/asin_vec2_vert_xvary_ref.vert | 71 + .../ogles/GL/asin/asin_vec3_frag_xvary.frag | 36 + .../GL/asin/asin_vec3_frag_xvary_ref.frag | 182 + .../ogles/GL/asin/asin_vec3_vert_xvary.vert | 37 + .../GL/asin/asin_vec3_vert_xvary_ref.vert | 86 + .../conformance/ogles/GL/asin/input.run.txt | 2 + .../ogles/GL/atan/atan_001_to_008.html | 157 + .../ogles/GL/atan/atan_009_to_012.html | 105 + .../ogles/GL/atan/atan_float_frag_xvary.frag | 36 + .../GL/atan/atan_float_frag_xvary_ref.frag | 72 + .../GL/atan/atan_float_frag_xvaryyvary.frag | 48 + .../atan/atan_float_frag_xvaryyvary_ref.frag | 88 + .../ogles/GL/atan/atan_float_vert_xvary.vert | 37 + .../GL/atan/atan_float_vert_xvary_ref.vert | 73 + .../GL/atan/atan_float_vert_xvaryyvary.vert | 46 + .../atan/atan_float_vert_xvaryyvary_ref.vert | 85 + .../ogles/GL/atan/atan_vec2_frag_xvary.frag | 36 + .../GL/atan/atan_vec2_frag_xvary_ref.frag | 132 + .../GL/atan/atan_vec2_frag_xvaryyvary.frag | 49 + .../atan/atan_vec2_frag_xvaryyvary_ref.frag | 150 + .../ogles/GL/atan/atan_vec2_vert_xvary.vert | 37 + .../GL/atan/atan_vec2_vert_xvary_ref.vert | 133 + .../GL/atan/atan_vec2_vert_xvaryyvary.vert | 51 + .../atan/atan_vec2_vert_xvaryyvary_ref.vert | 150 + .../ogles/GL/atan/atan_vec3_frag_xvary.frag | 36 + .../GL/atan/atan_vec3_frag_xvary_ref.frag | 178 + .../GL/atan/atan_vec3_frag_xvaryyvary.frag | 54 + .../atan/atan_vec3_frag_xvaryyvary_ref.frag | 203 + .../ogles/GL/atan/atan_vec3_vert_xvary.vert | 37 + .../GL/atan/atan_vec3_vert_xvary_ref.vert | 178 + .../GL/atan/atan_vec3_vert_xvaryyvary.vert | 56 + .../atan/atan_vec3_vert_xvaryyvary_ref.vert | 202 + .../conformance/ogles/GL/atan/input.run.txt | 3 + .../biConstants/biConstants_001_to_008.html | 253 + .../biConstants/biConstants_009_to_016.html | 253 + .../gl_MaxCombinedTextureImageUnits_frag.frag | 37 + .../gl_MaxCombinedTextureImageUnits_vert.vert | 38 + .../biConstants/gl_MaxDrawBuffers_frag.frag | 37 + .../biConstants/gl_MaxDrawBuffers_vert.vert | 38 + .../gl_MaxFragmentUniformVectors_frag.frag | 37 + .../gl_MaxFragmentUniformVectors_vert.vert | 38 + .../gl_MaxTextureImageUnits_frag.frag | 37 + .../gl_MaxTextureImageUnits_vert.vert | 38 + .../gl_MaxVaryingVectors_frag.frag | 37 + .../gl_MaxVaryingVectors_vert.vert | 38 + .../biConstants/gl_MaxVertexAttribs_frag.frag | 37 + .../biConstants/gl_MaxVertexAttribs_vert.vert | 38 + .../gl_MaxVertexTextureImageUnits_frag.frag | 39 + .../gl_MaxVertexTextureImageUnits_vert.vert | 40 + .../gl_MaxVertexUniformVectors_frag.frag | 37 + .../gl_MaxVertexUniformVectors_vert.vert | 38 + .../ogles/GL/biConstants/input.run.txt | 3 + .../GL/biuDepthRange/DepthRange_frag.frag | 33 + .../GL/biuDepthRange/DepthRange_vert.vert | 35 + .../biuDepthRange_001_to_002.html | 131 + .../ogles/GL/biuDepthRange/input.run.txt | 2 + .../ogles/GL/build/CG_Data_Types_frag.frag | 45 + .../GL/build/CG_Standard_Library_frag.frag | 32 + .../GL/build/CorrectBuiltInOveride_frag.frag | 39 + .../ogles/GL/build/CorrectComma_frag.frag | 39 + .../GL/build/CorrectConstFolding1_vert.vert | 53 + .../GL/build/CorrectConstFolding2_vert.vert | 438 + .../ogles/GL/build/CorrectConstruct_vert.vert | 54 + .../build/CorrectExtension10_V100_frag.frag | 43 + .../GL/build/CorrectExtension1_V100_frag.frag | 34 + .../GL/build/CorrectExtension4_V100_frag.frag | 35 + .../ogles/GL/build/CorrectFull_vert.vert | 671 + .../GL/build/CorrectFuncOverload_frag.frag | 44 + .../GL/build/CorrectFuncOverload_vert.vert | 54 + .../ogles/GL/build/CorrectFunction1_vert.vert | 53 + .../ogles/GL/build/CorrectModule_frag.frag | 81 + .../ogles/GL/build/CorrectParse1_frag.frag | 68 + .../ogles/GL/build/CorrectParse2_frag.frag | 153 + .../ogles/GL/build/CorrectParse2_vert.vert | 166 + .../GL/build/CorrectParseTest1_frag.frag | 40 + .../ogles/GL/build/CorrectParseTest_frag.frag | 43 + .../GL/build/CorrectPreprocess5_frag.frag | 48 + .../GL/build/CorrectPreprocess8_frag.frag | 132 + .../GL/build/CorrectPreprocess9_frag.frag | 49 + .../ogles/GL/build/CorrectSwizzle1_frag.frag | 41 + .../ogles/GL/build/CorrectSwizzle1_vert.vert | 34 + .../ogles/GL/build/CorrectSwizzle2_frag.frag | 56 + .../ogles/GL/build/CorrectSwizzle2_vert.vert | 34 + .../ogles/GL/build/CorrectSwizzle3_frag.frag | 41 + .../GL/build/CorrectVersion_V100_frag.frag | 36 + .../GL/build/DuplicateVersion1_V100_frag.frag | 36 + .../ogles/GL/build/FunctionParam_vert.vert | 38 + .../Include_Preprocessor_Directive_frag.frag | 29 + ...ow_Level_Assembly_Reserved_Words_frag.frag | 44 + .../ogles/GL/build/Main_Parameters_vert.vert | 29 + .../ogles/GL/build/ParseTest3_frag.frag | 37 + .../ogles/GL/build/ParseTest4_frag.frag | 33 + .../Permissive_Constant_Conversions_frag.frag | 32 + ...issive_Scalar_Vector_Expressions_frag.frag | 33 + .../ogles/GL/build/TernaryOp_frag.frag | 35 + .../Texture_Rectangle_Samplers_frag.frag | 34 + .../ogles/GL/build/array10_frag.frag | 35 + .../ogles/GL/build/array11_frag.frag | 33 + .../ogles/GL/build/array1_frag.frag | 32 + .../ogles/GL/build/array2_frag.frag | 32 + .../ogles/GL/build/array3_frag.frag | 33 + .../ogles/GL/build/array4_frag.frag | 32 + .../ogles/GL/build/array5_frag.frag | 33 + .../ogles/GL/build/array6_frag.frag | 33 + .../ogles/GL/build/array7_frag.frag | 33 + .../ogles/GL/build/array8_frag.frag | 33 + .../ogles/GL/build/array9_frag.frag | 33 + .../ogles/GL/build/attribute1_vert.vert | 31 + .../ogles/GL/build/attribute2_vert.vert | 31 + .../ogles/GL/build/attribute_frag.frag | 32 + .../ogles/GL/build/attribute_vert.vert | 29 + .../ogles/GL/build/break_frag.frag | 32 + .../ogles/GL/build/build_001_to_008.html | 133 + .../ogles/GL/build/build_009_to_016.html | 133 + .../ogles/GL/build/build_017_to_024.html | 133 + .../ogles/GL/build/build_025_to_032.html | 133 + .../ogles/GL/build/build_033_to_040.html | 133 + .../ogles/GL/build/build_041_to_048.html | 133 + .../ogles/GL/build/build_049_to_056.html | 133 + .../ogles/GL/build/build_057_to_064.html | 133 + .../ogles/GL/build/build_065_to_072.html | 133 + .../ogles/GL/build/build_073_to_080.html | 133 + .../ogles/GL/build/build_081_to_088.html | 133 + .../ogles/GL/build/build_089_to_096.html | 133 + .../ogles/GL/build/build_097_to_104.html | 133 + .../ogles/GL/build/build_105_to_112.html | 133 + .../ogles/GL/build/build_113_to_120.html | 133 + .../ogles/GL/build/build_121_to_128.html | 133 + .../ogles/GL/build/build_129_to_136.html | 133 + .../ogles/GL/build/build_137_to_144.html | 133 + .../ogles/GL/build/build_145_to_152.html | 133 + .../ogles/GL/build/build_153_to_160.html | 133 + .../ogles/GL/build/build_161_to_168.html | 133 + .../ogles/GL/build/build_169_to_176.html | 133 + .../ogles/GL/build/build_177_to_178.html | 73 + .../ogles/GL/build/comma1_vert.vert | 33 + .../ogles/GL/build/comma2_frag.frag | 35 + .../ogles/GL/build/comma2_vert.vert | 33 + .../ogles/GL/build/comma3_vert.vert | 34 + .../ogles/GL/build/comment_frag.frag | 32 + .../ogles/GL/build/conditional1_frag.frag | 34 + .../ogles/GL/build/conditional2_frag.frag | 35 + .../ogles/GL/build/conditional3_frag.frag | 34 + .../ogles/GL/build/constFunc_frag.frag | 39 + .../ogles/GL/build/constructor1_frag.frag | 32 + .../ogles/GL/build/constructor2_frag.frag | 33 + .../GL/build/constructor3_V100_frag.frag | 33 + .../ogles/GL/build/continue_frag.frag | 32 + .../ogles/GL/build/dataType10_frag.frag | 33 + .../ogles/GL/build/dataType11_frag.frag | 32 + .../ogles/GL/build/dataType12_frag.frag | 32 + .../ogles/GL/build/dataType13_frag.frag | 34 + .../ogles/GL/build/dataType19_frag.frag | 33 + .../ogles/GL/build/dataType1_frag.frag | 32 + .../ogles/GL/build/dataType2_frag.frag | 34 + .../ogles/GL/build/dataType3_frag.frag | 33 + .../ogles/GL/build/dataType4_frag.frag | 32 + .../ogles/GL/build/dataType5_frag.frag | 32 + .../ogles/GL/build/dataType6_frag.frag | 32 + .../ogles/GL/build/dataType7_frag.frag | 33 + .../ogles/GL/build/dataType8_frag.frag | 33 + .../ogles/GL/build/dataType9_frag.frag | 35 + .../conformance/ogles/GL/build/default.frag | 32 + .../conformance/ogles/GL/build/default.vert | 32 + .../ogles/GL/build/dowhile_frag.frag | 34 + .../ogles/GL/build/dvec2_frag.frag | 32 + .../ogles/GL/build/dvec3_frag.frag | 32 + .../ogles/GL/build/dvec4_frag.frag | 32 + .../ogles/GL/build/extension2_V100_frag.frag | 34 + .../ogles/GL/build/extension3_V100_frag.frag | 33 + .../ogles/GL/build/extension5_V100_frag.frag | 33 + .../ogles/GL/build/extension6_V100_frag.frag | 33 + .../ogles/GL/build/extension7_V100_frag.frag | 33 + .../ogles/GL/build/extension8_V100_frag.frag | 33 + .../ogles/GL/build/extension9_V100_frag.frag | 33 + .../ogles/GL/build/float2_frag.frag | 32 + .../ogles/GL/build/float3_frag.frag | 32 + .../ogles/GL/build/float4_frag.frag | 32 + .../ogles/GL/build/fragmentOnly1_vert.vert | 29 + .../ogles/GL/build/fragmentOnly2_vert.vert | 29 + .../ogles/GL/build/fragmentOnly3_vert.vert | 29 + .../ogles/GL/build/fragmentOnly4_vert.vert | 29 + .../ogles/GL/build/fragmentOnly_vert.vert | 29 + .../ogles/GL/build/function10_frag.frag | 41 + .../ogles/GL/build/function1_frag.frag | 40 + .../ogles/GL/build/function2_V100_frag.frag | 39 + .../ogles/GL/build/function3_frag.frag | 40 + .../ogles/GL/build/function4_frag.frag | 40 + .../ogles/GL/build/function6_frag.frag | 40 + .../ogles/GL/build/function7_frag.frag | 39 + .../ogles/GL/build/function8_frag.frag | 40 + .../ogles/GL/build/function9_frag.frag | 41 + .../ogles/GL/build/hvec2_frag.frag | 32 + .../ogles/GL/build/hvec3_frag.frag | 32 + .../ogles/GL/build/hvec4_frag.frag | 32 + .../ogles/GL/build/identifier1_frag.frag | 32 + .../ogles/GL/build/identifier2_frag.frag | 32 + .../ogles/GL/build/identifier3_frag.frag | 33 + .../conformance/ogles/GL/build/if1_frag.frag | 34 + .../conformance/ogles/GL/build/if2_frag.frag | 35 + .../ogles/GL/build/increment1_frag.frag | 37 + .../ogles/GL/build/increment2_frag.frag | 33 + .../ogles/GL/build/increment3_frag.frag | 34 + .../ogles/GL/build/increment4_frag.frag | 33 + .../ogles/GL/build/increment6_frag.frag | 33 + .../conformance/ogles/GL/build/input.run.txt | 24 + .../ogles/GL/build/main1_vert.vert | 28 + .../ogles/GL/build/main2_vert.vert | 29 + .../ogles/GL/build/main3_vert.vert | 29 + .../ogles/GL/build/matrix_V100_frag.frag | 33 + .../ogles/GL/build/normal_vert.vert | 30 + .../ogles/GL/build/parser10_frag.frag | 32 + .../ogles/GL/build/parser1_vert.vert | 30 + .../ogles/GL/build/parser3_frag.frag | 33 + .../ogles/GL/build/parser4_frag.frag | 33 + .../ogles/GL/build/parser5_frag.frag | 33 + .../ogles/GL/build/parser6_frag.frag | 33 + .../ogles/GL/build/parser7_frag.frag | 33 + .../ogles/GL/build/parser8_frag.frag | 34 + .../ogles/GL/build/parser9_frag.frag | 33 + .../ogles/GL/build/preprocess0_frag.frag | 80 + .../ogles/GL/build/preprocess10_frag.frag | 36 + .../ogles/GL/build/preprocess1_frag.frag | 81 + .../ogles/GL/build/preprocess2_frag.frag | 77 + .../ogles/GL/build/preprocess3_frag.frag | 60 + .../ogles/GL/build/preprocess4_frag.frag | 77 + .../ogles/GL/build/preprocess6_frag.frag | 54 + .../ogles/GL/build/preprocess7_frag.frag | 68 + .../ogles/GL/build/scoping1_frag.frag | 38 + .../ogles/GL/build/scoping2_frag.frag | 36 + .../ogles/GL/build/struct10_frag.frag | 36 + .../ogles/GL/build/struct11_frag.frag | 36 + .../ogles/GL/build/struct1_frag.frag | 35 + .../ogles/GL/build/struct2_frag.frag | 35 + .../ogles/GL/build/struct3_frag.frag | 35 + .../ogles/GL/build/struct4_frag.frag | 35 + .../ogles/GL/build/struct5_frag.frag | 36 + .../ogles/GL/build/struct6_frag.frag | 35 + .../ogles/GL/build/struct7_frag.frag | 33 + .../ogles/GL/build/struct8_frag.frag | 40 + .../ogles/GL/build/struct9_frag.frag | 36 + .../ogles/GL/build/swizzle1_frag.frag | 33 + .../ogles/GL/build/swizzle2_frag.frag | 33 + .../ogles/GL/build/swizzle3_frag.frag | 33 + .../ogles/GL/build/typecast_frag.frag | 33 + .../ogles/GL/build/uniform1_frag.frag | 40 + .../ogles/GL/build/uniform_frag.frag | 32 + .../ogles/GL/build/varying1_frag.frag | 34 + .../ogles/GL/build/varying2_frag.frag | 34 + .../ogles/GL/build/varying3_frag.frag | 34 + .../ogles/GL/build/varying_frag.frag | 32 + .../ogles/GL/build/vector_frag.frag | 33 + .../ogles/GL/build/version2_V100_frag.frag | 36 + .../ogles/GL/build/version3_V100_frag.frag | 36 + .../ogles/GL/build/vertexOnly2_frag.frag | 32 + .../ogles/GL/build/vertexOnly_frag.frag | 42 + .../ogles/GL/build/vertex_vert.vert | 30 + .../ogles/GL/build/while1_frag.frag | 34 + .../ogles/GL/build/while2_frag.frag | 33 + .../ogles/GL/build/while_frag.frag | 34 + ...arying_array_out_of_bounds_001_to_001.html | 63 + ..._Color_array_index_out_of_bounds_frag.frag | 33 + .../input.run.txt | 2 + .../ogles/GL/ceil/ceil_001_to_006.html | 131 + .../ogles/GL/ceil/ceil_float_frag_xvary.frag | 35 + .../GL/ceil/ceil_float_frag_xvary_ref.frag | 41 + .../ogles/GL/ceil/ceil_float_vert_xvary.vert | 36 + .../GL/ceil/ceil_float_vert_xvary_ref.vert | 42 + .../ogles/GL/ceil/ceil_vec2_frag_xvary.frag | 35 + .../GL/ceil/ceil_vec2_frag_xvary_ref.frag | 42 + .../ogles/GL/ceil/ceil_vec2_vert_xvary.vert | 36 + .../GL/ceil/ceil_vec2_vert_xvary_ref.vert | 43 + .../ogles/GL/ceil/ceil_vec3_frag_xvary.frag | 35 + .../GL/ceil/ceil_vec3_frag_xvary_ref.frag | 43 + .../ogles/GL/ceil/ceil_vec3_vert_xvary.vert | 36 + .../GL/ceil/ceil_vec3_vert_xvary_ref.vert | 44 + .../conformance/ogles/GL/ceil/input.run.txt | 2 + .../ogles/GL/clamp/clamp_001_to_006.html | 131 + .../clamp_float_frag_xvary_yconstquarter.frag | 37 + ...mp_float_frag_xvary_yconstquarter_ref.frag | 40 + .../clamp_float_vert_xvary_yconstquarter.vert | 38 + ...mp_float_vert_xvary_yconstquarter_ref.vert | 41 + .../clamp_vec2_frag_xvary_yconstquarter.frag | 37 + ...amp_vec2_frag_xvary_yconstquarter_ref.frag | 42 + .../clamp_vec2_vert_xvary_yconstquarter.vert | 38 + ...amp_vec2_vert_xvary_yconstquarter_ref.vert | 43 + .../clamp_vec3_frag_xvary_yconstquarter.frag | 37 + ...amp_vec3_frag_xvary_yconstquarter_ref.frag | 44 + .../clamp_vec3_vert_xvary_yconstquarter.vert | 38 + ...amp_vec3_vert_xvary_yconstquarter_ref.vert | 45 + .../conformance/ogles/GL/clamp/input.run.txt | 2 + .../control_flow/control_flow_001_to_008.html | 253 + .../control_flow/control_flow_009_to_010.html | 103 + .../ogles/GL/control_flow/for_break_frag.frag | 46 + .../ogles/GL/control_flow/for_break_vert.vert | 45 + .../GL/control_flow/for_continue_frag.frag | 50 + .../GL/control_flow/for_continue_vert.vert | 50 + .../control_flow/for_nested_break_frag.frag | 52 + .../control_flow/for_nested_break_vert.vert | 52 + .../for_nested_continue_frag.frag | 61 + .../for_nested_continue_vert.vert | 61 + .../ogles/GL/control_flow/input.run.txt | 3 + .../GL/control_flow/nested_if_else_frag.frag | 57 + .../GL/control_flow/nested_if_else_vert.vert | 57 + .../ogles/GL/cos/cos_001_to_006.html | 131 + .../ogles/GL/cos/cos_float_frag_xvary.frag | 35 + .../GL/cos/cos_float_frag_xvary_ref.frag | 70 + .../ogles/GL/cos/cos_float_vert_xvary.vert | 36 + .../GL/cos/cos_float_vert_xvary_ref.vert | 50 + .../ogles/GL/cos/cos_vec2_frag_xvary.frag | 35 + .../ogles/GL/cos/cos_vec2_frag_xvary_ref.frag | 74 + .../ogles/GL/cos/cos_vec2_vert_xvary.vert | 36 + .../ogles/GL/cos/cos_vec2_vert_xvary_ref.vert | 50 + .../ogles/GL/cos/cos_vec3_frag_xvary.frag | 35 + .../ogles/GL/cos/cos_vec3_frag_xvary_ref.frag | 74 + .../ogles/GL/cos/cos_vec3_vert_xvary.vert | 36 + .../ogles/GL/cos/cos_vec3_vert_xvary_ref.vert | 50 + .../conformance/ogles/GL/cos/input.run.txt | 2 + .../ogles/GL/cross/cross_001_to_002.html | 79 + .../GL/cross/cross_vec3_frag_xvaryyconst.frag | 47 + .../cross_vec3_frag_xvaryyconst_ref.frag | 49 + .../GL/cross/cross_vec3_vert_xvaryyconst.vert | 46 + .../cross_vec3_vert_xvaryyconst_ref.vert | 50 + .../conformance/ogles/GL/cross/input.run.txt | 2 + .../conformance/ogles/GL/default/default.frag | 34 + .../conformance/ogles/GL/default/default.vert | 36 + .../ogles/GL/default/default_001_to_001.html | 66 + .../ogles/GL/default/default_textured.frag | 36 + .../ogles/GL/default/default_textured.vert | 39 + .../ogles/GL/default/expected.frag | 34 + .../ogles/GL/default/input.run.txt | 2 + .../ogles/GL/degrees/degrees_001_to_006.html | 131 + .../GL/degrees/degrees_float_frag_xvary.frag | 36 + .../degrees/degrees_float_frag_xvary_ref.frag | 36 + .../GL/degrees/degrees_float_vert_xvary.vert | 37 + .../degrees/degrees_float_vert_xvary_ref.vert | 37 + .../GL/degrees/degrees_vec2_frag_xvary.frag | 36 + .../degrees/degrees_vec2_frag_xvary_ref.frag | 36 + .../GL/degrees/degrees_vec2_vert_xvary.vert | 37 + .../degrees/degrees_vec2_vert_xvary_ref.vert | 37 + .../GL/degrees/degrees_vec3_frag_xvary.frag | 36 + .../degrees/degrees_vec3_frag_xvary_ref.frag | 36 + .../GL/degrees/degrees_vec3_vert_xvary.vert | 37 + .../degrees/degrees_vec3_vert_xvary_ref.vert | 37 + .../ogles/GL/degrees/input.run.txt | 2 + .../ogles/GL/discard/discard_001_to_002.html | 91 + .../ogles/GL/discard/discard_cond_frag.frag | 41 + .../GL/discard/discard_cond_frag_ref.frag | 44 + .../ogles/GL/discard/discard_frag.frag | 35 + .../ogles/GL/discard/input.run.txt | 2 + .../GL/distance/distance_001_to_006.html | 131 + .../distance_float_frag_xvaryyhalf.frag | 34 + .../distance_float_frag_xvaryyhalf_ref.frag | 34 + .../distance_float_vert_xvaryyhalf.vert | 35 + .../distance_float_vert_xvaryyhalf_ref.vert | 35 + .../distance_vec2_frag_xvaryyhalf.frag | 34 + .../distance_vec2_frag_xvaryyhalf_ref.frag | 34 + .../distance_vec2_vert_xvaryyhalf.vert | 35 + .../distance_vec2_vert_xvaryyhalf_ref.vert | 35 + .../distance_vec3_frag_xvaryyhalf.frag | 34 + .../distance_vec3_frag_xvaryyhalf_ref.frag | 34 + .../distance_vec3_vert_xvaryyhalf.vert | 35 + .../distance_vec3_vert_xvaryyhalf_ref.vert | 35 + .../ogles/GL/distance/input.run.txt | 2 + .../ogles/GL/dot/dot_001_to_006.html | 131 + .../GL/dot/dot_float_frag_xvaryyone.frag | 34 + .../GL/dot/dot_float_frag_xvaryyone_ref.frag | 34 + .../GL/dot/dot_float_vert_xvaryyone.vert | 35 + .../GL/dot/dot_float_vert_xvaryyone_ref.vert | 35 + .../GL/dot/dot_vec2_frag_xvaryyhalf.frag | 34 + .../GL/dot/dot_vec2_frag_xvaryyhalf_ref.frag | 34 + .../GL/dot/dot_vec2_vert_xvaryyhalf.vert | 35 + .../GL/dot/dot_vec2_vert_xvaryyhalf_ref.vert | 35 + .../GL/dot/dot_vec3_frag_xvaryythird.frag | 34 + .../GL/dot/dot_vec3_frag_xvaryythird_ref.frag | 34 + .../GL/dot/dot_vec3_vert_xvaryythird.vert | 35 + .../GL/dot/dot_vec3_vert_xvaryythird_ref.vert | 35 + .../conformance/ogles/GL/dot/input.run.txt | 2 + .../ogles/GL/equal/equal_001_to_008.html | 157 + .../ogles/GL/equal/equal_009_to_012.html | 105 + .../ogles/GL/equal/equal_bvec2_frag.frag | 40 + .../ogles/GL/equal/equal_bvec2_frag_ref.frag | 50 + .../ogles/GL/equal/equal_bvec2_vert.vert | 37 + .../ogles/GL/equal/equal_bvec2_vert_ref.vert | 47 + .../ogles/GL/equal/equal_bvec3_frag.frag | 36 + .../ogles/GL/equal/equal_bvec3_frag_ref.frag | 48 + .../ogles/GL/equal/equal_bvec3_vert.vert | 37 + .../ogles/GL/equal/equal_bvec3_vert_ref.vert | 49 + .../ogles/GL/equal/equal_ivec2_frag.frag | 36 + .../ogles/GL/equal/equal_ivec2_frag_ref.frag | 46 + .../ogles/GL/equal/equal_ivec2_vert.vert | 37 + .../ogles/GL/equal/equal_ivec2_vert_ref.vert | 47 + .../ogles/GL/equal/equal_ivec3_frag.frag | 36 + .../ogles/GL/equal/equal_ivec3_frag_ref.frag | 48 + .../ogles/GL/equal/equal_ivec3_vert.vert | 37 + .../ogles/GL/equal/equal_ivec3_vert_ref.vert | 49 + .../ogles/GL/equal/equal_vec2_frag.frag | 40 + .../ogles/GL/equal/equal_vec2_frag_ref.frag | 50 + .../ogles/GL/equal/equal_vec2_vert.vert | 37 + .../ogles/GL/equal/equal_vec2_vert_ref.vert | 47 + .../ogles/GL/equal/equal_vec3_frag.frag | 36 + .../ogles/GL/equal/equal_vec3_frag_ref.frag | 48 + .../ogles/GL/equal/equal_vec3_vert.vert | 37 + .../ogles/GL/equal/equal_vec3_vert_ref.vert | 49 + .../conformance/ogles/GL/equal/input.run.txt | 3 + .../ogles/GL/exp/exp_001_to_008.html | 157 + .../ogles/GL/exp/exp_009_to_012.html | 105 + .../ogles/GL/exp/exp_float_frag_xvary.frag | 36 + .../GL/exp/exp_float_frag_xvary_ref.frag | 37 + .../ogles/GL/exp/exp_float_frag_xvaryneg.frag | 35 + .../GL/exp/exp_float_frag_xvaryneg_ref.frag | 36 + .../ogles/GL/exp/exp_float_vert_xvary.vert | 37 + .../GL/exp/exp_float_vert_xvary_ref.vert | 38 + .../ogles/GL/exp/exp_float_vert_xvaryneg.vert | 36 + .../GL/exp/exp_float_vert_xvaryneg_ref.vert | 37 + .../ogles/GL/exp/exp_vec2_frag_xvary.frag | 36 + .../ogles/GL/exp/exp_vec2_frag_xvary_ref.frag | 37 + .../ogles/GL/exp/exp_vec2_frag_xvaryneg.frag | 35 + .../GL/exp/exp_vec2_frag_xvaryneg_ref.frag | 36 + .../ogles/GL/exp/exp_vec2_vert_xvary.vert | 37 + .../ogles/GL/exp/exp_vec2_vert_xvary_ref.vert | 38 + .../ogles/GL/exp/exp_vec2_vert_xvaryneg.vert | 36 + .../GL/exp/exp_vec2_vert_xvaryneg_ref.vert | 37 + .../ogles/GL/exp/exp_vec3_frag_xvary.frag | 36 + .../ogles/GL/exp/exp_vec3_frag_xvary_ref.frag | 37 + .../ogles/GL/exp/exp_vec3_frag_xvaryneg.frag | 35 + .../GL/exp/exp_vec3_frag_xvaryneg_ref.frag | 36 + .../ogles/GL/exp/exp_vec3_vert_xvary.vert | 37 + .../ogles/GL/exp/exp_vec3_vert_xvary_ref.vert | 38 + .../ogles/GL/exp/exp_vec3_vert_xvaryneg.vert | 36 + .../GL/exp/exp_vec3_vert_xvaryneg_ref.vert | 37 + .../conformance/ogles/GL/exp/input.run.txt | 3 + .../ogles/GL/exp2/exp2_001_to_008.html | 157 + .../ogles/GL/exp2/exp2_009_to_012.html | 105 + .../ogles/GL/exp2/exp2_float_frag_xvary.frag | 35 + .../GL/exp2/exp2_float_frag_xvary_ref.frag | 35 + .../GL/exp2/exp2_float_frag_xvaryneg.frag | 35 + .../GL/exp2/exp2_float_frag_xvaryneg_ref.frag | 35 + .../ogles/GL/exp2/exp2_float_vert_xvary.vert | 36 + .../GL/exp2/exp2_float_vert_xvary_ref.vert | 36 + .../GL/exp2/exp2_float_vert_xvaryneg.vert | 36 + .../GL/exp2/exp2_float_vert_xvaryneg_ref.vert | 36 + .../ogles/GL/exp2/exp2_vec2_frag_xvary.frag | 35 + .../GL/exp2/exp2_vec2_frag_xvary_ref.frag | 35 + .../GL/exp2/exp2_vec2_frag_xvaryneg.frag | 35 + .../GL/exp2/exp2_vec2_frag_xvaryneg_ref.frag | 35 + .../ogles/GL/exp2/exp2_vec2_vert_xvary.vert | 36 + .../GL/exp2/exp2_vec2_vert_xvary_ref.vert | 36 + .../GL/exp2/exp2_vec2_vert_xvaryneg.vert | 36 + .../GL/exp2/exp2_vec2_vert_xvaryneg_ref.vert | 36 + .../ogles/GL/exp2/exp2_vec3_frag_xvary.frag | 35 + .../GL/exp2/exp2_vec3_frag_xvary_ref.frag | 35 + .../GL/exp2/exp2_vec3_frag_xvaryneg.frag | 35 + .../GL/exp2/exp2_vec3_frag_xvaryneg_ref.frag | 35 + .../ogles/GL/exp2/exp2_vec3_vert_xvary.vert | 36 + .../GL/exp2/exp2_vec3_vert_xvary_ref.vert | 36 + .../GL/exp2/exp2_vec3_vert_xvaryneg.vert | 36 + .../GL/exp2/exp2_vec3_vert_xvaryneg_ref.vert | 36 + .../conformance/ogles/GL/exp2/input.run.txt | 3 + .../faceforward/faceforward_001_to_006.html | 131 + .../faceforward_float_frag_nvaryiconst.frag | 40 + ...aceforward_float_frag_nvaryiconst_ref.frag | 41 + .../faceforward_float_vert_nvaryiconst.vert | 41 + ...aceforward_float_vert_nvaryiconst_ref.vert | 42 + .../faceforward_vec2_frag_nvaryiconst.frag | 46 + ...faceforward_vec2_frag_nvaryiconst_ref.frag | 47 + .../faceforward_vec2_vert_nvaryiconst.vert | 46 + ...faceforward_vec2_vert_nvaryiconst_ref.vert | 47 + .../faceforward_vec3_frag_nvaryiconst.frag | 47 + ...faceforward_vec3_frag_nvaryiconst_ref.frag | 48 + .../faceforward_vec3_vert_nvaryiconst.vert | 47 + ...faceforward_vec3_vert_nvaryiconst_ref.vert | 48 + .../ogles/GL/faceforward/input.run.txt | 2 + .../ogles/GL/floor/floor_001_to_006.html | 131 + .../GL/floor/floor_float_frag_xvary.frag | 35 + .../GL/floor/floor_float_frag_xvary_ref.frag | 44 + .../GL/floor/floor_float_vert_xvary.vert | 36 + .../GL/floor/floor_float_vert_xvary_ref.vert | 45 + .../ogles/GL/floor/floor_vec2_frag_xvary.frag | 35 + .../GL/floor/floor_vec2_frag_xvary_ref.frag | 48 + .../ogles/GL/floor/floor_vec2_vert_xvary.vert | 36 + .../GL/floor/floor_vec2_vert_xvary_ref.vert | 49 + .../ogles/GL/floor/floor_vec3_frag_xvary.frag | 35 + .../GL/floor/floor_vec3_frag_xvary_ref.frag | 52 + .../ogles/GL/floor/floor_vec3_vert_xvary.vert | 36 + .../GL/floor/floor_vec3_vert_xvary_ref.vert | 53 + .../conformance/ogles/GL/floor/input.run.txt | 2 + .../ogles/GL/fract/fract_001_to_006.html | 131 + .../GL/fract/fract_float_frag_xvary.frag | 36 + .../GL/fract/fract_float_frag_xvary_ref.frag | 36 + .../GL/fract/fract_float_vert_xvary.vert | 37 + .../GL/fract/fract_float_vert_xvary_ref.vert | 37 + .../ogles/GL/fract/fract_vec2_frag_xvary.frag | 36 + .../GL/fract/fract_vec2_frag_xvary_ref.frag | 36 + .../ogles/GL/fract/fract_vec2_vert_xvary.vert | 37 + .../GL/fract/fract_vec2_vert_xvary_ref.vert | 37 + .../ogles/GL/fract/fract_vec3_frag_xvary.frag | 36 + .../GL/fract/fract_vec3_frag_xvary_ref.frag | 36 + .../ogles/GL/fract/fract_vec3_vert_xvary.vert | 37 + .../GL/fract/fract_vec3_vert_xvary_ref.vert | 37 + .../conformance/ogles/GL/fract/input.run.txt | 2 + .../ogles/GL/functions/array_float_frag.frag | 102 + .../ogles/GL/functions/array_float_vert.vert | 103 + .../bool_empty_empty_bool_array_frag.frag | 91 + .../bool_empty_empty_bool_array_vert.vert | 91 + .../bool_empty_empty_bool_empty_frag.frag | 65 + .../bool_empty_empty_bool_empty_vert.vert | 65 + .../bool_empty_in_bool_array_frag.frag | 91 + .../bool_empty_in_bool_array_vert.vert | 91 + .../bool_empty_in_bool_empty_frag.frag | 65 + .../bool_empty_in_bool_empty_vert.vert | 65 + .../bool_empty_inout_bool_array_frag.frag | 91 + .../bool_empty_inout_bool_array_vert.vert | 91 + .../bool_empty_inout_bool_empty_frag.frag | 65 + .../bool_empty_inout_bool_empty_vert.vert | 65 + .../bool_empty_out_bool_array_frag.frag | 85 + .../bool_empty_out_bool_array_vert.vert | 85 + .../bool_empty_out_bool_empty_frag.frag | 59 + .../bool_empty_out_bool_empty_vert.vert | 59 + .../bvec4_empty_empty_bvec4_array_frag.frag | 108 + .../bvec4_empty_empty_bvec4_array_vert.vert | 108 + .../bvec4_empty_empty_bvec4_empty_frag.frag | 91 + .../bvec4_empty_empty_bvec4_empty_vert.vert | 91 + .../bvec4_empty_in_bvec4_array_frag.frag | 108 + .../bvec4_empty_in_bvec4_array_vert.vert | 108 + .../bvec4_empty_in_bvec4_empty_frag.frag | 91 + .../bvec4_empty_in_bvec4_empty_vert.vert | 91 + .../bvec4_empty_inout_bvec4_array_frag.frag | 108 + .../bvec4_empty_inout_bvec4_array_vert.vert | 108 + ...bvec4_empty_inout_bvec4_bigarray_frag.frag | 129 + ...bvec4_empty_inout_bvec4_bigarray_vert.vert | 129 + .../bvec4_empty_inout_bvec4_empty_frag.frag | 91 + .../bvec4_empty_inout_bvec4_empty_vert.vert | 91 + .../bvec4_empty_out_bvec4_array_frag.frag | 102 + .../bvec4_empty_out_bvec4_array_vert.vert | 102 + .../bvec4_empty_out_bvec4_empty_frag.frag | 85 + .../bvec4_empty_out_bvec4_empty_vert.vert | 85 + .../float_empty_empty_float_array_frag.frag | 91 + .../float_empty_empty_float_array_vert.vert | 91 + .../float_empty_empty_float_empty_frag.frag | 65 + .../float_empty_empty_float_empty_vert.vert | 65 + .../float_empty_in_float_array_frag.frag | 91 + .../float_empty_in_float_array_vert.vert | 91 + .../float_empty_in_float_empty_frag.frag | 65 + .../float_empty_in_float_empty_vert.vert | 65 + .../float_empty_inout_float_array_frag.frag | 91 + .../float_empty_inout_float_array_vert.vert | 91 + .../float_empty_inout_float_empty_frag.frag | 65 + .../float_empty_inout_float_empty_vert.vert | 65 + .../float_empty_out_float_array_frag.frag | 85 + .../float_empty_out_float_array_vert.vert | 85 + .../float_empty_out_float_empty_frag.frag | 59 + .../float_empty_out_float_empty_vert.vert | 59 + .../GL/functions/functions_001_to_008.html | 253 + .../GL/functions/functions_009_to_016.html | 253 + .../GL/functions/functions_017_to_024.html | 253 + .../GL/functions/functions_025_to_032.html | 253 + .../GL/functions/functions_033_to_040.html | 253 + .../GL/functions/functions_041_to_048.html | 253 + .../GL/functions/functions_049_to_056.html | 253 + .../GL/functions/functions_057_to_064.html | 253 + .../GL/functions/functions_065_to_072.html | 253 + .../GL/functions/functions_073_to_080.html | 253 + .../GL/functions/functions_081_to_088.html | 253 + .../GL/functions/functions_089_to_096.html | 253 + .../GL/functions/functions_097_to_104.html | 253 + .../GL/functions/functions_105_to_112.html | 253 + .../GL/functions/functions_113_to_120.html | 253 + .../GL/functions/functions_121_to_126.html | 203 + .../ogles/GL/functions/input.run.txt | 17 + .../int_empty_empty_int_array_frag.frag | 91 + .../int_empty_empty_int_array_vert.vert | 91 + .../int_empty_empty_int_empty_frag.frag | 65 + .../int_empty_empty_int_empty_vert.vert | 65 + .../int_empty_in_int_array_frag.frag | 91 + .../int_empty_in_int_array_vert.vert | 91 + .../int_empty_in_int_empty_frag.frag | 65 + .../int_empty_in_int_empty_vert.vert | 65 + .../int_empty_inout_int_array_frag.frag | 91 + .../int_empty_inout_int_array_vert.vert | 91 + .../int_empty_inout_int_empty_frag.frag | 65 + .../int_empty_inout_int_empty_vert.vert | 65 + .../int_empty_out_int_array_frag.frag | 85 + .../int_empty_out_int_array_vert.vert | 85 + .../int_empty_out_int_empty_frag.frag | 59 + .../int_empty_out_int_empty_vert.vert | 59 + .../ivec4_empty_empty_ivec4_array_frag.frag | 108 + .../ivec4_empty_empty_ivec4_array_vert.vert | 108 + .../ivec4_empty_empty_ivec4_empty_frag.frag | 91 + .../ivec4_empty_empty_ivec4_empty_vert.vert | 91 + .../ivec4_empty_in_ivec4_array_frag.frag | 108 + .../ivec4_empty_in_ivec4_array_vert.vert | 108 + .../ivec4_empty_in_ivec4_empty_frag.frag | 91 + .../ivec4_empty_in_ivec4_empty_vert.vert | 91 + .../ivec4_empty_inout_ivec4_array_frag.frag | 108 + .../ivec4_empty_inout_ivec4_array_vert.vert | 108 + ...ivec4_empty_inout_ivec4_bigarray_frag.frag | 129 + ...ivec4_empty_inout_ivec4_bigarray_vert.vert | 129 + .../ivec4_empty_inout_ivec4_empty_frag.frag | 91 + .../ivec4_empty_inout_ivec4_empty_vert.vert | 91 + .../ivec4_empty_out_ivec4_array_frag.frag | 102 + .../ivec4_empty_out_ivec4_array_vert.vert | 102 + .../ivec4_empty_out_ivec4_empty_frag.frag | 85 + .../ivec4_empty_out_ivec4_empty_vert.vert | 85 + .../mat4_empty_empty_mat4_array_frag.frag | 141 + .../mat4_empty_empty_mat4_array_vert.vert | 141 + .../mat4_empty_empty_mat4_empty_frag.frag | 145 + .../mat4_empty_empty_mat4_empty_vert.vert | 145 + .../mat4_empty_in_mat4_array_frag.frag | 141 + .../mat4_empty_in_mat4_array_vert.vert | 141 + .../mat4_empty_in_mat4_empty_frag.frag | 145 + .../mat4_empty_in_mat4_empty_vert.vert | 145 + .../mat4_empty_inout_mat4_array_frag.frag | 141 + .../mat4_empty_inout_mat4_array_vert.vert | 141 + .../mat4_empty_inout_mat4_empty_frag.frag | 145 + .../mat4_empty_inout_mat4_empty_vert.vert | 145 + .../mat4_empty_out_mat4_array_frag.frag | 135 + .../mat4_empty_out_mat4_array_vert.vert | 135 + .../mat4_empty_out_mat4_empty_frag.frag | 136 + .../mat4_empty_out_mat4_empty_vert.vert | 136 + .../GL/functions/qualifiers_float_frag.frag | 59 + .../GL/functions/qualifiers_float_vert.vert | 59 + .../GL/functions/qualifiers_struct_frag.frag | 83 + .../GL/functions/qualifiers_struct_vert.vert | 87 + .../vec4_empty_empty_vec4_array_frag.frag | 108 + .../vec4_empty_empty_vec4_array_vert.vert | 108 + .../vec4_empty_empty_vec4_empty_frag.frag | 91 + .../vec4_empty_empty_vec4_empty_vert.vert | 91 + .../vec4_empty_in_vec4_array_frag.frag | 108 + .../vec4_empty_in_vec4_array_vert.vert | 108 + .../vec4_empty_in_vec4_empty_frag.frag | 91 + .../vec4_empty_in_vec4_empty_vert.vert | 91 + .../vec4_empty_inout_vec4_array_frag.frag | 108 + .../vec4_empty_inout_vec4_array_vert.vert | 108 + .../vec4_empty_inout_vec4_bigarray_frag.frag | 129 + .../vec4_empty_inout_vec4_bigarray_vert.vert | 129 + .../vec4_empty_inout_vec4_empty_frag.frag | 91 + .../vec4_empty_inout_vec4_empty_vert.vert | 91 + .../vec4_empty_out_vec4_array_frag.frag | 102 + .../vec4_empty_out_vec4_array_vert.vert | 102 + .../vec4_empty_out_vec4_empty_frag.frag | 85 + .../vec4_empty_out_vec4_empty_vert.vert | 85 + .../void_empty_empty_void_empty_frag.frag | 49 + .../void_empty_empty_void_empty_vert.vert | 49 + .../gl_FragCoord/gl_FragCoord_001_to_003.html | 112 + .../GL/gl_FragCoord/gl_FragCoord_w_frag.frag | 32 + .../GL/gl_FragCoord/gl_FragCoord_xy_frag.frag | 36 + .../gl_FragCoord_xy_frag_ref.frag | 37 + .../GL/gl_FragCoord/gl_FragCoord_z_frag.frag | 32 + .../gl_FragCoord/gl_FragCoord_z_frag_ref.frag | 42 + .../gl_FragCoord/gl_FragCoord_z_frag_ref.vert | 36 + .../ogles/GL/gl_FragCoord/input.run.txt | 2 + .../gl_FrontFacing_001_to_001.html | 66 + .../gl_FrontFacing/gl_FrontFacing_frag.frag | 35 + .../ogles/GL/gl_FrontFacing/input.run.txt | 2 + .../greaterThan/greaterThan_001_to_008.html | 157 + .../greaterThan/greaterThan_ivec2_frag.frag | 36 + .../greaterThan_ivec2_frag_ref.frag | 46 + .../greaterThan/greaterThan_ivec2_vert.vert | 37 + .../greaterThan_ivec2_vert_ref.vert | 47 + .../greaterThan/greaterThan_ivec3_frag.frag | 36 + .../greaterThan_ivec3_frag_ref.frag | 48 + .../greaterThan/greaterThan_ivec3_vert.vert | 37 + .../greaterThan_ivec3_vert_ref.vert | 49 + .../GL/greaterThan/greaterThan_vec2_frag.frag | 40 + .../greaterThan_vec2_frag_ref.frag | 50 + .../GL/greaterThan/greaterThan_vec2_vert.vert | 37 + .../greaterThan_vec2_vert_ref.vert | 47 + .../GL/greaterThan/greaterThan_vec3_frag.frag | 36 + .../greaterThan_vec3_frag_ref.frag | 48 + .../GL/greaterThan/greaterThan_vec3_vert.vert | 37 + .../greaterThan_vec3_vert_ref.vert | 49 + .../ogles/GL/greaterThan/input.run.txt | 2 + .../greaterThanEqual_001_to_008.html | 157 + .../greaterThanEqual_ivec2_frag.frag | 36 + .../greaterThanEqual_ivec2_frag_ref.frag | 46 + .../greaterThanEqual_ivec2_vert.vert | 37 + .../greaterThanEqual_ivec2_vert_ref.vert | 47 + .../greaterThanEqual_ivec3_frag.frag | 36 + .../greaterThanEqual_ivec3_frag_ref.frag | 48 + .../greaterThanEqual_ivec3_vert.vert | 37 + .../greaterThanEqual_ivec3_vert_ref.vert | 49 + .../greaterThanEqual_vec2_frag.frag | 40 + .../greaterThanEqual_vec2_frag_ref.frag | 50 + .../greaterThanEqual_vec2_vert.vert | 37 + .../greaterThanEqual_vec2_vert_ref.vert | 47 + .../greaterThanEqual_vec3_frag.frag | 36 + .../greaterThanEqual_vec3_frag_ref.frag | 48 + .../greaterThanEqual_vec3_vert.vert | 37 + .../greaterThanEqual_vec3_vert_ref.vert | 49 + .../ogles/GL/greaterThanEqual/input.run.txt | 2 + .../ogles/GL/inversesqrt/input.run.txt | 2 + .../inversesqrt/inversesqrt_001_to_006.html | 131 + .../inversesqrt_float_frag_xvary.frag | 35 + .../inversesqrt_float_frag_xvary_ref.frag | 35 + .../inversesqrt_float_vert_xvary.vert | 36 + .../inversesqrt_float_vert_xvary_ref.vert | 36 + .../inversesqrt_vec2_frag_xvary.frag | 35 + .../inversesqrt_vec2_frag_xvary_ref.frag | 35 + .../inversesqrt_vec2_vert_xvary.vert | 36 + .../inversesqrt_vec2_vert_xvary_ref.vert | 36 + .../inversesqrt_vec3_frag_xvary.frag | 35 + .../inversesqrt_vec3_frag_xvary_ref.frag | 35 + .../inversesqrt_vec3_vert_xvary.vert | 36 + .../inversesqrt_vec3_vert_xvary_ref.vert | 36 + .../conformance/ogles/GL/length/input.run.txt | 2 + .../ogles/GL/length/length_001_to_006.html | 131 + .../GL/length/length_float_frag_xvary.frag | 34 + .../length/length_float_frag_xvary_ref.frag | 34 + .../GL/length/length_float_vert_xvary.vert | 35 + .../length/length_float_vert_xvary_ref.vert | 35 + .../GL/length/length_vec2_frag_xvary.frag | 34 + .../GL/length/length_vec2_frag_xvary_ref.frag | 34 + .../GL/length/length_vec2_vert_xvary.vert | 35 + .../GL/length/length_vec2_vert_xvary_ref.vert | 35 + .../GL/length/length_vec3_frag_xvary.frag | 34 + .../GL/length/length_vec3_frag_xvary_ref.frag | 34 + .../GL/length/length_vec3_vert_xvary.vert | 35 + .../GL/length/length_vec3_vert_xvary_ref.vert | 35 + .../ogles/GL/lessThan/input.run.txt | 2 + .../GL/lessThan/lessThan_001_to_008.html | 157 + .../GL/lessThan/lessThan_ivec2_frag.frag | 36 + .../GL/lessThan/lessThan_ivec2_frag_ref.frag | 46 + .../GL/lessThan/lessThan_ivec2_vert.vert | 37 + .../GL/lessThan/lessThan_ivec2_vert_ref.vert | 47 + .../GL/lessThan/lessThan_ivec3_frag.frag | 36 + .../GL/lessThan/lessThan_ivec3_frag_ref.frag | 48 + .../GL/lessThan/lessThan_ivec3_vert.vert | 37 + .../GL/lessThan/lessThan_ivec3_vert_ref.vert | 49 + .../ogles/GL/lessThan/lessThan_vec2_frag.frag | 40 + .../GL/lessThan/lessThan_vec2_frag_ref.frag | 50 + .../ogles/GL/lessThan/lessThan_vec2_vert.vert | 37 + .../GL/lessThan/lessThan_vec2_vert_ref.vert | 47 + .../ogles/GL/lessThan/lessThan_vec3_frag.frag | 36 + .../GL/lessThan/lessThan_vec3_frag_ref.frag | 48 + .../ogles/GL/lessThan/lessThan_vec3_vert.vert | 37 + .../GL/lessThan/lessThan_vec3_vert_ref.vert | 49 + .../ogles/GL/lessThanEqual/input.run.txt | 2 + .../lessThanEqual_001_to_008.html | 157 + .../lessThanEqual_ivec2_frag.frag | 36 + .../lessThanEqual_ivec2_frag_ref.frag | 46 + .../lessThanEqual_ivec2_vert.vert | 37 + .../lessThanEqual_ivec2_vert_ref.vert | 47 + .../lessThanEqual_ivec3_frag.frag | 36 + .../lessThanEqual_ivec3_frag_ref.frag | 48 + .../lessThanEqual_ivec3_vert.vert | 37 + .../lessThanEqual_ivec3_vert_ref.vert | 49 + .../lessThanEqual_vec2_frag.frag | 40 + .../lessThanEqual_vec2_frag_ref.frag | 50 + .../lessThanEqual_vec2_vert.vert | 37 + .../lessThanEqual_vec2_vert_ref.vert | 47 + .../lessThanEqual_vec3_frag.frag | 36 + .../lessThanEqual_vec3_frag_ref.frag | 48 + .../lessThanEqual_vec3_vert.vert | 37 + .../lessThanEqual_vec3_vert_ref.vert | 49 + .../conformance/ogles/GL/log/input.run.txt | 3 + .../ogles/GL/log/log_001_to_008.html | 157 + .../ogles/GL/log/log_009_to_012.html | 105 + .../ogles/GL/log/log_float_frag_xvary.frag | 35 + .../ogles/GL/log/log_float_frag_xvary01.frag | 35 + .../GL/log/log_float_frag_xvary01_ref.frag | 53 + .../GL/log/log_float_frag_xvary_ref.frag | 50 + .../ogles/GL/log/log_float_vert_xvary.vert | 36 + .../ogles/GL/log/log_float_vert_xvary01.vert | 36 + .../GL/log/log_float_vert_xvary01_ref.vert | 54 + .../GL/log/log_float_vert_xvary_ref.vert | 51 + .../ogles/GL/log/log_vec2_frag_xvary.frag | 35 + .../ogles/GL/log/log_vec2_frag_xvary01.frag | 35 + .../GL/log/log_vec2_frag_xvary01_ref.frag | 53 + .../ogles/GL/log/log_vec2_frag_xvary_ref.frag | 50 + .../ogles/GL/log/log_vec2_vert_xvary.vert | 36 + .../ogles/GL/log/log_vec2_vert_xvary01.vert | 36 + .../GL/log/log_vec2_vert_xvary01_ref.vert | 54 + .../ogles/GL/log/log_vec2_vert_xvary_ref.vert | 51 + .../ogles/GL/log/log_vec3_frag_xvary.frag | 35 + .../ogles/GL/log/log_vec3_frag_xvary01.frag | 35 + .../GL/log/log_vec3_frag_xvary01_ref.frag | 53 + .../ogles/GL/log/log_vec3_frag_xvary_ref.frag | 50 + .../ogles/GL/log/log_vec3_vert_xvary.vert | 36 + .../ogles/GL/log/log_vec3_vert_xvary01.vert | 36 + .../GL/log/log_vec3_vert_xvary01_ref.vert | 54 + .../ogles/GL/log/log_vec3_vert_xvary_ref.vert | 51 + .../conformance/ogles/GL/log2/input.run.txt | 3 + .../ogles/GL/log2/log2_001_to_008.html | 157 + .../ogles/GL/log2/log2_009_to_012.html | 105 + .../ogles/GL/log2/log2_float_frag_xvary.frag | 35 + .../GL/log2/log2_float_frag_xvary01.frag | 35 + .../GL/log2/log2_float_frag_xvary01_ref.frag | 56 + .../GL/log2/log2_float_frag_xvary_ref.frag | 53 + .../ogles/GL/log2/log2_float_vert_xvary.vert | 36 + .../GL/log2/log2_float_vert_xvary01.vert | 36 + .../GL/log2/log2_float_vert_xvary01_ref.vert | 57 + .../GL/log2/log2_float_vert_xvary_ref.vert | 52 + .../ogles/GL/log2/log2_vec2_frag_xvary.frag | 35 + .../ogles/GL/log2/log2_vec2_frag_xvary01.frag | 35 + .../GL/log2/log2_vec2_frag_xvary01_ref.frag | 56 + .../GL/log2/log2_vec2_frag_xvary_ref.frag | 53 + .../ogles/GL/log2/log2_vec2_vert_xvary.vert | 36 + .../ogles/GL/log2/log2_vec2_vert_xvary01.vert | 36 + .../GL/log2/log2_vec2_vert_xvary01_ref.vert | 57 + .../GL/log2/log2_vec2_vert_xvary_ref.vert | 54 + .../ogles/GL/log2/log2_vec3_frag_xvary.frag | 35 + .../ogles/GL/log2/log2_vec3_frag_xvary01.frag | 35 + .../GL/log2/log2_vec3_frag_xvary01_ref.frag | 56 + .../GL/log2/log2_vec3_frag_xvary_ref.frag | 53 + .../ogles/GL/log2/log2_vec3_vert_xvary.vert | 36 + .../ogles/GL/log2/log2_vec3_vert_xvary01.vert | 36 + .../GL/log2/log2_vec3_vert_xvary01_ref.vert | 57 + .../GL/log2/log2_vec3_vert_xvary_ref.vert | 54 + .../ogles/GL/mat/array_const_mat2_frag.frag | 50 + .../ogles/GL/mat/array_const_mat2_vert.vert | 50 + .../ogles/GL/mat/array_const_mat3_frag.frag | 54 + .../ogles/GL/mat/array_const_mat3_vert.vert | 54 + .../ogles/GL/mat/array_const_mat4_frag.frag | 56 + .../ogles/GL/mat/array_const_mat4_vert.vert | 56 + .../ogles/GL/mat/const_mat2_copy_frag.frag | 73 + .../ogles/GL/mat/const_mat2_copy_vert.vert | 72 + .../ogles/GL/mat/const_mat2_frag.frag | 70 + .../ogles/GL/mat/const_mat2_vert.vert | 69 + .../ogles/GL/mat/const_mat3_copy_frag.frag | 83 + .../ogles/GL/mat/const_mat3_copy_vert.vert | 83 + .../ogles/GL/mat/const_mat3_frag.frag | 80 + .../ogles/GL/mat/const_mat3_vert.vert | 79 + .../ogles/GL/mat/const_mat4_copy_frag.frag | 95 + .../ogles/GL/mat/const_mat4_copy_vert.vert | 94 + .../ogles/GL/mat/const_mat4_frag.frag | 92 + .../ogles/GL/mat/const_mat4_vert.vert | 91 + .../conformance/ogles/GL/mat/input.run.txt | 7 + .../ogles/GL/mat/mat2_2vec2_frag.frag | 43 + .../ogles/GL/mat/mat2_2vec2_vert.vert | 45 + .../ogles/GL/mat/mat2_4float_frag.frag | 43 + .../ogles/GL/mat/mat2_4float_vert.vert | 45 + .../ogles/GL/mat/mat2_copy_frag.frag | 73 + .../ogles/GL/mat/mat2_copy_vert.vert | 72 + .../ogles/GL/mat/mat2_float_frag.frag | 48 + .../ogles/GL/mat/mat2_float_vert.vert | 47 + .../conformance/ogles/GL/mat/mat2_frag.frag | 70 + .../conformance/ogles/GL/mat/mat2_vert.vert | 69 + .../ogles/GL/mat/mat3_3vec3_frag.frag | 48 + .../ogles/GL/mat/mat3_3vec3_vert.vert | 49 + .../ogles/GL/mat/mat3_9float_frag.frag | 48 + .../ogles/GL/mat/mat3_9float_vert.vert | 50 + .../ogles/GL/mat/mat3_copy_frag.frag | 83 + .../ogles/GL/mat/mat3_copy_vert.vert | 82 + .../ogles/GL/mat/mat3_float_frag.frag | 59 + .../ogles/GL/mat/mat3_float_vert.vert | 59 + .../conformance/ogles/GL/mat/mat3_frag.frag | 80 + .../conformance/ogles/GL/mat/mat3_vert.vert | 79 + .../ogles/GL/mat/mat4_16float_frag.frag | 74 + .../ogles/GL/mat/mat4_16float_vert.vert | 71 + .../ogles/GL/mat/mat4_4vec4_frag.frag | 76 + .../ogles/GL/mat/mat4_4vec4_vert.vert | 73 + .../ogles/GL/mat/mat4_copy_frag.frag | 95 + .../ogles/GL/mat/mat4_copy_vert.vert | 94 + .../conformance/ogles/GL/mat/mat4_frag.frag | 92 + .../conformance/ogles/GL/mat/mat4_vert.vert | 91 + .../ogles/GL/mat/mat_001_to_008.html | 253 + .../ogles/GL/mat/mat_009_to_016.html | 253 + .../ogles/GL/mat/mat_017_to_024.html | 253 + .../ogles/GL/mat/mat_025_to_032.html | 253 + .../ogles/GL/mat/mat_033_to_040.html | 253 + .../ogles/GL/mat/mat_041_to_046.html | 203 + .../conformance/ogles/GL/mat3/input.run.txt | 2 + .../ogles/GL/mat3/mat3_001_to_006.html | 365 + .../GL/mat3/mat3arrayindirect0_frag.frag | 53 + .../GL/mat3/mat3arrayindirect0_vert.vert | 52 + .../GL/mat3/mat3arrayindirect1_frag.frag | 53 + .../GL/mat3/mat3arrayindirect1_vert.vert | 53 + .../ogles/GL/mat3/mat3arraysimple_frag.frag | 43 + .../ogles/GL/mat3/mat3arraysimple_vert.vert | 49 + .../ogles/GL/matrixCompMult/input.run.txt | 2 + .../matrixCompMult_001_to_004.html | 105 + .../matrixMultComp_mat2_frag.frag | 39 + .../matrixMultComp_mat2_frag_ref.frag | 43 + .../matrixMultComp_mat2_vert.vert | 40 + .../matrixMultComp_mat2_vert_ref.vert | 44 + .../matrixMultComp_mat3_frag.frag | 53 + .../matrixMultComp_mat3_frag_ref.frag | 59 + .../matrixMultComp_mat3_vert.vert | 54 + .../matrixMultComp_mat3_vert_ref.vert | 64 + .../conformance/ogles/GL/max/input.run.txt | 2 + .../ogles/GL/max/max_001_to_006.html | 131 + .../max/max_float_frag_xvary_yconsthalf.frag | 36 + .../max_float_frag_xvary_yconsthalf_ref.frag | 38 + .../max/max_float_vert_xvary_yconsthalf.vert | 37 + .../max_float_vert_xvary_yconsthalf_ref.vert | 39 + .../max/max_vec2_frag_xvary_yconsthalf.frag | 36 + .../max_vec2_frag_xvary_yconsthalf_ref.frag | 39 + .../max/max_vec2_vert_xvary_yconsthalf.vert | 37 + .../max_vec2_vert_xvary_yconsthalf_ref.vert | 40 + .../max/max_vec3_frag_xvary_yconsthalf.frag | 36 + .../max_vec3_frag_xvary_yconsthalf_ref.frag | 40 + .../max/max_vec3_vert_xvary_yconsthalf.vert | 37 + .../max_vec3_vert_xvary_yconsthalf_ref.vert | 41 + .../conformance/ogles/GL/min/input.run.txt | 2 + .../ogles/GL/min/min_001_to_006.html | 131 + .../min/min_float_frag_xvary_yconsthalf.frag | 36 + .../min_float_frag_xvary_yconsthalf_ref.frag | 38 + .../min/min_float_vert_xvary_yconsthalf.vert | 37 + .../min_float_vert_xvary_yconsthalf_ref.vert | 39 + .../min/min_vec2_frag_xvary_yconsthalf.frag | 36 + .../min_vec2_frag_xvary_yconsthalf_ref.frag | 40 + .../min/min_vec2_vert_xvary_yconsthalf.vert | 37 + .../min_vec2_vert_xvary_yconsthalf_ref.vert | 40 + .../min/min_vec3_frag_xvary_yconsthalf.frag | 36 + .../min_vec3_frag_xvary_yconsthalf_ref.frag | 40 + .../min/min_vec3_vert_xvary_yconsthalf.vert | 37 + .../min_vec3_vert_xvary_yconsthalf_ref.vert | 41 + .../conformance/ogles/GL/mix/input.run.txt | 2 + .../ogles/GL/mix/mix_001_to_006.html | 131 + ...loat_frag_xvary_yconsthalf_aconsthalf.frag | 37 + ..._frag_xvary_yconsthalf_aconsthalf_ref.frag | 38 + ...loat_vert_xvary_yconsthalf_aconsthalf.vert | 38 + ..._vert_xvary_yconsthalf_aconsthalf_ref.vert | 39 + ...vec2_frag_xvary_yconsthalf_aconsthalf.frag | 36 + ..._frag_xvary_yconsthalf_aconsthalf_ref.frag | 38 + ...vec2_vert_xvary_yconsthalf_aconsthalf.vert | 37 + ..._vert_xvary_yconsthalf_aconsthalf_ref.vert | 39 + ...vec3_frag_xvary_yconsthalf_aconsthalf.frag | 36 + ..._frag_xvary_yconsthalf_aconsthalf_ref.frag | 38 + ...vec3_vert_xvary_yconsthalf_aconsthalf.vert | 37 + ..._vert_xvary_yconsthalf_aconsthalf_ref.vert | 39 + .../conformance/ogles/GL/mod/input.run.txt | 2 + .../ogles/GL/mod/mod_001_to_008.html | 181 + .../GL/mod/mod_float_frag_xvary_yconst1.frag | 35 + .../mod/mod_float_frag_xvary_yconst1_ref.frag | 36 + .../GL/mod/mod_float_vert_xvary_yconst1.vert | 36 + .../mod/mod_float_vert_xvary_yconst1_ref.vert | 37 + .../GL/mod/mod_vec2_frag_xvary_yconst1.frag | 35 + .../mod/mod_vec2_frag_xvary_yconst1_ref.frag | 36 + .../GL/mod/mod_vec2_vert_xvary_yconst1.vert | 36 + .../mod/mod_vec2_vert_xvary_yconst1_ref.vert | 37 + .../GL/mod/mod_vec3_frag_xvary_yconst1.frag | 35 + .../mod/mod_vec3_frag_xvary_yconst1_ref.frag | 36 + .../GL/mod/mod_vec3_vert_xvary_yconst1.vert | 36 + .../mod/mod_vec3_vert_xvary_yconst1_ref.vert | 37 + .../GL/mod/mod_x_large_y_large_frag.frag | 35 + .../GL/mod/mod_x_large_y_large_vert.vert | 34 + .../ogles/GL/normalize/input.run.txt | 2 + .../GL/normalize/normalize_001_to_006.html | 131 + .../normalize/normalize_float_frag_xvary.frag | 35 + .../normalize_float_frag_xvary_ref.frag | 35 + .../normalize/normalize_float_vert_xvary.vert | 36 + .../normalize_float_vert_xvary_ref.vert | 36 + .../normalize/normalize_vec2_frag_xvary.frag | 35 + .../normalize_vec2_frag_xvary_ref.frag | 35 + .../normalize/normalize_vec2_vert_xvary.vert | 36 + .../normalize_vec2_vert_xvary_ref.vert | 36 + .../normalize/normalize_vec3_frag_xvary.frag | 35 + .../normalize_vec3_frag_xvary_ref.frag | 35 + .../normalize/normalize_vec3_vert_xvary.vert | 36 + .../normalize_vec3_vert_xvary_ref.vert | 36 + .../conformance/ogles/GL/not/input.run.txt | 2 + .../ogles/GL/not/not_001_to_004.html | 105 + .../ogles/GL/not/not_bvec2_frag.frag | 39 + .../ogles/GL/not/not_bvec2_frag_ref.frag | 49 + .../ogles/GL/not/not_bvec2_vert.vert | 36 + .../ogles/GL/not/not_bvec2_vert_ref.vert | 46 + .../ogles/GL/not/not_bvec3_frag.frag | 35 + .../ogles/GL/not/not_bvec3_frag_ref.frag | 47 + .../ogles/GL/not/not_bvec3_vert.vert | 36 + .../ogles/GL/not/not_bvec3_vert_ref.vert | 48 + .../ogles/GL/notEqual/input.run.txt | 3 + .../GL/notEqual/notEqual_001_to_008.html | 157 + .../GL/notEqual/notEqual_009_to_012.html | 105 + .../GL/notEqual/notEqual_bvec2_frag.frag | 40 + .../GL/notEqual/notEqual_bvec2_frag_ref.frag | 50 + .../GL/notEqual/notEqual_bvec2_vert.vert | 37 + .../GL/notEqual/notEqual_bvec2_vert_ref.vert | 47 + .../GL/notEqual/notEqual_bvec3_frag.frag | 36 + .../GL/notEqual/notEqual_bvec3_frag_ref.frag | 48 + .../GL/notEqual/notEqual_bvec3_vert.vert | 37 + .../GL/notEqual/notEqual_bvec3_vert_ref.vert | 49 + .../GL/notEqual/notEqual_ivec2_frag.frag | 36 + .../GL/notEqual/notEqual_ivec2_frag_ref.frag | 46 + .../GL/notEqual/notEqual_ivec2_vert.vert | 37 + .../GL/notEqual/notEqual_ivec2_vert_ref.vert | 47 + .../GL/notEqual/notEqual_ivec3_frag.frag | 36 + .../GL/notEqual/notEqual_ivec3_frag_ref.frag | 48 + .../GL/notEqual/notEqual_ivec3_vert.vert | 37 + .../GL/notEqual/notEqual_ivec3_vert_ref.vert | 49 + .../ogles/GL/notEqual/notEqual_vec2_frag.frag | 40 + .../GL/notEqual/notEqual_vec2_frag_ref.frag | 50 + .../ogles/GL/notEqual/notEqual_vec2_vert.vert | 37 + .../GL/notEqual/notEqual_vec2_vert_ref.vert | 47 + .../ogles/GL/notEqual/notEqual_vec3_frag.frag | 36 + .../GL/notEqual/notEqual_vec3_frag_ref.frag | 48 + .../ogles/GL/notEqual/notEqual_vec3_vert.vert | 37 + .../GL/notEqual/notEqual_vec3_vert_ref.vert | 49 + .../ogles/GL/operators/addsubtract_frag.frag | 42 + .../ogles/GL/operators/addsubtract_vert.vert | 42 + .../ogles/GL/operators/assignments_frag.frag | 78 + .../ogles/GL/operators/assignments_vert.vert | 78 + .../ogles/GL/operators/division_frag.frag | 42 + .../ogles/GL/operators/division_vert.vert | 42 + .../ogles/GL/operators/equality_frag.frag | 43 + .../ogles/GL/operators/equality_vert.vert | 43 + .../ogles/GL/operators/input.run.txt | 5 + .../ogles/GL/operators/logical_frag.frag | 111 + .../ogles/GL/operators/logical_vert.vert | 111 + .../GL/operators/multiplicative_frag.frag | 41 + .../GL/operators/multiplicative_vert.vert | 41 + .../GL/operators/operators_001_to_008.html | 253 + .../GL/operators/operators_009_to_016.html | 253 + .../GL/operators/operators_017_to_024.html | 253 + .../GL/operators/operators_025_to_026.html | 103 + .../GL/operators/postfixdecrement_frag.frag | 40 + .../GL/operators/postfixdecrement_vert.vert | 40 + .../GL/operators/postfixincrement_frag.frag | 40 + .../GL/operators/postfixincrement_vert.vert | 40 + .../GL/operators/prefixdecrement_frag.frag | 40 + .../GL/operators/prefixdecrement_vert.vert | 40 + .../GL/operators/prefixincrement_frag.frag | 40 + .../GL/operators/prefixincrement_vert.vert | 40 + .../ogles/GL/operators/relational_frag.frag | 44 + .../ogles/GL/operators/relational_vert.vert | 45 + .../ogles/GL/operators/selection_frag.frag | 46 + .../ogles/GL/operators/selection_vert.vert | 46 + .../ogles/GL/operators/unary_frag.frag | 42 + .../ogles/GL/operators/unary_vert.vert | 42 + .../conformance/ogles/GL/pow/input.run.txt | 4 + .../ogles/GL/pow/pow_001_to_008.html | 157 + .../ogles/GL/pow/pow_009_to_016.html | 157 + .../ogles/GL/pow/pow_017_to_024.html | 157 + .../GL/pow/pow_float_frag_xconst2_yvary.frag | 35 + .../pow/pow_float_frag_xconst2_yvary_ref.frag | 35 + .../pow/pow_float_frag_xconsthalf_yvary.frag | 35 + .../pow_float_frag_xconsthalf_yvary_ref.frag | 35 + .../GL/pow/pow_float_frag_xvary_yconst2.frag | 35 + .../pow/pow_float_frag_xvary_yconst2_ref.frag | 35 + .../pow/pow_float_frag_xvary_yconsthalf.frag | 35 + .../pow_float_frag_xvary_yconsthalf_ref.frag | 35 + .../GL/pow/pow_float_vert_xconst2_yvary.vert | 36 + .../pow/pow_float_vert_xconst2_yvary_ref.vert | 36 + .../pow/pow_float_vert_xconsthalf_yvary.vert | 36 + .../pow_float_vert_xconsthalf_yvary_ref.vert | 36 + .../GL/pow/pow_float_vert_xvary_yconst2.vert | 36 + .../pow/pow_float_vert_xvary_yconst2_ref.vert | 36 + .../pow/pow_float_vert_xvary_yconsthalf.vert | 36 + .../pow_float_vert_xvary_yconsthalf_ref.vert | 36 + .../GL/pow/pow_vec2_frag_xconst2_yvary.frag | 35 + .../pow/pow_vec2_frag_xconst2_yvary_ref.frag | 35 + .../pow/pow_vec2_frag_xconsthalf_yvary.frag | 35 + .../pow_vec2_frag_xconsthalf_yvary_ref.frag | 35 + .../GL/pow/pow_vec2_frag_xvary_yconst2.frag | 35 + .../pow/pow_vec2_frag_xvary_yconst2_ref.frag | 35 + .../pow/pow_vec2_frag_xvary_yconsthalf.frag | 35 + .../pow_vec2_frag_xvary_yconsthalf_ref.frag | 35 + .../GL/pow/pow_vec2_vert_xconst2_yvary.vert | 36 + .../pow/pow_vec2_vert_xconst2_yvary_ref.vert | 36 + .../pow/pow_vec2_vert_xconsthalf_yvary.vert | 36 + .../pow_vec2_vert_xconsthalf_yvary_ref.vert | 36 + .../GL/pow/pow_vec2_vert_xvary_yconst2.vert | 36 + .../pow/pow_vec2_vert_xvary_yconst2_ref.vert | 36 + .../pow/pow_vec2_vert_xvary_yconsthalf.vert | 36 + .../pow_vec2_vert_xvary_yconsthalf_ref.vert | 36 + .../GL/pow/pow_vec3_frag_xconst2_yvary.frag | 35 + .../pow/pow_vec3_frag_xconst2_yvary_ref.frag | 35 + .../pow/pow_vec3_frag_xconsthalf_yvary.frag | 35 + .../pow_vec3_frag_xconsthalf_yvary_ref.frag | 35 + .../GL/pow/pow_vec3_frag_xvary_yconst2.frag | 35 + .../pow/pow_vec3_frag_xvary_yconst2_ref.frag | 35 + .../pow/pow_vec3_frag_xvary_yconsthalf.frag | 35 + .../pow_vec3_frag_xvary_yconsthalf_ref.frag | 35 + .../GL/pow/pow_vec3_vert_xconst2_yvary.vert | 36 + .../pow/pow_vec3_vert_xconst2_yvary_ref.vert | 36 + .../pow/pow_vec3_vert_xconsthalf_yvary.vert | 36 + .../pow_vec3_vert_xconsthalf_yvary_ref.vert | 36 + .../GL/pow/pow_vec3_vert_xvary_yconst2.vert | 36 + .../pow/pow_vec3_vert_xvary_yconst2_ref.vert | 36 + .../pow/pow_vec3_vert_xvary_yconsthalf.vert | 36 + .../pow_vec3_vert_xvary_yconsthalf_ref.vert | 36 + .../ogles/GL/radians/input.run.txt | 2 + .../ogles/GL/radians/radians_001_to_006.html | 131 + .../GL/radians/radians_float_frag_xvary.frag | 36 + .../radians/radians_float_frag_xvary_ref.frag | 36 + .../GL/radians/radians_float_vert_xvary.vert | 37 + .../radians/radians_float_vert_xvary_ref.vert | 37 + .../GL/radians/radians_vec2_frag_xvary.frag | 36 + .../radians/radians_vec2_frag_xvary_ref.frag | 36 + .../GL/radians/radians_vec2_vert_xvary.vert | 37 + .../radians/radians_vec2_vert_xvary_ref.vert | 37 + .../GL/radians/radians_vec3_frag_xvary.frag | 36 + .../radians/radians_vec3_frag_xvary_ref.frag | 36 + .../GL/radians/radians_vec3_vert_xvary.vert | 37 + .../radians/radians_vec3_vert_xvary_ref.vert | 37 + .../ogles/GL/reflect/input.run.txt | 2 + .../ogles/GL/reflect/reflect_001_to_006.html | 131 + .../reflect_float_frag_ivarynconst.frag | 40 + .../reflect_float_frag_ivarynconst_ref.frag | 40 + .../reflect_float_vert_ivarynconst.vert | 41 + .../reflect_float_vert_ivarynconst_ref.vert | 41 + .../reflect_vec2_frag_ivarynconst.frag | 45 + .../reflect_vec2_frag_ivarynconst_ref.frag | 46 + .../reflect_vec2_vert_ivarynconst.vert | 46 + .../reflect_vec2_vert_ivarynconst_ref.vert | 46 + .../reflect_vec3_frag_ivarynconst.frag | 47 + .../reflect_vec3_frag_ivarynconst_ref.frag | 47 + .../reflect_vec3_vert_ivarynconst.vert | 47 + .../reflect_vec3_vert_ivarynconst_ref.vert | 47 + .../ogles/GL/refract/input.run.txt | 2 + .../ogles/GL/refract/refract_001_to_006.html | 131 + .../refract_float_frag_ivarynconst.frag | 40 + .../refract_float_frag_ivarynconst_ref.frag | 46 + .../refract_float_vert_ivarynconst.vert | 39 + .../refract_float_vert_ivarynconst_ref.vert | 49 + .../refract_vec2_frag_ivarynconst.frag | 45 + .../refract_vec2_frag_ivarynconst_ref.frag | 54 + .../refract_vec2_vert_ivarynconst.vert | 46 + .../refract_vec2_vert_ivarynconst_ref.vert | 54 + .../refract_vec3_frag_ivarynconst.frag | 47 + .../refract_vec3_frag_ivarynconst_ref.frag | 55 + .../refract_vec3_vert_ivarynconst.vert | 47 + .../refract_vec3_vert_ivarynconst_ref.vert | 55 + .../conformance/ogles/GL/sign/input.run.txt | 2 + .../ogles/GL/sign/sign_001_to_006.html | 131 + .../ogles/GL/sign/sign_float_frag_xvary.frag | 35 + .../GL/sign/sign_float_frag_xvary_ref.frag | 38 + .../ogles/GL/sign/sign_float_vert_xvary.vert | 36 + .../GL/sign/sign_float_vert_xvary_ref.vert | 39 + .../ogles/GL/sign/sign_vec2_frag_xvary.frag | 35 + .../GL/sign/sign_vec2_frag_xvary_ref.frag | 40 + .../ogles/GL/sign/sign_vec2_vert_xvary.vert | 36 + .../GL/sign/sign_vec2_vert_xvary_ref.vert | 41 + .../ogles/GL/sign/sign_vec3_frag_xvary.frag | 35 + .../GL/sign/sign_vec3_frag_xvary_ref.frag | 43 + .../ogles/GL/sign/sign_vec3_vert_xvary.vert | 36 + .../GL/sign/sign_vec3_vert_xvary_ref.vert | 44 + .../conformance/ogles/GL/sin/input.run.txt | 2 + .../ogles/GL/sin/sin_001_to_006.html | 131 + .../ogles/GL/sin/sin_float_frag_xvary.frag | 35 + .../GL/sin/sin_float_frag_xvary_ref.frag | 101 + .../ogles/GL/sin/sin_float_vert_xvary.vert | 36 + .../GL/sin/sin_float_vert_xvary_ref.vert | 55 + .../ogles/GL/sin/sin_vec2_frag_xvary.frag | 35 + .../ogles/GL/sin/sin_vec2_frag_xvary_ref.frag | 137 + .../ogles/GL/sin/sin_vec2_vert_xvary.vert | 36 + .../ogles/GL/sin/sin_vec2_vert_xvary_ref.vert | 79 + .../ogles/GL/sin/sin_vec3_frag_xvary.frag | 35 + .../ogles/GL/sin/sin_vec3_frag_xvary_ref.frag | 173 + .../ogles/GL/sin/sin_vec3_vert_xvary.vert | 36 + .../ogles/GL/sin/sin_vec3_vert_xvary_ref.vert | 79 + .../ogles/GL/smoothstep/input.run.txt | 2 + .../GL/smoothstep/smoothstep_001_to_006.html | 131 + ...tep_float_frag_xvary_edgeconstquarter.frag | 36 + ...float_frag_xvary_edgeconstquarter_ref.frag | 38 + ...tep_float_vert_xvary_edgeconstquarter.vert | 37 + ...float_vert_xvary_edgeconstquarter_ref.vert | 39 + ...step_vec2_frag_xvary_edgeconstquarter.frag | 36 + ..._vec2_frag_xvary_edgeconstquarter_ref.frag | 37 + ...step_vec2_vert_xvary_edgeconstquarter.vert | 37 + ..._vec2_vert_xvary_edgeconstquarter_ref.vert | 38 + ...step_vec3_frag_xvary_edgeconstquarter.frag | 36 + ..._vec3_frag_xvary_edgeconstquarter_ref.frag | 38 + ...step_vec3_vert_xvary_edgeconstquarter.vert | 37 + ..._vec3_vert_xvary_edgeconstquarter_ref.vert | 39 + .../conformance/ogles/GL/sqrt/input.run.txt | 2 + .../ogles/GL/sqrt/sqrt_001_to_006.html | 131 + .../ogles/GL/sqrt/sqrt_float_frag_xvary.frag | 35 + .../GL/sqrt/sqrt_float_frag_xvary_ref.frag | 35 + .../ogles/GL/sqrt/sqrt_float_vert_xvary.vert | 36 + .../GL/sqrt/sqrt_float_vert_xvary_ref.vert | 36 + .../ogles/GL/sqrt/sqrt_vec2_frag_xvary.frag | 35 + .../GL/sqrt/sqrt_vec2_frag_xvary_ref.frag | 35 + .../ogles/GL/sqrt/sqrt_vec2_vert_xvary.vert | 36 + .../GL/sqrt/sqrt_vec2_vert_xvary_ref.vert | 36 + .../ogles/GL/sqrt/sqrt_vec3_frag_xvary.frag | 35 + .../GL/sqrt/sqrt_vec3_frag_xvary_ref.frag | 35 + .../ogles/GL/sqrt/sqrt_vec3_vert_xvary.vert | 36 + .../GL/sqrt/sqrt_vec3_vert_xvary_ref.vert | 36 + .../conformance/ogles/GL/step/input.run.txt | 2 + .../ogles/GL/step/step_001_to_006.html | 131 + .../step_float_frag_xvary_edgeconsthalf.frag | 35 + ...ep_float_frag_xvary_edgeconsthalf_ref.frag | 39 + .../step_float_vert_xvary_edgeconsthalf.vert | 36 + ...ep_float_vert_xvary_edgeconsthalf_ref.vert | 40 + .../step_vec2_frag_xvary_edgeconsthalf.frag | 35 + ...tep_vec2_frag_xvary_edgeconsthalf_ref.frag | 53 + .../step_vec2_vert_xvary_edgeconsthalf.vert | 36 + ...tep_vec2_vert_xvary_edgeconsthalf_ref.vert | 54 + .../step_vec3_frag_xvary_edgeconsthalf.frag | 35 + ...tep_vec3_frag_xvary_edgeconsthalf_ref.frag | 61 + .../step_vec3_vert_xvary_edgeconsthalf.vert | 36 + ...tep_vec3_vert_xvary_edgeconsthalf_ref.vert | 62 + .../conformance/ogles/GL/struct/input.run.txt | 8 + .../struct/nestedstructcomb_various_frag.frag | 116 + .../struct/nestedstructcomb_various_vert.vert | 119 + .../ogles/GL/struct/struct_001_to_008.html | 253 + .../ogles/GL/struct/struct_009_to_016.html | 253 + .../ogles/GL/struct/struct_017_to_024.html | 253 + .../ogles/GL/struct/struct_025_to_032.html | 253 + .../ogles/GL/struct/struct_033_to_040.html | 253 + .../ogles/GL/struct/struct_041_to_048.html | 253 + .../ogles/GL/struct/struct_049_to_056.html | 253 + .../ogles/GL/struct/struct_bool_frag.frag | 49 + .../ogles/GL/struct/struct_bool_vert.vert | 52 + .../struct/struct_bvec2bvec3bvec4_frag.frag | 46 + .../struct/struct_bvec2bvec3bvec4_vert.vert | 47 + .../ogles/GL/struct/struct_float_frag.frag | 43 + .../ogles/GL/struct/struct_float_vert.vert | 47 + .../ogles/GL/struct/struct_mat2_frag.frag | 40 + .../ogles/GL/struct/struct_mat2_vert.vert | 40 + .../ogles/GL/struct/struct_mat3_frag.frag | 53 + .../ogles/GL/struct/struct_mat3_vert.vert | 54 + .../ogles/GL/struct/struct_mat4_frag.frag | 63 + .../ogles/GL/struct/struct_mat4_vert.vert | 65 + .../ogles/GL/struct/struct_vec2_frag.frag | 41 + .../ogles/GL/struct/struct_vec2_vert.vert | 45 + .../ogles/GL/struct/struct_vec3_frag.frag | 41 + .../ogles/GL/struct/struct_vec3_vert.vert | 45 + .../ogles/GL/struct/struct_vec4_frag.frag | 41 + .../ogles/GL/struct/struct_vec4_vert.vert | 41 + .../ogles/GL/struct/structcopy_bool_frag.frag | 50 + .../ogles/GL/struct/structcopy_bool_vert.vert | 55 + .../structcopy_bvec2bvec3bvec4_frag.frag | 48 + .../structcopy_bvec2bvec3bvec4_vert.vert | 49 + .../GL/struct/structcopy_float_frag.frag | 45 + .../GL/struct/structcopy_float_vert.vert | 49 + .../ogles/GL/struct/structcopy_mat2_frag.frag | 42 + .../ogles/GL/struct/structcopy_mat2_vert.vert | 42 + .../ogles/GL/struct/structcopy_mat3_frag.frag | 55 + .../ogles/GL/struct/structcopy_mat3_vert.vert | 56 + .../ogles/GL/struct/structcopy_mat4_frag.frag | 68 + .../ogles/GL/struct/structcopy_mat4_vert.vert | 70 + .../ogles/GL/struct/structcopy_vec2_frag.frag | 42 + .../ogles/GL/struct/structcopy_vec2_vert.vert | 47 + .../ogles/GL/struct/structcopy_vec3_frag.frag | 42 + .../ogles/GL/struct/structcopy_vec3_vert.vert | 47 + .../ogles/GL/struct/structcopy_vec4_frag.frag | 43 + .../ogles/GL/struct/structcopy_vec4_vert.vert | 43 + .../ogles/GL/struct/structnest_bool_frag.frag | 55 + .../ogles/GL/struct/structnest_bool_vert.vert | 58 + .../structnest_bvec2bvec3bvec4_frag.frag | 71 + .../structnest_bvec2bvec3bvec4_vert.vert | 74 + .../GL/struct/structnest_float_frag.frag | 49 + .../GL/struct/structnest_float_vert.vert | 51 + .../ogles/GL/struct/structnest_mat2_frag.frag | 51 + .../ogles/GL/struct/structnest_mat2_vert.vert | 51 + .../ogles/GL/struct/structnest_mat3_frag.frag | 79 + .../ogles/GL/struct/structnest_mat3_vert.vert | 74 + .../ogles/GL/struct/structnest_mat4_frag.frag | 100 + .../ogles/GL/struct/structnest_mat4_vert.vert | 89 + .../ogles/GL/struct/structnest_vec2_frag.frag | 50 + .../ogles/GL/struct/structnest_vec2_vert.vert | 51 + .../ogles/GL/struct/structnest_vec3_frag.frag | 49 + .../ogles/GL/struct/structnest_vec3_vert.vert | 51 + .../ogles/GL/struct/structnest_vec4_frag.frag | 49 + .../ogles/GL/struct/structnest_vec4_vert.vert | 51 + .../ogles/GL/swizzlers/input.run.txt | 16 + .../GL/swizzlers/swizzlers_001_to_008.html | 157 + .../GL/swizzlers/swizzlers_009_to_016.html | 157 + .../GL/swizzlers/swizzlers_017_to_024.html | 157 + .../GL/swizzlers/swizzlers_025_to_032.html | 157 + .../GL/swizzlers/swizzlers_033_to_040.html | 157 + .../GL/swizzlers/swizzlers_041_to_048.html | 157 + .../GL/swizzlers/swizzlers_049_to_056.html | 157 + .../GL/swizzlers/swizzlers_057_to_064.html | 157 + .../GL/swizzlers/swizzlers_065_to_072.html | 157 + .../GL/swizzlers/swizzlers_073_to_080.html | 157 + .../GL/swizzlers/swizzlers_081_to_088.html | 157 + .../GL/swizzlers/swizzlers_089_to_096.html | 157 + .../GL/swizzlers/swizzlers_097_to_104.html | 157 + .../GL/swizzlers/swizzlers_105_to_112.html | 157 + .../GL/swizzlers/swizzlers_113_to_120.html | 157 + .../GL/swizzlers/vec3_bgr_1vec3_frag.frag | 37 + .../GL/swizzlers/vec3_bgr_1vec3_vert.vert | 39 + .../vec3_br_g_1vec2_1float_frag.frag | 38 + .../vec3_br_g_1vec2_1float_vert.vert | 40 + .../vec3_gb_r_1vec2_1float_frag.frag | 38 + .../vec3_gb_r_1vec2_1float_vert.vert | 40 + .../GL/swizzlers/vec3_grb_1vec3_frag.frag | 37 + .../GL/swizzlers/vec3_grb_1vec3_vert.vert | 39 + .../vec3_ps_t_1vec2_1float_frag.frag | 38 + .../vec3_ps_t_1vec2_1float_vert.vert | 40 + .../GL/swizzlers/vec3_pts_1vec3_frag.frag | 37 + .../GL/swizzlers/vec3_pts_1vec3_vert.vert | 39 + .../vec3_rb_g_1vec2_1float_frag.frag | 38 + .../vec3_rb_g_1vec2_1float_vert.vert | 40 + .../vec3_rg_b_1vec2_1float_frag.frag | 38 + .../vec3_rg_b_1vec2_1float_vert.vert | 40 + .../GL/swizzlers/vec3_rgb_1vec3_frag.frag | 36 + .../GL/swizzlers/vec3_rgb_1vec3_vert.vert | 38 + .../vec3_sp_t_1vec2_1float_frag.frag | 38 + .../vec3_sp_t_1vec2_1float_vert.vert | 40 + .../vec3_st_p_1vec2_1float_frag.frag | 38 + .../vec3_st_p_1vec2_1float_vert.vert | 40 + .../GL/swizzlers/vec3_stp_1vec3_frag.frag | 36 + .../GL/swizzlers/vec3_stp_1vec3_vert.vert | 38 + .../vec3_tp_s_1vec2_1float_frag.frag | 38 + .../vec3_tp_s_1vec2_1float_vert.vert | 40 + .../GL/swizzlers/vec3_tsp_1vec3_frag.frag | 37 + .../GL/swizzlers/vec3_tsp_1vec3_vert.vert | 39 + .../vec3_xy_z_1vec2_1float_frag.frag | 38 + .../vec3_xy_z_1vec2_1float_vert.vert | 40 + .../GL/swizzlers/vec3_xyz_1vec3_frag.frag | 36 + .../GL/swizzlers/vec3_xyz_1vec3_vert.vert | 38 + .../vec3_xz_y_1vec2_1float_frag.frag | 38 + .../vec3_xz_y_1vec2_1float_vert.vert | 40 + .../GL/swizzlers/vec3_yxz_1vec3_frag.frag | 37 + .../GL/swizzlers/vec3_yxz_1vec3_vert.vert | 39 + .../vec3_yz_x_1vec2_1float_frag.frag | 38 + .../vec3_yz_x_1vec2_1float_vert.vert | 40 + .../vec3_zx_y_1vec2_1float_frag.frag | 38 + .../vec3_zx_y_1vec2_1float_vert.vert | 40 + .../GL/swizzlers/vec3_zyx_1vec3_frag.frag | 37 + .../GL/swizzlers/vec3_zyx_1vec3_vert.vert | 39 + .../GL/swizzlers/vec4_ar_bg_2vec2_frag.frag | 37 + .../GL/swizzlers/vec4_ar_bg_2vec2_vert.vert | 39 + .../vec4_arb_g_1vec3_1float_frag.frag | 37 + .../vec4_arb_g_1vec3_1float_vert.vert | 39 + .../GL/swizzlers/vec4_arbg_1vec4_frag.frag | 36 + .../GL/swizzlers/vec4_arbg_1vec4_vert.vert | 38 + .../vec4_bar_g_1vec3_1float_frag.frag | 37 + .../vec4_bar_g_1vec3_1float_vert.vert | 39 + .../GL/swizzlers/vec4_barg_1vec4_frag.frag | 36 + .../GL/swizzlers/vec4_barg_1vec4_vert.vert | 38 + .../GL/swizzlers/vec4_br_ag_2vec2_frag.frag | 37 + .../GL/swizzlers/vec4_br_ag_2vec2_vert.vert | 39 + .../GL/swizzlers/vec4_gr_ab_2vec2_frag.frag | 37 + .../GL/swizzlers/vec4_gr_ab_2vec2_vert.vert | 39 + .../vec4_gra_b_1vec3_1float_frag.frag | 37 + .../vec4_gra_b_1vec3_1float_vert.vert | 39 + .../GL/swizzlers/vec4_grab_1vec4_frag.frag | 36 + .../GL/swizzlers/vec4_grab_1vec4_vert.vert | 38 + .../vec4_pqs_t_1vec3_1float_frag.frag | 37 + .../vec4_pqs_t_1vec3_1float_vert.vert | 39 + .../GL/swizzlers/vec4_pqst_1vec4_frag.frag | 36 + .../GL/swizzlers/vec4_pqst_1vec4_vert.vert | 38 + .../GL/swizzlers/vec4_ps_qt_2vec2_frag.frag | 37 + .../GL/swizzlers/vec4_ps_qt_2vec2_vert.vert | 39 + .../GL/swizzlers/vec4_qs_pt_2vec2_frag.frag | 37 + .../GL/swizzlers/vec4_qs_pt_2vec2_vert.vert | 39 + .../vec4_qsp_t_1vec3_1float_frag.frag | 37 + .../vec4_qsp_t_1vec3_1float_vert.vert | 39 + .../GL/swizzlers/vec4_qspt_1vec4_frag.frag | 36 + .../GL/swizzlers/vec4_qspt_1vec4_vert.vert | 38 + .../swizzlers/vec4_r_g_b_a_4float_frag.frag | 39 + .../swizzlers/vec4_r_g_b_a_4float_vert.vert | 41 + .../GL/swizzlers/vec4_rg_ba_2vec2_frag.frag | 37 + .../GL/swizzlers/vec4_rg_ba_2vec2_vert.vert | 39 + .../vec4_rgb_a_1vec3_1float_frag.frag | 37 + .../vec4_rgb_a_1vec3_1float_vert.vert | 39 + .../GL/swizzlers/vec4_rgba_1vec4_frag.frag | 35 + .../GL/swizzlers/vec4_rgba_1vec4_vert.vert | 37 + .../swizzlers/vec4_s_t_p_q_4float_frag.frag | 39 + .../swizzlers/vec4_s_t_p_q_4float_vert.vert | 41 + .../GL/swizzlers/vec4_st_pq_2vec2_frag.frag | 37 + .../GL/swizzlers/vec4_st_pq_2vec2_vert.vert | 39 + .../vec4_stp_q_1vec3_1float_frag.frag | 37 + .../vec4_stp_q_1vec3_1float_vert.vert | 39 + .../GL/swizzlers/vec4_stpq_1vec4_frag.frag | 35 + .../GL/swizzlers/vec4_stpq_1vec4_vert.vert | 37 + .../GL/swizzlers/vec4_ts_qp_2vec2_frag.frag | 37 + .../GL/swizzlers/vec4_ts_qp_2vec2_vert.vert | 39 + .../vec4_tsq_p_1vec3_1float_frag.frag | 37 + .../vec4_tsq_p_1vec3_1float_vert.vert | 39 + .../GL/swizzlers/vec4_tsqp_1vec4_frag.frag | 36 + .../GL/swizzlers/vec4_tsqp_1vec4_vert.vert | 38 + .../GL/swizzlers/vec4_wx_zy_2vec2_frag.frag | 37 + .../GL/swizzlers/vec4_wx_zy_2vec2_vert.vert | 39 + .../vec4_wxz_y_1vec3_1float_frag.frag | 37 + .../vec4_wxz_y_1vec3_1float_vert.vert | 39 + .../GL/swizzlers/vec4_wxzy_1vec4_frag.frag | 36 + .../GL/swizzlers/vec4_wxzy_1vec4_vert.vert | 38 + .../swizzlers/vec4_x_y_z_w_4float_frag.frag | 39 + .../swizzlers/vec4_x_y_z_w_4float_vert.vert | 41 + .../GL/swizzlers/vec4_xy_zw_2vec2_frag.frag | 37 + .../GL/swizzlers/vec4_xy_zw_2vec2_vert.vert | 39 + .../vec4_xyz_w_1vec3_1float_frag.frag | 37 + .../vec4_xyz_w_1vec3_1float_vert.vert | 39 + .../GL/swizzlers/vec4_xyzw_1vec4_frag.frag | 35 + .../GL/swizzlers/vec4_xyzw_1vec4_vert.vert | 37 + .../GL/swizzlers/vec4_yx_wz_2vec2_frag.frag | 37 + .../GL/swizzlers/vec4_yx_wz_2vec2_vert.vert | 39 + .../vec4_yxw_z_1vec3_1float_frag.frag | 37 + .../vec4_yxw_z_1vec3_1float_vert.vert | 39 + .../GL/swizzlers/vec4_yxwz_1vec4_frag.frag | 36 + .../GL/swizzlers/vec4_yxwz_1vec4_vert.vert | 38 + .../vec4_zwx_y_1vec3_1float_frag.frag | 37 + .../vec4_zwx_y_1vec3_1float_vert.vert | 39 + .../GL/swizzlers/vec4_zwxy_1vec4_frag.frag | 36 + .../GL/swizzlers/vec4_zwxy_1vec4_vert.vert | 38 + .../GL/swizzlers/vec4_zx_wy_2vec2_frag.frag | 37 + .../GL/swizzlers/vec4_zx_wy_2vec2_vert.vert | 39 + .../conformance/ogles/GL/tan/input.run.txt | 2 + .../ogles/GL/tan/tan_001_to_006.html | 131 + .../ogles/GL/tan/tan_float_frag_xvary.frag | 42 + .../GL/tan/tan_float_frag_xvary_ref.frag | 41 + .../ogles/GL/tan/tan_float_vert_xvary.vert | 43 + .../GL/tan/tan_float_vert_xvary_ref.vert | 42 + .../ogles/GL/tan/tan_vec2_frag_xvary.frag | 47 + .../ogles/GL/tan/tan_vec2_frag_xvary_ref.frag | 47 + .../ogles/GL/tan/tan_vec2_vert_xvary.vert | 48 + .../ogles/GL/tan/tan_vec2_vert_xvary_ref.vert | 48 + .../ogles/GL/tan/tan_vec3_frag_xvary.frag | 52 + .../ogles/GL/tan/tan_vec3_frag_xvary_ref.frag | 52 + .../ogles/GL/tan/tan_vec3_vert_xvary.vert | 53 + .../ogles/GL/tan/tan_vec3_vert_xvary_ref.vert | 53 + .../ogles/GL/vec/bvec4_2int_2float_frag.frag | 39 + .../ogles/GL/vec/bvec4_2int_2float_vert.vert | 40 + .../conformance/ogles/GL/vec/input.run.txt | 4 + .../ogles/GL/vec/ivec3_3int_frag.frag | 39 + .../ogles/GL/vec/ivec3_3int_vert.vert | 40 + .../ogles/GL/vec/vec2_2float_frag.frag | 39 + .../ogles/GL/vec/vec2_2float_vert.vert | 40 + .../ogles/GL/vec/vec2_vec3_frag.frag | 40 + .../ogles/GL/vec/vec2_vec3_vert.vert | 40 + .../ogles/GL/vec/vec3_float_vec2_frag.frag | 40 + .../ogles/GL/vec/vec3_float_vec2_vert.vert | 40 + .../ogles/GL/vec/vec3_vec2_float_frag.frag | 40 + .../ogles/GL/vec/vec3_vec2_float_vert.vert | 40 + .../ogles/GL/vec/vec3_vec4_frag.frag | 40 + .../ogles/GL/vec/vec3_vec4_vert.vert | 40 + .../ogles/GL/vec/vec4_ivec4_frag.frag | 40 + .../ogles/GL/vec/vec4_ivec4_vert.vert | 41 + .../ogles/GL/vec/vec4_vec3_float_frag.frag | 40 + .../ogles/GL/vec/vec4_vec3_float_vert.vert | 40 + .../ogles/GL/vec/vec_001_to_008.html | 253 + .../ogles/GL/vec/vec_009_to_016.html | 253 + .../ogles/GL/vec/vec_017_to_018.html | 103 + .../conformance/ogles/GL/vec3/input.run.txt | 2 + .../ogles/GL/vec3/vec3_001_to_008.html | 335 + .../ogles/GL/vec3/vec3array_frag.frag | 49 + .../ogles/GL/vec3/vec3array_vert.vert | 47 + .../ogles/GL/vec3/vec3arraydirect_frag.frag | 41 + .../ogles/GL/vec3/vec3arraydirect_vert.vert | 45 + .../ogles/GL/vec3/vec3arrayindirect_frag.frag | 55 + .../ogles/GL/vec3/vec3arrayindirect_vert.vert | 51 + .../ogles/GL/vec3/vec3single_frag.frag | 41 + .../ogles/GL/vec3/vec3single_vert.vert | 45 + .../compressed_paletted_texture.frag | 36 + .../compressed_paletted_texture.vert | 38 + .../GL2ExtensionTests/dFdx/dFdx_frag.frag | 68 + .../GL2ExtensionTests/dFdx/dFdx_frag.vert | 36 + .../GL2ExtensionTests/dFdx/dFdx_frag_ref.frag | 61 + .../GL2ExtensionTests/dFdx/dFdx_frag_ref.vert | 36 + .../GL2ExtensionTests/dFdy/dFdy_frag.frag | 68 + .../GL2ExtensionTests/dFdy/dFdy_frag.vert | 37 + .../GL2ExtensionTests/dFdy/dFdy_frag_ref.frag | 64 + .../GL2ExtensionTests/dFdy/dFdy_frag_ref.vert | 37 + .../default_shaders/default.frag | 34 + .../default_shaders/default.vert | 37 + .../default_shaders/default_textured.frag | 36 + .../default_shaders/default_textured.vert | 39 + .../GL2ExtensionTests/fwidth/fwidth_frag.frag | 65 + .../GL2ExtensionTests/fwidth/fwidth_frag.vert | 36 + .../fwidth/fwidth_frag_dx.frag | 65 + .../fwidth/fwidth_frag_dx.vert | 36 + .../fwidth/fwidth_frag_dy.frag | 65 + .../fwidth/fwidth_frag_dy.vert | 36 + .../fwidth/fwidth_frag_ref.frag | 64 + .../fwidth/fwidth_frag_ref.vert | 36 + .../fwidth/fwidth_frag_ref_dx.frag | 63 + .../fwidth/fwidth_frag_ref_dx.vert | 36 + .../fwidth/fwidth_frag_ref_dy.frag | 64 + .../fwidth/fwidth_frag_ref_dy.vert | 36 + .../buffer_objects/buffer_objects.frag | 36 + .../buffer_objects/buffer_objects.vert | 161 + .../buffer_objects_multitexturing.frag | 39 + .../buffer_objects_multitexturing.vert | 42 + .../buffer_objects_pointSize.frag | 34 + .../buffer_objects_pointSize.vert | 37 + .../copy_texture/copy_texture.frag | 39 + .../default_shaders/default.frag | 34 + .../default_shaders/default.vert | 36 + .../default_shaders/default_textured.frag | 36 + .../default_shaders/default_textured.vert | 39 + .../lighting_diffuse/lighting_diffuse.frag | 34 + .../lighting_diffuse/lighting_diffuse.vert | 149 + .../lighting_diffuse_ref.frag | 34 + .../lighting_diffuse_ref.vert | 35 + .../point_rasterization.frag | 34 + .../point_rasterization.vert | 37 + .../point_sprites/point_sprites.frag | 31 + .../point_sprites/point_sprites.vert | 34 + .../user_clip_planes/user_clip_planes.frag | 39 + .../user_clip_planes/user_clip_planes.vert | 44 + .../attach_shader/successfulcompile_frag.frag | 63 + .../attach_shader/successfulcompile_vert.vert | 43 + .../unsuccessfulcompile_frag.frag | 83 + .../unsuccessfulcompile_vert.vert | 60 + .../bind_attribute_location/brick.frag | 64 + .../bind_attribute_location/brick.vert | 60 + .../ogles/GL2Tests/compile_shader/brick.vert | 60 + .../GL2Tests/compile_shader/texture.frag | 52 + .../ogles/GL2Tests/compile_shader/wood.frag | 83 + .../ogles/GL2Tests/compile_shader/wood.vert | 43 + .../delete_object/successfulcompile_frag.frag | 63 + .../delete_object/successfulcompile_vert.vert | 43 + .../detach_shader/successfulcompile_frag.frag | 63 + .../detach_shader/successfulcompile_vert.vert | 43 + .../framebuffer_objects/fboShader0.frag | 46 + .../framebuffer_objects/fboShader0.vert | 40 + .../GL2Tests/get_active_attribute/brick.frag | 63 + .../get_active_attribute/brick_mat2.vert | 62 + .../get_active_attribute/brick_mat3.vert | 62 + .../get_active_attribute/brick_mat4.vert | 62 + .../get_active_attribute/brick_vec.vert | 65 + .../GL2Tests/get_active_uniform/brick.frag | 62 + .../GL2Tests/get_active_uniform/brick.vert | 88 + .../get_attribute_location/brick.frag | 34 + .../get_attribute_location/brick.vert | 39 + .../get_handle/successfulcompile_frag.frag | 63 + .../get_handle/successfulcompile_vert.vert | 43 + .../GL2Tests/get_uniform_location/brick.frag | 63 + .../GL2Tests/get_uniform_location/brick.vert | 60 + .../glGetProgramInfoLog_2.0/simple.frag | 35 + .../glGetProgramInfoLog_2.0/simple.vert | 35 + .../GL2Tests/glGetProgramiv_2.0/brick.frag | 63 + .../GL2Tests/glGetProgramiv_2.0/brick.vert | 60 + .../glGetShaderInfoLog_2.0/simple.frag | 35 + .../glGetShaderInfoLog_2.0/simple.vert | 35 + .../GL2Tests/glGetUniform/bvec_tests.frag | 41 + .../GL2Tests/glGetUniform/bvec_tests.vert | 39 + .../GL2Tests/glGetUniform/ivec_tests.frag | 39 + .../GL2Tests/glGetUniform/ivec_tests.vert | 38 + .../GL2Tests/glGetUniform/mat_tests.frag | 42 + .../GL2Tests/glGetUniform/mat_tests.vert | 42 + .../GL2Tests/glGetUniform/vec_tests.frag | 39 + .../GL2Tests/glGetUniform/vec_tests.vert | 38 + .../GL2Tests/glGetVertexAttrib/mat_tests.vert | 41 + .../glGetVertexAttrib/mat_tests2.vert | 41 + .../GL2Tests/glGetVertexAttrib/vec_tests.vert | 38 + .../ogles/GL2Tests/glUniform/1b_frag.frag | 34 + .../ogles/GL2Tests/glUniform/1b_vert.frag | 34 + .../ogles/GL2Tests/glUniform/1b_vert.vert | 35 + .../ogles/GL2Tests/glUniform/1f_frag.frag | 34 + .../ogles/GL2Tests/glUniform/1f_vert.frag | 33 + .../ogles/GL2Tests/glUniform/1f_vert.vert | 35 + .../ogles/GL2Tests/glUniform/1i_frag.frag | 34 + .../ogles/GL2Tests/glUniform/1i_vert.frag | 33 + .../ogles/GL2Tests/glUniform/1i_vert.vert | 35 + .../ogles/GL2Tests/glUniform/21f_frag.frag | 34 + .../ogles/GL2Tests/glUniform/21i_frag.frag | 36 + .../ogles/GL2Tests/glUniform/22f_frag.frag | 34 + .../ogles/GL2Tests/glUniform/22i_frag.frag | 39 + .../ogles/GL2Tests/glUniform/23f_frag.frag | 36 + .../ogles/GL2Tests/glUniform/23i_frag.frag | 37 + .../ogles/GL2Tests/glUniform/24f_frag.frag | 36 + .../ogles/GL2Tests/glUniform/24i_frag.frag | 37 + .../ogles/GL2Tests/glUniform/2b_frag.frag | 34 + .../ogles/GL2Tests/glUniform/2b_vert.frag | 34 + .../ogles/GL2Tests/glUniform/2b_vert.vert | 35 + .../ogles/GL2Tests/glUniform/2f_frag.frag | 34 + .../ogles/GL2Tests/glUniform/2f_vert.frag | 34 + .../ogles/GL2Tests/glUniform/2f_vert.vert | 35 + .../ogles/GL2Tests/glUniform/2i_frag.frag | 34 + .../ogles/GL2Tests/glUniform/2i_vert.frag | 34 + .../ogles/GL2Tests/glUniform/2i_vert.vert | 35 + .../ogles/GL2Tests/glUniform/2m_frag.frag | 34 + .../ogles/GL2Tests/glUniform/3b_frag.frag | 34 + .../ogles/GL2Tests/glUniform/3b_vert.frag | 34 + .../ogles/GL2Tests/glUniform/3b_vert.vert | 35 + .../ogles/GL2Tests/glUniform/3f_frag.frag | 34 + .../ogles/GL2Tests/glUniform/3f_vert.frag | 34 + .../ogles/GL2Tests/glUniform/3f_vert.vert | 35 + .../ogles/GL2Tests/glUniform/3i_frag.frag | 34 + .../ogles/GL2Tests/glUniform/3i_vert.frag | 34 + .../ogles/GL2Tests/glUniform/3i_vert.vert | 35 + .../ogles/GL2Tests/glUniform/3m_frag.frag | 37 + .../glUniform/4b_firstthree_frag.frag | 34 + .../glUniform/4b_firstthree_vert.frag | 34 + .../GL2Tests/glUniform/4b_lastthree_frag.frag | 34 + .../GL2Tests/glUniform/4b_lastthree_vert.frag | 34 + .../ogles/GL2Tests/glUniform/4b_vert.vert | 35 + .../ogles/GL2Tests/glUniform/4f_frag.frag | 34 + .../ogles/GL2Tests/glUniform/4f_vert.frag | 34 + .../ogles/GL2Tests/glUniform/4f_vert.vert | 35 + .../ogles/GL2Tests/glUniform/4i_frag.frag | 34 + .../ogles/GL2Tests/glUniform/4i_vert.frag | 34 + .../ogles/GL2Tests/glUniform/4i_vert.vert | 35 + .../ogles/GL2Tests/glUniform/4m_frag.frag | 37 + .../ogles/GL2Tests/glUniform/default.vert | 33 + .../ogles/GL2Tests/glUniform/matrix2VSU.frag | 34 + .../ogles/GL2Tests/glUniform/matrix2VSU.vert | 39 + .../GL2Tests/glUniform/matrix2arrayVSU.frag | 34 + .../GL2Tests/glUniform/matrix2arrayVSU.vert | 38 + .../ogles/GL2Tests/glUniform/matrixVSU.frag | 34 + .../ogles/GL2Tests/glUniform/matrixVSU.vert | 38 + .../link_program/successfulcompile_frag.frag | 63 + .../link_program/successfulcompile_vert.vert | 43 + .../unsuccessfulcompile_frag.frag | 83 + .../unsuccessfulcompile_vert.vert | 60 + .../precision_specifiers.frag | 31 + .../precision_specifiers.vert | 42 + .../ogles/GL2Tests/relink_program/simple.frag | 34 + .../ogles/GL2Tests/relink_program/simple.vert | 37 + .../shader_source/successfulcompile_frag.frag | 63 + .../shader_source/successfulcompile_vert.vert | 43 + .../unsuccessfulcompile_frag.frag | 83 + .../unsuccessfulcompile_vert.vert | 61 + .../GL2Tests/three_uniforms/4f_frag.frag | 39 + .../use_program/successfulcompile_frag.frag | 63 + .../use_program/successfulcompile_vert.vert | 43 + .../use_program/unsuccessfulcompile_frag.frag | 83 + .../use_program/unsuccessfulcompile_vert.vert | 60 + .../successfulcompile_frag.frag | 63 + .../successfulcompile_vert.vert | 43 + .../unsuccessfulcompile_frag.frag | 83 + .../unsuccessfulcompile_vert.vert | 60 + .../vertex_program_point_size/point_size.vert | 36 + .../conformance/ogles/README.md | 20 + .../conformance/ogles/mustpass.run.txt | 64 + .../conformance/ogles/ogles-utils.js | 808 + .../conformance/ogles/process-ogles2-tests.py | 586 + .../conformance/programs/00_test_list.txt | 11 + .../conformance/programs/get-active-test.html | 142 + ...-bind-attrib-location-long-names-test.html | 176 + .../gl-bind-attrib-location-test.html | 162 + .../programs/gl-get-active-attribute.html | 108 + .../programs/gl-get-active-uniform.html | 159 + .../programs/gl-getshadersource.html | 62 + .../conformance/programs/gl-shader-test.html | 117 + .../conformance/programs/invalid-UTF-16.html | 71 + .../conformance/programs/program-infolog.html | 85 + .../conformance/programs/program-test.html | 427 + ...crash-with-discard-in-fragment-shader.html | 100 + .../conformance/reading/00_test_list.txt | 3 + .../reading/read-pixels-pack-alignment.html | 265 + .../conformance/reading/read-pixels-test.html | 320 + .../renderbuffers/00_test_list.txt | 6 + .../renderbuffers/feedback-loop.html | 127 + .../framebuffer-object-attachment.html | 665 + .../framebuffer-state-restoration.html | 130 + .../renderbuffers/framebuffer-test.html | 199 + .../renderbuffer-initialization.html | 122 + .../conformance/rendering/00_test_list.txt | 28 + .../rendering/clipping-wide-points.html | 49 + .../conformance/rendering/culling.html | 150 + .../rendering/default-texture-draw-bug.html | 92 + .../rendering/draw-arrays-out-of-bounds.html | 56 + .../draw-elements-out-of-bounds.html | 56 + .../draw-with-changing-start-vertex-bug.html | 135 + .../rendering/framebuffer-switch.html | 113 + .../rendering/framebuffer-texture-switch.html | 109 + .../conformance/rendering/gl-clear.html | 90 + .../conformance/rendering/gl-drawarrays.html | 105 + .../rendering/gl-drawelements.html | 120 + .../gl-scissor-canvas-dimensions.html | 101 + .../rendering/gl-scissor-fbo-test.html | 133 + .../rendering/gl-scissor-test.html | 118 + .../rendering/gl-viewport-test.html | 135 + .../rendering/line-loop-tri-fan.html | 252 + .../rendering/many-draw-calls.html | 161 + .../rendering/more-than-65536-indices.html | 146 + .../rendering/multisample-corruption.html | 62 + .../rendering/negative-one-index.html | 121 + .../out-of-bounds-index-buffers.html | 158 + .../rendering/point-no-attributes.html | 78 + .../conformance/rendering/point-size.html | 152 + .../point-specific-shader-variables.html | 187 + ...with-gl-pointcoord-in-fragment-shader.html | 142 + .../conformance/rendering/polygon-offset.html | 194 + .../conformance/rendering/simple.html | 100 + .../conformance/rendering/triangle.html | 96 + .../conformance/state/00_test_list.txt | 8 + .../conformance/state/diffs.txt | 69 + .../state/gl-enable-enum-test.html | 163 + .../conformance/state/gl-enum-tests.html | 52 + .../conformance/state/gl-get-calls.html | 221 + .../conformance/state/gl-geterror.html | 101 + .../conformance/state/gl-getstring.html | 83 + .../conformance/state/gl-initial-state.html | 81 + .../state/gl-object-get-calls.html | 49 + .../state-uneffected-after-compositing.html | 109 + .../conformance/textures/00_test_list.txt | 14 + .../textures/canvas/00_test_list.txt | 5 + .../canvas/tex-2d-rgb-rgb-unsigned_byte.html | 59 + .../tex-2d-rgb-rgb-unsigned_short_5_6_5.html | 59 + .../tex-2d-rgba-rgba-unsigned_byte.html | 59 + ...x-2d-rgba-rgba-unsigned_short_4_4_4_4.html | 59 + ...x-2d-rgba-rgba-unsigned_short_5_5_5_1.html | 59 + .../canvas_sub_rectangle/00_test_list.txt | 5 + .../tex-2d-rgb-rgb-unsigned_byte.html | 59 + .../tex-2d-rgb-rgb-unsigned_short_5_6_5.html | 59 + .../tex-2d-rgba-rgba-unsigned_byte.html | 59 + ...x-2d-rgba-rgba-unsigned_short_4_4_4_4.html | 59 + ...x-2d-rgba-rgba-unsigned_short_5_5_5_1.html | 59 + .../textures/image/00_test_list.txt | 5 + .../image/tex-2d-rgb-rgb-unsigned_byte.html | 59 + .../tex-2d-rgb-rgb-unsigned_short_5_6_5.html | 59 + .../image/tex-2d-rgba-rgba-unsigned_byte.html | 59 + ...x-2d-rgba-rgba-unsigned_short_4_4_4_4.html | 59 + ...x-2d-rgba-rgba-unsigned_short_5_5_5_1.html | 59 + .../image_bitmap_from_blob/00_test_list.txt | 5 + .../tex-2d-rgb-rgb-unsigned_byte.html | 60 + .../tex-2d-rgb-rgb-unsigned_short_5_6_5.html | 60 + .../tex-2d-rgba-rgba-unsigned_byte.html | 60 + ...x-2d-rgba-rgba-unsigned_short_4_4_4_4.html | 60 + ...x-2d-rgba-rgba-unsigned_short_5_5_5_1.html | 60 + .../image_bitmap_from_canvas/00_test_list.txt | 5 + .../tex-2d-rgb-rgb-unsigned_byte.html | 60 + .../tex-2d-rgb-rgb-unsigned_short_5_6_5.html | 60 + .../tex-2d-rgba-rgba-unsigned_byte.html | 60 + ...x-2d-rgba-rgba-unsigned_short_4_4_4_4.html | 60 + ...x-2d-rgba-rgba-unsigned_short_5_5_5_1.html | 60 + .../image_bitmap_from_image/00_test_list.txt | 5 + .../tex-2d-rgb-rgb-unsigned_byte.html | 60 + .../tex-2d-rgb-rgb-unsigned_short_5_6_5.html | 60 + .../tex-2d-rgba-rgba-unsigned_byte.html | 60 + ...x-2d-rgba-rgba-unsigned_short_4_4_4_4.html | 60 + ...x-2d-rgba-rgba-unsigned_short_5_5_5_1.html | 60 + .../00_test_list.txt | 5 + .../tex-2d-rgb-rgb-unsigned_byte.html | 60 + .../tex-2d-rgb-rgb-unsigned_short_5_6_5.html | 60 + .../tex-2d-rgba-rgba-unsigned_byte.html | 60 + ...x-2d-rgba-rgba-unsigned_short_4_4_4_4.html | 60 + ...x-2d-rgba-rgba-unsigned_short_5_5_5_1.html | 60 + .../00_test_list.txt | 5 + .../tex-2d-rgb-rgb-unsigned_byte.html | 60 + .../tex-2d-rgb-rgb-unsigned_short_5_6_5.html | 60 + .../tex-2d-rgba-rgba-unsigned_byte.html | 60 + ...x-2d-rgba-rgba-unsigned_short_4_4_4_4.html | 60 + ...x-2d-rgba-rgba-unsigned_short_5_5_5_1.html | 60 + .../image_bitmap_from_video/00_test_list.txt | 5 + .../tex-2d-rgb-rgb-unsigned_byte.html | 60 + .../tex-2d-rgb-rgb-unsigned_short_5_6_5.html | 60 + .../tex-2d-rgba-rgba-unsigned_byte.html | 60 + ...x-2d-rgba-rgba-unsigned_short_4_4_4_4.html | 60 + ...x-2d-rgba-rgba-unsigned_short_5_5_5_1.html | 60 + .../textures/image_data/00_test_list.txt | 5 + .../tex-2d-rgb-rgb-unsigned_byte.html | 60 + .../tex-2d-rgb-rgb-unsigned_short_5_6_5.html | 60 + .../tex-2d-rgba-rgba-unsigned_byte.html | 60 + ...x-2d-rgba-rgba-unsigned_short_4_4_4_4.html | 60 + ...x-2d-rgba-rgba-unsigned_short_5_5_5_1.html | 60 + .../textures/misc/00_test_list.txt | 42 + .../textures/misc/compressed-tex-image.html | 84 + .../misc/copy-tex-image-2d-formats.html | 196 + .../misc/copy-tex-image-and-sub-image-2d.html | 160 + ...copy-tex-sub-image-2d-partial-texture.html | 88 + .../textures/misc/cube-incomplete-fbo.html | 95 + .../textures/misc/default-texture.html | 65 + .../textures/misc/gl-get-tex-parameter.html | 50 + .../textures/misc/gl-pixelstorei.html | 119 + .../textures/misc/gl-teximage.html | 429 + .../conformance/textures/misc/mipmap-fbo.html | 132 + .../misc/origin-clean-conformance.html | 151 + ...d-sub-image-2d-with-array-buffer-view.html | 305 + .../tex-image-and-uniform-binding-bugs.html | 65 + .../misc/tex-image-canvas-corruption.html | 74 + .../textures/misc/tex-image-webgl.html | 101 + .../misc/tex-image-with-format-and-type.html | 745 + .../misc/tex-image-with-invalid-data.html | 181 + .../textures/misc/tex-input-validation.html | 47 + .../misc/tex-sub-image-2d-bad-args.html | 156 + .../textures/misc/tex-sub-image-2d.html | 124 + .../textures/misc/texparameter-test.html | 152 + .../textures/misc/texture-active-bind-2.html | 233 + .../textures/misc/texture-active-bind.html | 142 + .../misc/texture-attachment-formats.html | 199 + .../textures/misc/texture-clear.html | 66 + .../textures/misc/texture-complete.html | 86 + .../misc/texture-copying-feedback-loops.html | 105 + .../misc/texture-cube-as-fbo-attachment.html | 88 + .../misc/texture-draw-with-2d-and-cube.html | 126 + .../textures/misc/texture-fakeblack.html | 117 + .../textures/misc/texture-formats-test.html | 289 + .../textures/misc/texture-hd-dpi.html | 140 + .../textures/misc/texture-mips.html | 320 + .../textures/misc/texture-npot-video.html | 163 + .../textures/misc/texture-npot.html | 328 + .../textures/misc/texture-size-cube-maps.html | 354 + .../textures/misc/texture-size-limit.html | 173 + .../textures/misc/texture-size.html | 236 + .../misc/texture-sub-image-cube-maps.html | 339 + ...exture-transparent-pixels-initialized.html | 108 + .../misc/texture-upload-cube-maps.html | 75 + .../textures/misc/texture-upload-size.html | 171 + .../textures/svg_image/00_test_list.txt | 5 + .../tex-2d-rgb-rgb-unsigned_byte.html | 59 + .../tex-2d-rgb-rgb-unsigned_short_5_6_5.html | 59 + .../tex-2d-rgba-rgba-unsigned_byte.html | 59 + ...x-2d-rgba-rgba-unsigned_short_4_4_4_4.html | 59 + ...x-2d-rgba-rgba-unsigned_short_5_5_5_1.html | 59 + .../textures/video/00_test_list.txt | 5 + .../video/tex-2d-rgb-rgb-unsigned_byte.html | 59 + .../tex-2d-rgb-rgb-unsigned_short_5_6_5.html | 59 + .../video/tex-2d-rgba-rgba-unsigned_byte.html | 59 + ...x-2d-rgba-rgba-unsigned_short_4_4_4_4.html | 59 + ...x-2d-rgba-rgba-unsigned_short_5_5_5_1.html | 59 + .../textures/webgl_canvas/00_test_list.txt | 5 + .../tex-2d-rgb-rgb-unsigned_byte.html | 59 + .../tex-2d-rgb-rgb-unsigned_short_5_6_5.html | 59 + .../tex-2d-rgba-rgba-unsigned_byte.html | 59 + ...x-2d-rgba-rgba-unsigned_short_4_4_4_4.html | 59 + ...x-2d-rgba-rgba-unsigned_short_5_5_5_1.html | 59 + .../conformance/typedarrays/00_test_list.txt | 7 + .../typedarrays/array-buffer-crash.html | 63 + .../typedarrays/array-buffer-view-crash.html | 62 + .../typedarrays/array-large-array-tests.html | 104 + .../typedarrays/array-unit-tests.html | 1126 ++ .../typedarrays/data-view-crash.html | 56 + .../typedarrays/data-view-test.html | 444 + .../typedarrays/typed-arrays-in-workers.html | 280 + .../conformance/uniforms/00_test_list.txt | 12 + .../uniforms/gl-uniform-arrays.html | 512 + .../conformance/uniforms/gl-uniform-bool.html | 82 + .../uniforms/gl-uniformmatrix4fv.html | 112 + .../uniforms/gl-unknown-uniform.html | 90 + .../uniforms/null-uniform-location.html | 104 + .../out-of-bounds-uniform-array-access.html | 191 + .../uniforms/uniform-default-values.html | 362 + .../uniforms/uniform-location.html | 117 + .../uniforms/uniform-samplers-test.html | 134 + .../uniforms/uniform-values-per-program.html | 202 + .../conformance2/00_test_list.txt | 17 + .../conformance2/attribs/00_test_list.txt | 4 + .../attribs/gl-vertex-attrib-i-render.html | 131 + .../attribs/gl-vertex-attrib.html | 51 + .../gl-vertexattribipointer-offsets.html | 177 + .../attribs/gl-vertexattribipointer.html | 149 + .../conformance2/buffers/00_test_list.txt | 9 + .../bound-buffer-size-change-test.html | 142 + .../buffers/buffer-copying-contents.html | 199 + .../buffers/buffer-copying-restrictions.html | 125 + ...r-data-and-buffer-sub-data-sub-source.html | 206 + .../buffers/buffer-overflow-test.html | 74 + .../buffers/buffer-type-restrictions.html | 143 + .../buffers/get-buffer-sub-data.html | 178 + .../buffers/one-large-uniform-buffer.html | 154 + .../conformance2/buffers/uniform-buffers.html | 430 + .../conformance2/context/00_test_list.txt | 4 + .../context/constants-and-properties-2.html | 857 + ...ibutes-depth-stencil-antialias-obeyed.html | 112 + .../context/context-type-test-2.html | 74 + .../conformance2/context/methods-2.html | 331 + .../conformance2/extensions/00_test_list.txt | 4 + .../extensions/ext-color-buffer-float.html | 421 + .../ext-disjoint-timer-query-webgl2.html | 337 + .../promoted-extensions-in-shaders.html | 138 + .../extensions/promoted-extensions.html | 88 + .../conformance2/glsl3/00_test_list.txt | 39 + .../glsl3/array-as-return-value.html | 173 + .../glsl3/array-assign-constructor.html | 131 + .../conformance2/glsl3/array-assign.html | 116 + .../glsl3/array-complex-indexing.html | 110 + .../glsl3/array-element-increment.html | 154 + .../conformance2/glsl3/array-equality.html | 108 + .../glsl3/array-in-complex-expression.html | 172 + .../glsl3/attrib-location-length-limits.html | 112 + .../bool-type-cast-bug-uint-ivec-uvec.html | 391 + .../compare-structs-containing-arrays.html | 114 + .../compound-assignment-type-combination.html | 49 + .../conformance2/glsl3/const-array-init.html | 121 + .../glsl3/forbidden-operators.html | 147 + .../conformance2/glsl3/frag-depth.html | 180 + .../glsl3/invalid-default-precision.html | 94 + .../conformance2/glsl3/invalid-invariant.html | 111 + .../glsl3/loops-with-side-effects.html | 234 + .../glsl3/misplaced-version-directive.html | 134 + .../glsl3/no-attribute-vertex-shader.html | 86 + .../glsl3/sampler-no-precision.html | 111 + ...equence-operator-returns-non-constant.html | 82 + .../conformance2/glsl3/shader-linking.html | 107 + .../shader-with-1024-character-define.html | 59 + ...r-with-1024-character-identifier.frag.html | 128 + .../shader-with-1025-character-define.html | 59 + ...r-with-1025-character-identifier.frag.html | 59 + .../glsl3/shader-with-invalid-characters.html | 60 + ...hader-with-mis-matching-uniform-block.html | 82 + .../short-circuiting-in-loop-condition.html | 195 + .../glsl3/texture-offset-out-of-range.html | 129 + ...ure-offset-uniform-texture-coordinate.html | 193 + .../glsl3/tricky-loop-conditions.html | 350 + .../unary-minus-operator-in-dynamic-loop.html | 271 + .../glsl3/uniform-block-layout-match.html | 80 + .../glsl3/uniform-block-layouts.html | 86 + .../glsl3/uniform-location-length-limits.html | 112 + .../conformance2/glsl3/valid-invariant.html | 118 + ...vector-dynamic-indexing-nv-driver-bug.html | 90 + .../glsl3/vector-dynamic-indexing.html | 380 + .../conformance2/misc/00_test_list.txt | 6 + .../conformance2/misc/expando-loss-2.html | 307 + ...etextension-while-pbo-bound-stability.html | 80 + .../conformance2/misc/instanceof-test.html | 67 + .../misc/object-deletion-behaviour-2.html | 138 + .../misc/uninitialized-test-2.html | 606 + .../conformance2/misc/views-with-offsets.html | 343 + .../conformance2/programs/00_test_list.txt | 1 + .../programs/gl-get-frag-data-location.html | 123 + .../conformance2/query/00_test_list.txt | 2 + .../conformance2/query/occlusion-query.html | 160 + .../conformance2/query/query.html | 180 + .../conformance2/reading/00_test_list.txt | 5 + .../reading/format-r11f-g11f-b10f.html | 289 + .../reading/read-pixels-from-fbo-test.html | 665 + .../read-pixels-from-rgb8-into-pbo-bug.html | 108 + .../read-pixels-into-pixel-pack-buffer.html | 175 + .../reading/read-pixels-pack-parameters.html | 375 + .../renderbuffers/00_test_list.txt | 7 + .../framebuffer-object-attachment.html | 429 + .../renderbuffers/framebuffer-test.html | 311 + .../framebuffer-texture-layer.html | 167 + .../renderbuffers/invalidate-framebuffer.html | 175 + .../multisample-with-full-sample-counts.html | 121 + ...tisampled-renderbuffer-initialization.html | 152 + .../renderbuffers/readbuffer.html | 197 + .../conformance2/rendering/00_test_list.txt | 25 + .../rendering/attrib-type-match.html | 584 + .../blitframebuffer-filter-outofbounds.html | 205 + .../blitframebuffer-filter-srgb.html | 185 + ...itframebuffer-multisampled-readbuffer.html | 136 + .../blitframebuffer-outside-readbuffer.html | 291 + .../blitframebuffer-scissor-enabled.html | 184 + .../blitframebuffer-size-overflow.html | 109 + ...amebuffer-srgb-and-linear-drawbuffers.html | 231 + .../blitframebuffer-stencil-only.html | 194 + .../rendering/blitframebuffer-test.html | 344 + .../canvas-resizing-with-pbo-bound.html | 132 + .../clear-func-buffer-type-match.html | 168 + .../rendering/clear-srgb-color-buffer.html | 111 + .../rendering/clipping-wide-points.html | 49 + .../conformance2/rendering/draw-buffers.html | 583 + .../rendering/element-index-uint.html | 428 + .../framebuffer-completeness-unaffected.html | 115 + .../rendering/framebuffer-unsupported.html | 157 + ...color-type-mismatch-color-buffer-type.html | 192 + .../rendering/instanced-arrays.html | 234 + .../rendering/instanced-rendering-bug.html | 277 + ...of-bounds-index-buffers-after-copying.html | 209 + .../rendering-sampling-feedback-loop.html | 150 + .../rendering/rgb-format-support.html | 134 + .../rendering/uniform-block-buffer-size.html | 253 + .../conformance2/samplers/00_test_list.txt | 2 + .../samplers/sampler-drawing-test.html | 147 + .../conformance2/samplers/samplers.html | 253 + .../conformance2/state/00_test_list.txt | 4 + .../conformance2/state/gl-enum-tests.html | 52 + .../conformance2/state/gl-get-calls.html | 200 + .../conformance2/state/gl-getstring.html | 83 + .../state/gl-object-get-calls.html | 49 + .../conformance2/sync/00_test_list.txt | 1 + .../sync/sync-webgl-specific.html | 89 + .../conformance2/textures/00_test_list.txt | 14 + .../textures/canvas/00_test_list.txt | 66 + .../tex-2d-r11f_g11f_b10f-rgb-float.html | 59 + .../tex-2d-r11f_g11f_b10f-rgb-half_float.html | 59 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 59 + .../canvas/tex-2d-r16f-red-float.html | 59 + .../canvas/tex-2d-r16f-red-half_float.html | 59 + .../canvas/tex-2d-r32f-red-float.html | 59 + .../canvas/tex-2d-r8-red-unsigned_byte.html | 59 + ...tex-2d-r8ui-red_integer-unsigned_byte.html | 59 + .../canvas/tex-2d-rg16f-rg-float.html | 59 + .../canvas/tex-2d-rg16f-rg-half_float.html | 59 + .../canvas/tex-2d-rg32f-rg-float.html | 59 + .../canvas/tex-2d-rg8-rg-unsigned_byte.html | 59 + ...tex-2d-rg8ui-rg_integer-unsigned_byte.html | 59 + .../canvas/tex-2d-rgb16f-rgb-float.html | 59 + .../canvas/tex-2d-rgb16f-rgb-half_float.html | 59 + .../canvas/tex-2d-rgb32f-rgb-float.html | 59 + .../tex-2d-rgb565-rgb-unsigned_byte.html | 59 + ...ex-2d-rgb565-rgb-unsigned_short_5_6_5.html | 59 + .../tex-2d-rgb5_a1-rgba-unsigned_byte.html | 59 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 59 + .../canvas/tex-2d-rgb8-rgb-unsigned_byte.html | 59 + ...x-2d-rgb8ui-rgb_integer-unsigned_byte.html | 59 + .../canvas/tex-2d-rgba16f-rgba-float.html | 59 + .../tex-2d-rgba16f-rgba-half_float.html | 59 + .../canvas/tex-2d-rgba32f-rgba-float.html | 59 + .../tex-2d-rgba4-rgba-unsigned_byte.html | 59 + ...-2d-rgba4-rgba-unsigned_short_4_4_4_4.html | 59 + .../tex-2d-rgba8-rgba-unsigned_byte.html | 59 + ...2d-rgba8ui-rgba_integer-unsigned_byte.html | 59 + .../tex-2d-srgb8-rgb-unsigned_byte.html | 59 + ...ex-2d-srgb8_alpha8-rgba-unsigned_byte.html | 59 + .../tex-3d-r11f_g11f_b10f-rgb-float.html | 59 + .../tex-3d-r11f_g11f_b10f-rgb-half_float.html | 59 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 59 + .../canvas/tex-3d-r16f-red-float.html | 59 + .../canvas/tex-3d-r16f-red-half_float.html | 59 + .../canvas/tex-3d-r32f-red-float.html | 59 + .../canvas/tex-3d-r8-red-unsigned_byte.html | 59 + ...tex-3d-r8ui-red_integer-unsigned_byte.html | 59 + .../canvas/tex-3d-rg16f-rg-float.html | 59 + .../canvas/tex-3d-rg16f-rg-half_float.html | 59 + .../canvas/tex-3d-rg32f-rg-float.html | 59 + .../canvas/tex-3d-rg8-rg-unsigned_byte.html | 59 + ...tex-3d-rg8ui-rg_integer-unsigned_byte.html | 59 + .../canvas/tex-3d-rgb16f-rgb-float.html | 59 + .../canvas/tex-3d-rgb16f-rgb-half_float.html | 59 + .../canvas/tex-3d-rgb32f-rgb-float.html | 59 + .../tex-3d-rgb565-rgb-unsigned_byte.html | 59 + ...ex-3d-rgb565-rgb-unsigned_short_5_6_5.html | 59 + .../tex-3d-rgb5_a1-rgba-unsigned_byte.html | 59 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 59 + .../canvas/tex-3d-rgb8-rgb-unsigned_byte.html | 59 + ...x-3d-rgb8ui-rgb_integer-unsigned_byte.html | 59 + .../canvas/tex-3d-rgba16f-rgba-float.html | 59 + .../tex-3d-rgba16f-rgba-half_float.html | 59 + .../canvas/tex-3d-rgba32f-rgba-float.html | 59 + .../tex-3d-rgba4-rgba-unsigned_byte.html | 59 + ...-3d-rgba4-rgba-unsigned_short_4_4_4_4.html | 59 + .../tex-3d-rgba8-rgba-unsigned_byte.html | 59 + ...3d-rgba8ui-rgba_integer-unsigned_byte.html | 59 + .../tex-3d-srgb8-rgb-unsigned_byte.html | 59 + ...ex-3d-srgb8_alpha8-rgba-unsigned_byte.html | 59 + .../canvas_sub_rectangle/00_test_list.txt | 66 + .../tex-2d-r11f_g11f_b10f-rgb-float.html | 59 + .../tex-2d-r11f_g11f_b10f-rgb-half_float.html | 59 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 59 + .../tex-2d-r16f-red-float.html | 59 + .../tex-2d-r16f-red-half_float.html | 59 + .../tex-2d-r32f-red-float.html | 59 + .../tex-2d-r8-red-unsigned_byte.html | 59 + ...tex-2d-r8ui-red_integer-unsigned_byte.html | 59 + .../tex-2d-rg16f-rg-float.html | 59 + .../tex-2d-rg16f-rg-half_float.html | 59 + .../tex-2d-rg32f-rg-float.html | 59 + .../tex-2d-rg8-rg-unsigned_byte.html | 59 + ...tex-2d-rg8ui-rg_integer-unsigned_byte.html | 59 + .../tex-2d-rgb16f-rgb-float.html | 59 + .../tex-2d-rgb16f-rgb-half_float.html | 59 + .../tex-2d-rgb32f-rgb-float.html | 59 + .../tex-2d-rgb565-rgb-unsigned_byte.html | 59 + ...ex-2d-rgb565-rgb-unsigned_short_5_6_5.html | 59 + .../tex-2d-rgb5_a1-rgba-unsigned_byte.html | 59 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 59 + .../tex-2d-rgb8-rgb-unsigned_byte.html | 59 + ...x-2d-rgb8ui-rgb_integer-unsigned_byte.html | 59 + .../tex-2d-rgb9_e5-rgb-float.html | 59 + .../tex-2d-rgb9_e5-rgb-half_float.html | 59 + .../tex-2d-rgba16f-rgba-float.html | 59 + .../tex-2d-rgba16f-rgba-half_float.html | 59 + .../tex-2d-rgba32f-rgba-float.html | 59 + .../tex-2d-rgba4-rgba-unsigned_byte.html | 59 + ...-2d-rgba4-rgba-unsigned_short_4_4_4_4.html | 59 + .../tex-2d-rgba8-rgba-unsigned_byte.html | 59 + ...2d-rgba8ui-rgba_integer-unsigned_byte.html | 59 + .../tex-2d-srgb8-rgb-unsigned_byte.html | 59 + ...ex-2d-srgb8_alpha8-rgba-unsigned_byte.html | 59 + .../tex-3d-r11f_g11f_b10f-rgb-float.html | 59 + .../tex-3d-r11f_g11f_b10f-rgb-half_float.html | 59 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 59 + .../tex-3d-r16f-red-float.html | 59 + .../tex-3d-r16f-red-half_float.html | 59 + .../tex-3d-r32f-red-float.html | 59 + .../tex-3d-r8-red-unsigned_byte.html | 59 + ...tex-3d-r8ui-red_integer-unsigned_byte.html | 59 + .../tex-3d-rg16f-rg-float.html | 59 + .../tex-3d-rg16f-rg-half_float.html | 59 + .../tex-3d-rg32f-rg-float.html | 59 + .../tex-3d-rg8-rg-unsigned_byte.html | 59 + ...tex-3d-rg8ui-rg_integer-unsigned_byte.html | 59 + .../tex-3d-rgb16f-rgb-float.html | 59 + .../tex-3d-rgb16f-rgb-half_float.html | 59 + .../tex-3d-rgb32f-rgb-float.html | 59 + .../tex-3d-rgb565-rgb-unsigned_byte.html | 59 + ...ex-3d-rgb565-rgb-unsigned_short_5_6_5.html | 59 + .../tex-3d-rgb5_a1-rgba-unsigned_byte.html | 59 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 59 + .../tex-3d-rgb8-rgb-unsigned_byte.html | 59 + ...x-3d-rgb8ui-rgb_integer-unsigned_byte.html | 59 + .../tex-3d-rgb9_e5-rgb-float.html | 59 + .../tex-3d-rgb9_e5-rgb-half_float.html | 59 + .../tex-3d-rgba16f-rgba-float.html | 59 + .../tex-3d-rgba16f-rgba-half_float.html | 59 + .../tex-3d-rgba32f-rgba-float.html | 59 + .../tex-3d-rgba4-rgba-unsigned_byte.html | 59 + ...-3d-rgba4-rgba-unsigned_short_4_4_4_4.html | 59 + .../tex-3d-rgba8-rgba-unsigned_byte.html | 59 + ...3d-rgba8ui-rgba_integer-unsigned_byte.html | 59 + .../tex-3d-srgb8-rgb-unsigned_byte.html | 59 + ...ex-3d-srgb8_alpha8-rgba-unsigned_byte.html | 59 + .../textures/image/00_test_list.txt | 66 + .../tex-2d-r11f_g11f_b10f-rgb-float.html | 59 + .../tex-2d-r11f_g11f_b10f-rgb-half_float.html | 59 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 59 + .../textures/image/tex-2d-r16f-red-float.html | 59 + .../image/tex-2d-r16f-red-half_float.html | 59 + .../textures/image/tex-2d-r32f-red-float.html | 59 + .../image/tex-2d-r8-red-unsigned_byte.html | 59 + ...tex-2d-r8ui-red_integer-unsigned_byte.html | 59 + .../textures/image/tex-2d-rg16f-rg-float.html | 59 + .../image/tex-2d-rg16f-rg-half_float.html | 59 + .../textures/image/tex-2d-rg32f-rg-float.html | 59 + .../image/tex-2d-rg8-rg-unsigned_byte.html | 59 + ...tex-2d-rg8ui-rg_integer-unsigned_byte.html | 59 + .../image/tex-2d-rgb16f-rgb-float.html | 59 + .../image/tex-2d-rgb16f-rgb-half_float.html | 59 + .../image/tex-2d-rgb32f-rgb-float.html | 59 + .../tex-2d-rgb565-rgb-unsigned_byte.html | 59 + ...ex-2d-rgb565-rgb-unsigned_short_5_6_5.html | 59 + .../tex-2d-rgb5_a1-rgba-unsigned_byte.html | 59 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 59 + .../image/tex-2d-rgb8-rgb-unsigned_byte.html | 59 + ...x-2d-rgb8ui-rgb_integer-unsigned_byte.html | 59 + .../image/tex-2d-rgb9_e5-rgb-float.html | 59 + .../image/tex-2d-rgb9_e5-rgb-half_float.html | 59 + .../image/tex-2d-rgba16f-rgba-float.html | 59 + .../image/tex-2d-rgba16f-rgba-half_float.html | 59 + .../image/tex-2d-rgba32f-rgba-float.html | 59 + .../tex-2d-rgba4-rgba-unsigned_byte.html | 59 + ...-2d-rgba4-rgba-unsigned_short_4_4_4_4.html | 59 + .../tex-2d-rgba8-rgba-unsigned_byte.html | 59 + ...2d-rgba8ui-rgba_integer-unsigned_byte.html | 59 + .../image/tex-2d-srgb8-rgb-unsigned_byte.html | 59 + ...ex-2d-srgb8_alpha8-rgba-unsigned_byte.html | 59 + .../tex-3d-r11f_g11f_b10f-rgb-float.html | 59 + .../tex-3d-r11f_g11f_b10f-rgb-half_float.html | 59 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 59 + .../textures/image/tex-3d-r16f-red-float.html | 59 + .../image/tex-3d-r16f-red-half_float.html | 59 + .../textures/image/tex-3d-r32f-red-float.html | 59 + .../image/tex-3d-r8-red-unsigned_byte.html | 59 + ...tex-3d-r8ui-red_integer-unsigned_byte.html | 59 + .../textures/image/tex-3d-rg16f-rg-float.html | 59 + .../image/tex-3d-rg16f-rg-half_float.html | 59 + .../textures/image/tex-3d-rg32f-rg-float.html | 59 + .../image/tex-3d-rg8-rg-unsigned_byte.html | 59 + ...tex-3d-rg8ui-rg_integer-unsigned_byte.html | 59 + .../image/tex-3d-rgb16f-rgb-float.html | 59 + .../image/tex-3d-rgb16f-rgb-half_float.html | 59 + .../image/tex-3d-rgb32f-rgb-float.html | 59 + .../tex-3d-rgb565-rgb-unsigned_byte.html | 59 + ...ex-3d-rgb565-rgb-unsigned_short_5_6_5.html | 59 + .../tex-3d-rgb5_a1-rgba-unsigned_byte.html | 59 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 59 + .../image/tex-3d-rgb8-rgb-unsigned_byte.html | 59 + ...x-3d-rgb8ui-rgb_integer-unsigned_byte.html | 59 + .../image/tex-3d-rgb9_e5-rgb-float.html | 59 + .../image/tex-3d-rgb9_e5-rgb-half_float.html | 59 + .../image/tex-3d-rgba16f-rgba-float.html | 59 + .../image/tex-3d-rgba16f-rgba-half_float.html | 59 + .../image/tex-3d-rgba32f-rgba-float.html | 59 + .../tex-3d-rgba4-rgba-unsigned_byte.html | 59 + ...-3d-rgba4-rgba-unsigned_short_4_4_4_4.html | 59 + .../tex-3d-rgba8-rgba-unsigned_byte.html | 59 + ...3d-rgba8ui-rgba_integer-unsigned_byte.html | 59 + .../image/tex-3d-srgb8-rgb-unsigned_byte.html | 59 + ...ex-3d-srgb8_alpha8-rgba-unsigned_byte.html | 59 + .../image_bitmap_from_blob/00_test_list.txt | 66 + .../tex-2d-r11f_g11f_b10f-rgb-float.html | 60 + .../tex-2d-r11f_g11f_b10f-rgb-half_float.html | 60 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 60 + .../tex-2d-r16f-red-float.html | 60 + .../tex-2d-r16f-red-half_float.html | 60 + .../tex-2d-r32f-red-float.html | 60 + .../tex-2d-r8-red-unsigned_byte.html | 60 + ...tex-2d-r8ui-red_integer-unsigned_byte.html | 60 + .../tex-2d-rg16f-rg-float.html | 60 + .../tex-2d-rg16f-rg-half_float.html | 60 + .../tex-2d-rg32f-rg-float.html | 60 + .../tex-2d-rg8-rg-unsigned_byte.html | 60 + ...tex-2d-rg8ui-rg_integer-unsigned_byte.html | 60 + .../tex-2d-rgb16f-rgb-float.html | 60 + .../tex-2d-rgb16f-rgb-half_float.html | 60 + .../tex-2d-rgb32f-rgb-float.html | 60 + .../tex-2d-rgb565-rgb-unsigned_byte.html | 60 + ...ex-2d-rgb565-rgb-unsigned_short_5_6_5.html | 60 + .../tex-2d-rgb5_a1-rgba-unsigned_byte.html | 60 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 60 + .../tex-2d-rgb8-rgb-unsigned_byte.html | 60 + ...x-2d-rgb8ui-rgb_integer-unsigned_byte.html | 60 + .../tex-2d-rgb9_e5-rgb-float.html | 60 + .../tex-2d-rgb9_e5-rgb-half_float.html | 60 + .../tex-2d-rgba16f-rgba-float.html | 60 + .../tex-2d-rgba16f-rgba-half_float.html | 60 + .../tex-2d-rgba32f-rgba-float.html | 60 + .../tex-2d-rgba4-rgba-unsigned_byte.html | 60 + ...-2d-rgba4-rgba-unsigned_short_4_4_4_4.html | 60 + .../tex-2d-rgba8-rgba-unsigned_byte.html | 60 + ...2d-rgba8ui-rgba_integer-unsigned_byte.html | 60 + .../tex-2d-srgb8-rgb-unsigned_byte.html | 60 + ...ex-2d-srgb8_alpha8-rgba-unsigned_byte.html | 60 + .../tex-3d-r11f_g11f_b10f-rgb-float.html | 60 + .../tex-3d-r11f_g11f_b10f-rgb-half_float.html | 60 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 60 + .../tex-3d-r16f-red-float.html | 60 + .../tex-3d-r16f-red-half_float.html | 60 + .../tex-3d-r32f-red-float.html | 60 + .../tex-3d-r8-red-unsigned_byte.html | 60 + ...tex-3d-r8ui-red_integer-unsigned_byte.html | 60 + .../tex-3d-rg16f-rg-float.html | 60 + .../tex-3d-rg16f-rg-half_float.html | 60 + .../tex-3d-rg32f-rg-float.html | 60 + .../tex-3d-rg8-rg-unsigned_byte.html | 60 + ...tex-3d-rg8ui-rg_integer-unsigned_byte.html | 60 + .../tex-3d-rgb16f-rgb-float.html | 60 + .../tex-3d-rgb16f-rgb-half_float.html | 60 + .../tex-3d-rgb32f-rgb-float.html | 60 + .../tex-3d-rgb565-rgb-unsigned_byte.html | 60 + ...ex-3d-rgb565-rgb-unsigned_short_5_6_5.html | 60 + .../tex-3d-rgb5_a1-rgba-unsigned_byte.html | 60 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 60 + .../tex-3d-rgb8-rgb-unsigned_byte.html | 60 + ...x-3d-rgb8ui-rgb_integer-unsigned_byte.html | 60 + .../tex-3d-rgb9_e5-rgb-float.html | 60 + .../tex-3d-rgb9_e5-rgb-half_float.html | 60 + .../tex-3d-rgba16f-rgba-float.html | 60 + .../tex-3d-rgba16f-rgba-half_float.html | 60 + .../tex-3d-rgba32f-rgba-float.html | 60 + .../tex-3d-rgba4-rgba-unsigned_byte.html | 60 + ...-3d-rgba4-rgba-unsigned_short_4_4_4_4.html | 60 + .../tex-3d-rgba8-rgba-unsigned_byte.html | 60 + ...3d-rgba8ui-rgba_integer-unsigned_byte.html | 60 + .../tex-3d-srgb8-rgb-unsigned_byte.html | 60 + ...ex-3d-srgb8_alpha8-rgba-unsigned_byte.html | 60 + .../image_bitmap_from_canvas/00_test_list.txt | 66 + .../tex-2d-r11f_g11f_b10f-rgb-float.html | 60 + .../tex-2d-r11f_g11f_b10f-rgb-half_float.html | 60 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 60 + .../tex-2d-r16f-red-float.html | 60 + .../tex-2d-r16f-red-half_float.html | 60 + .../tex-2d-r32f-red-float.html | 60 + .../tex-2d-r8-red-unsigned_byte.html | 60 + ...tex-2d-r8ui-red_integer-unsigned_byte.html | 60 + .../tex-2d-rg16f-rg-float.html | 60 + .../tex-2d-rg16f-rg-half_float.html | 60 + .../tex-2d-rg32f-rg-float.html | 60 + .../tex-2d-rg8-rg-unsigned_byte.html | 60 + ...tex-2d-rg8ui-rg_integer-unsigned_byte.html | 60 + .../tex-2d-rgb16f-rgb-float.html | 60 + .../tex-2d-rgb16f-rgb-half_float.html | 60 + .../tex-2d-rgb32f-rgb-float.html | 60 + .../tex-2d-rgb565-rgb-unsigned_byte.html | 60 + ...ex-2d-rgb565-rgb-unsigned_short_5_6_5.html | 60 + .../tex-2d-rgb5_a1-rgba-unsigned_byte.html | 60 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 60 + .../tex-2d-rgb8-rgb-unsigned_byte.html | 60 + ...x-2d-rgb8ui-rgb_integer-unsigned_byte.html | 60 + .../tex-2d-rgb9_e5-rgb-float.html | 60 + .../tex-2d-rgb9_e5-rgb-half_float.html | 60 + .../tex-2d-rgba16f-rgba-float.html | 60 + .../tex-2d-rgba16f-rgba-half_float.html | 60 + .../tex-2d-rgba32f-rgba-float.html | 60 + .../tex-2d-rgba4-rgba-unsigned_byte.html | 60 + ...-2d-rgba4-rgba-unsigned_short_4_4_4_4.html | 60 + .../tex-2d-rgba8-rgba-unsigned_byte.html | 60 + ...2d-rgba8ui-rgba_integer-unsigned_byte.html | 60 + .../tex-2d-srgb8-rgb-unsigned_byte.html | 60 + ...ex-2d-srgb8_alpha8-rgba-unsigned_byte.html | 60 + .../tex-3d-r11f_g11f_b10f-rgb-float.html | 60 + .../tex-3d-r11f_g11f_b10f-rgb-half_float.html | 60 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 60 + .../tex-3d-r16f-red-float.html | 60 + .../tex-3d-r16f-red-half_float.html | 60 + .../tex-3d-r32f-red-float.html | 60 + .../tex-3d-r8-red-unsigned_byte.html | 60 + ...tex-3d-r8ui-red_integer-unsigned_byte.html | 60 + .../tex-3d-rg16f-rg-float.html | 60 + .../tex-3d-rg16f-rg-half_float.html | 60 + .../tex-3d-rg32f-rg-float.html | 60 + .../tex-3d-rg8-rg-unsigned_byte.html | 60 + ...tex-3d-rg8ui-rg_integer-unsigned_byte.html | 60 + .../tex-3d-rgb16f-rgb-float.html | 60 + .../tex-3d-rgb16f-rgb-half_float.html | 60 + .../tex-3d-rgb32f-rgb-float.html | 60 + .../tex-3d-rgb565-rgb-unsigned_byte.html | 60 + ...ex-3d-rgb565-rgb-unsigned_short_5_6_5.html | 60 + .../tex-3d-rgb5_a1-rgba-unsigned_byte.html | 60 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 60 + .../tex-3d-rgb8-rgb-unsigned_byte.html | 60 + ...x-3d-rgb8ui-rgb_integer-unsigned_byte.html | 60 + .../tex-3d-rgb9_e5-rgb-float.html | 60 + .../tex-3d-rgb9_e5-rgb-half_float.html | 60 + .../tex-3d-rgba16f-rgba-float.html | 60 + .../tex-3d-rgba16f-rgba-half_float.html | 60 + .../tex-3d-rgba32f-rgba-float.html | 60 + .../tex-3d-rgba4-rgba-unsigned_byte.html | 60 + ...-3d-rgba4-rgba-unsigned_short_4_4_4_4.html | 60 + .../tex-3d-rgba8-rgba-unsigned_byte.html | 60 + ...3d-rgba8ui-rgba_integer-unsigned_byte.html | 60 + .../tex-3d-srgb8-rgb-unsigned_byte.html | 60 + ...ex-3d-srgb8_alpha8-rgba-unsigned_byte.html | 60 + .../image_bitmap_from_image/00_test_list.txt | 66 + .../tex-2d-r11f_g11f_b10f-rgb-float.html | 60 + .../tex-2d-r11f_g11f_b10f-rgb-half_float.html | 60 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 60 + .../tex-2d-r16f-red-float.html | 60 + .../tex-2d-r16f-red-half_float.html | 60 + .../tex-2d-r32f-red-float.html | 60 + .../tex-2d-r8-red-unsigned_byte.html | 60 + ...tex-2d-r8ui-red_integer-unsigned_byte.html | 60 + .../tex-2d-rg16f-rg-float.html | 60 + .../tex-2d-rg16f-rg-half_float.html | 60 + .../tex-2d-rg32f-rg-float.html | 60 + .../tex-2d-rg8-rg-unsigned_byte.html | 60 + ...tex-2d-rg8ui-rg_integer-unsigned_byte.html | 60 + .../tex-2d-rgb16f-rgb-float.html | 60 + .../tex-2d-rgb16f-rgb-half_float.html | 60 + .../tex-2d-rgb32f-rgb-float.html | 60 + .../tex-2d-rgb565-rgb-unsigned_byte.html | 60 + ...ex-2d-rgb565-rgb-unsigned_short_5_6_5.html | 60 + .../tex-2d-rgb5_a1-rgba-unsigned_byte.html | 60 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 60 + .../tex-2d-rgb8-rgb-unsigned_byte.html | 60 + ...x-2d-rgb8ui-rgb_integer-unsigned_byte.html | 60 + .../tex-2d-rgb9_e5-rgb-float.html | 60 + .../tex-2d-rgb9_e5-rgb-half_float.html | 60 + .../tex-2d-rgba16f-rgba-float.html | 60 + .../tex-2d-rgba16f-rgba-half_float.html | 60 + .../tex-2d-rgba32f-rgba-float.html | 60 + .../tex-2d-rgba4-rgba-unsigned_byte.html | 60 + ...-2d-rgba4-rgba-unsigned_short_4_4_4_4.html | 60 + .../tex-2d-rgba8-rgba-unsigned_byte.html | 60 + ...2d-rgba8ui-rgba_integer-unsigned_byte.html | 60 + .../tex-2d-srgb8-rgb-unsigned_byte.html | 60 + ...ex-2d-srgb8_alpha8-rgba-unsigned_byte.html | 60 + .../tex-3d-r11f_g11f_b10f-rgb-float.html | 60 + .../tex-3d-r11f_g11f_b10f-rgb-half_float.html | 60 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 60 + .../tex-3d-r16f-red-float.html | 60 + .../tex-3d-r16f-red-half_float.html | 60 + .../tex-3d-r32f-red-float.html | 60 + .../tex-3d-r8-red-unsigned_byte.html | 60 + ...tex-3d-r8ui-red_integer-unsigned_byte.html | 60 + .../tex-3d-rg16f-rg-float.html | 60 + .../tex-3d-rg16f-rg-half_float.html | 60 + .../tex-3d-rg32f-rg-float.html | 60 + .../tex-3d-rg8-rg-unsigned_byte.html | 60 + ...tex-3d-rg8ui-rg_integer-unsigned_byte.html | 60 + .../tex-3d-rgb16f-rgb-float.html | 60 + .../tex-3d-rgb16f-rgb-half_float.html | 60 + .../tex-3d-rgb32f-rgb-float.html | 60 + .../tex-3d-rgb565-rgb-unsigned_byte.html | 60 + ...ex-3d-rgb565-rgb-unsigned_short_5_6_5.html | 60 + .../tex-3d-rgb5_a1-rgba-unsigned_byte.html | 60 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 60 + .../tex-3d-rgb8-rgb-unsigned_byte.html | 60 + ...x-3d-rgb8ui-rgb_integer-unsigned_byte.html | 60 + .../tex-3d-rgb9_e5-rgb-float.html | 60 + .../tex-3d-rgb9_e5-rgb-half_float.html | 60 + .../tex-3d-rgba16f-rgba-float.html | 60 + .../tex-3d-rgba16f-rgba-half_float.html | 60 + .../tex-3d-rgba32f-rgba-float.html | 60 + .../tex-3d-rgba4-rgba-unsigned_byte.html | 60 + ...-3d-rgba4-rgba-unsigned_short_4_4_4_4.html | 60 + .../tex-3d-rgba8-rgba-unsigned_byte.html | 60 + ...3d-rgba8ui-rgba_integer-unsigned_byte.html | 60 + .../tex-3d-srgb8-rgb-unsigned_byte.html | 60 + ...ex-3d-srgb8_alpha8-rgba-unsigned_byte.html | 60 + .../00_test_list.txt | 66 + .../tex-2d-r11f_g11f_b10f-rgb-float.html | 60 + .../tex-2d-r11f_g11f_b10f-rgb-half_float.html | 60 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 60 + .../tex-2d-r16f-red-float.html | 60 + .../tex-2d-r16f-red-half_float.html | 60 + .../tex-2d-r32f-red-float.html | 60 + .../tex-2d-r8-red-unsigned_byte.html | 60 + ...tex-2d-r8ui-red_integer-unsigned_byte.html | 60 + .../tex-2d-rg16f-rg-float.html | 60 + .../tex-2d-rg16f-rg-half_float.html | 60 + .../tex-2d-rg32f-rg-float.html | 60 + .../tex-2d-rg8-rg-unsigned_byte.html | 60 + ...tex-2d-rg8ui-rg_integer-unsigned_byte.html | 60 + .../tex-2d-rgb16f-rgb-float.html | 60 + .../tex-2d-rgb16f-rgb-half_float.html | 60 + .../tex-2d-rgb32f-rgb-float.html | 60 + .../tex-2d-rgb565-rgb-unsigned_byte.html | 60 + ...ex-2d-rgb565-rgb-unsigned_short_5_6_5.html | 60 + .../tex-2d-rgb5_a1-rgba-unsigned_byte.html | 60 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 60 + .../tex-2d-rgb8-rgb-unsigned_byte.html | 60 + ...x-2d-rgb8ui-rgb_integer-unsigned_byte.html | 60 + .../tex-2d-rgb9_e5-rgb-float.html | 60 + .../tex-2d-rgb9_e5-rgb-half_float.html | 60 + .../tex-2d-rgba16f-rgba-float.html | 60 + .../tex-2d-rgba16f-rgba-half_float.html | 60 + .../tex-2d-rgba32f-rgba-float.html | 60 + .../tex-2d-rgba4-rgba-unsigned_byte.html | 60 + ...-2d-rgba4-rgba-unsigned_short_4_4_4_4.html | 60 + .../tex-2d-rgba8-rgba-unsigned_byte.html | 60 + ...2d-rgba8ui-rgba_integer-unsigned_byte.html | 60 + .../tex-2d-srgb8-rgb-unsigned_byte.html | 60 + ...ex-2d-srgb8_alpha8-rgba-unsigned_byte.html | 60 + .../tex-3d-r11f_g11f_b10f-rgb-float.html | 60 + .../tex-3d-r11f_g11f_b10f-rgb-half_float.html | 60 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 60 + .../tex-3d-r16f-red-float.html | 60 + .../tex-3d-r16f-red-half_float.html | 60 + .../tex-3d-r32f-red-float.html | 60 + .../tex-3d-r8-red-unsigned_byte.html | 60 + ...tex-3d-r8ui-red_integer-unsigned_byte.html | 60 + .../tex-3d-rg16f-rg-float.html | 60 + .../tex-3d-rg16f-rg-half_float.html | 60 + .../tex-3d-rg32f-rg-float.html | 60 + .../tex-3d-rg8-rg-unsigned_byte.html | 60 + ...tex-3d-rg8ui-rg_integer-unsigned_byte.html | 60 + .../tex-3d-rgb16f-rgb-float.html | 60 + .../tex-3d-rgb16f-rgb-half_float.html | 60 + .../tex-3d-rgb32f-rgb-float.html | 60 + .../tex-3d-rgb565-rgb-unsigned_byte.html | 60 + ...ex-3d-rgb565-rgb-unsigned_short_5_6_5.html | 60 + .../tex-3d-rgb5_a1-rgba-unsigned_byte.html | 60 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 60 + .../tex-3d-rgb8-rgb-unsigned_byte.html | 60 + ...x-3d-rgb8ui-rgb_integer-unsigned_byte.html | 60 + .../tex-3d-rgb9_e5-rgb-float.html | 60 + .../tex-3d-rgb9_e5-rgb-half_float.html | 60 + .../tex-3d-rgba16f-rgba-float.html | 60 + .../tex-3d-rgba16f-rgba-half_float.html | 60 + .../tex-3d-rgba32f-rgba-float.html | 60 + .../tex-3d-rgba4-rgba-unsigned_byte.html | 60 + ...-3d-rgba4-rgba-unsigned_short_4_4_4_4.html | 60 + .../tex-3d-rgba8-rgba-unsigned_byte.html | 60 + ...3d-rgba8ui-rgba_integer-unsigned_byte.html | 60 + .../tex-3d-srgb8-rgb-unsigned_byte.html | 60 + ...ex-3d-srgb8_alpha8-rgba-unsigned_byte.html | 60 + .../00_test_list.txt | 66 + .../tex-2d-r11f_g11f_b10f-rgb-float.html | 60 + .../tex-2d-r11f_g11f_b10f-rgb-half_float.html | 60 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 60 + .../tex-2d-r16f-red-float.html | 60 + .../tex-2d-r16f-red-half_float.html | 60 + .../tex-2d-r32f-red-float.html | 60 + .../tex-2d-r8-red-unsigned_byte.html | 60 + ...tex-2d-r8ui-red_integer-unsigned_byte.html | 60 + .../tex-2d-rg16f-rg-float.html | 60 + .../tex-2d-rg16f-rg-half_float.html | 60 + .../tex-2d-rg32f-rg-float.html | 60 + .../tex-2d-rg8-rg-unsigned_byte.html | 60 + ...tex-2d-rg8ui-rg_integer-unsigned_byte.html | 60 + .../tex-2d-rgb16f-rgb-float.html | 60 + .../tex-2d-rgb16f-rgb-half_float.html | 60 + .../tex-2d-rgb32f-rgb-float.html | 60 + .../tex-2d-rgb565-rgb-unsigned_byte.html | 60 + ...ex-2d-rgb565-rgb-unsigned_short_5_6_5.html | 60 + .../tex-2d-rgb5_a1-rgba-unsigned_byte.html | 60 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 60 + .../tex-2d-rgb8-rgb-unsigned_byte.html | 60 + ...x-2d-rgb8ui-rgb_integer-unsigned_byte.html | 60 + .../tex-2d-rgb9_e5-rgb-float.html | 60 + .../tex-2d-rgb9_e5-rgb-half_float.html | 60 + .../tex-2d-rgba16f-rgba-float.html | 60 + .../tex-2d-rgba16f-rgba-half_float.html | 60 + .../tex-2d-rgba32f-rgba-float.html | 60 + .../tex-2d-rgba4-rgba-unsigned_byte.html | 60 + ...-2d-rgba4-rgba-unsigned_short_4_4_4_4.html | 60 + .../tex-2d-rgba8-rgba-unsigned_byte.html | 60 + ...2d-rgba8ui-rgba_integer-unsigned_byte.html | 60 + .../tex-2d-srgb8-rgb-unsigned_byte.html | 60 + ...ex-2d-srgb8_alpha8-rgba-unsigned_byte.html | 60 + .../tex-3d-r11f_g11f_b10f-rgb-float.html | 60 + .../tex-3d-r11f_g11f_b10f-rgb-half_float.html | 60 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 60 + .../tex-3d-r16f-red-float.html | 60 + .../tex-3d-r16f-red-half_float.html | 60 + .../tex-3d-r32f-red-float.html | 60 + .../tex-3d-r8-red-unsigned_byte.html | 60 + ...tex-3d-r8ui-red_integer-unsigned_byte.html | 60 + .../tex-3d-rg16f-rg-float.html | 60 + .../tex-3d-rg16f-rg-half_float.html | 60 + .../tex-3d-rg32f-rg-float.html | 60 + .../tex-3d-rg8-rg-unsigned_byte.html | 60 + ...tex-3d-rg8ui-rg_integer-unsigned_byte.html | 60 + .../tex-3d-rgb16f-rgb-float.html | 60 + .../tex-3d-rgb16f-rgb-half_float.html | 60 + .../tex-3d-rgb32f-rgb-float.html | 60 + .../tex-3d-rgb565-rgb-unsigned_byte.html | 60 + ...ex-3d-rgb565-rgb-unsigned_short_5_6_5.html | 60 + .../tex-3d-rgb5_a1-rgba-unsigned_byte.html | 60 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 60 + .../tex-3d-rgb8-rgb-unsigned_byte.html | 60 + ...x-3d-rgb8ui-rgb_integer-unsigned_byte.html | 60 + .../tex-3d-rgb9_e5-rgb-float.html | 60 + .../tex-3d-rgb9_e5-rgb-half_float.html | 60 + .../tex-3d-rgba16f-rgba-float.html | 60 + .../tex-3d-rgba16f-rgba-half_float.html | 60 + .../tex-3d-rgba32f-rgba-float.html | 60 + .../tex-3d-rgba4-rgba-unsigned_byte.html | 60 + ...-3d-rgba4-rgba-unsigned_short_4_4_4_4.html | 60 + .../tex-3d-rgba8-rgba-unsigned_byte.html | 60 + ...3d-rgba8ui-rgba_integer-unsigned_byte.html | 60 + .../tex-3d-srgb8-rgb-unsigned_byte.html | 60 + ...ex-3d-srgb8_alpha8-rgba-unsigned_byte.html | 60 + .../image_bitmap_from_video/00_test_list.txt | 66 + .../tex-2d-r11f_g11f_b10f-rgb-float.html | 60 + .../tex-2d-r11f_g11f_b10f-rgb-half_float.html | 60 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 60 + .../tex-2d-r16f-red-float.html | 60 + .../tex-2d-r16f-red-half_float.html | 60 + .../tex-2d-r32f-red-float.html | 60 + .../tex-2d-r8-red-unsigned_byte.html | 60 + ...tex-2d-r8ui-red_integer-unsigned_byte.html | 60 + .../tex-2d-rg16f-rg-float.html | 60 + .../tex-2d-rg16f-rg-half_float.html | 60 + .../tex-2d-rg32f-rg-float.html | 60 + .../tex-2d-rg8-rg-unsigned_byte.html | 60 + ...tex-2d-rg8ui-rg_integer-unsigned_byte.html | 60 + .../tex-2d-rgb16f-rgb-float.html | 60 + .../tex-2d-rgb16f-rgb-half_float.html | 60 + .../tex-2d-rgb32f-rgb-float.html | 60 + .../tex-2d-rgb565-rgb-unsigned_byte.html | 60 + ...ex-2d-rgb565-rgb-unsigned_short_5_6_5.html | 60 + .../tex-2d-rgb5_a1-rgba-unsigned_byte.html | 60 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 60 + .../tex-2d-rgb8-rgb-unsigned_byte.html | 60 + ...x-2d-rgb8ui-rgb_integer-unsigned_byte.html | 60 + .../tex-2d-rgb9_e5-rgb-float.html | 60 + .../tex-2d-rgb9_e5-rgb-half_float.html | 60 + .../tex-2d-rgba16f-rgba-float.html | 60 + .../tex-2d-rgba16f-rgba-half_float.html | 60 + .../tex-2d-rgba32f-rgba-float.html | 60 + .../tex-2d-rgba4-rgba-unsigned_byte.html | 60 + ...-2d-rgba4-rgba-unsigned_short_4_4_4_4.html | 60 + .../tex-2d-rgba8-rgba-unsigned_byte.html | 60 + ...2d-rgba8ui-rgba_integer-unsigned_byte.html | 60 + .../tex-2d-srgb8-rgb-unsigned_byte.html | 60 + ...ex-2d-srgb8_alpha8-rgba-unsigned_byte.html | 60 + .../tex-3d-r11f_g11f_b10f-rgb-float.html | 60 + .../tex-3d-r11f_g11f_b10f-rgb-half_float.html | 60 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 60 + .../tex-3d-r16f-red-float.html | 60 + .../tex-3d-r16f-red-half_float.html | 60 + .../tex-3d-r32f-red-float.html | 60 + .../tex-3d-r8-red-unsigned_byte.html | 60 + ...tex-3d-r8ui-red_integer-unsigned_byte.html | 60 + .../tex-3d-rg16f-rg-float.html | 60 + .../tex-3d-rg16f-rg-half_float.html | 60 + .../tex-3d-rg32f-rg-float.html | 60 + .../tex-3d-rg8-rg-unsigned_byte.html | 60 + ...tex-3d-rg8ui-rg_integer-unsigned_byte.html | 60 + .../tex-3d-rgb16f-rgb-float.html | 60 + .../tex-3d-rgb16f-rgb-half_float.html | 60 + .../tex-3d-rgb32f-rgb-float.html | 60 + .../tex-3d-rgb565-rgb-unsigned_byte.html | 60 + ...ex-3d-rgb565-rgb-unsigned_short_5_6_5.html | 60 + .../tex-3d-rgb5_a1-rgba-unsigned_byte.html | 60 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 60 + .../tex-3d-rgb8-rgb-unsigned_byte.html | 60 + ...x-3d-rgb8ui-rgb_integer-unsigned_byte.html | 60 + .../tex-3d-rgb9_e5-rgb-float.html | 60 + .../tex-3d-rgb9_e5-rgb-half_float.html | 60 + .../tex-3d-rgba16f-rgba-float.html | 60 + .../tex-3d-rgba16f-rgba-half_float.html | 60 + .../tex-3d-rgba32f-rgba-float.html | 60 + .../tex-3d-rgba4-rgba-unsigned_byte.html | 60 + ...-3d-rgba4-rgba-unsigned_short_4_4_4_4.html | 60 + .../tex-3d-rgba8-rgba-unsigned_byte.html | 60 + ...3d-rgba8ui-rgba_integer-unsigned_byte.html | 60 + .../tex-3d-srgb8-rgb-unsigned_byte.html | 60 + ...ex-3d-srgb8_alpha8-rgba-unsigned_byte.html | 60 + .../textures/image_data/00_test_list.txt | 66 + .../tex-2d-r11f_g11f_b10f-rgb-float.html | 60 + .../tex-2d-r11f_g11f_b10f-rgb-half_float.html | 60 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 60 + .../image_data/tex-2d-r16f-red-float.html | 60 + .../tex-2d-r16f-red-half_float.html | 60 + .../image_data/tex-2d-r32f-red-float.html | 60 + .../tex-2d-r8-red-unsigned_byte.html | 60 + ...tex-2d-r8ui-red_integer-unsigned_byte.html | 60 + .../image_data/tex-2d-rg16f-rg-float.html | 60 + .../tex-2d-rg16f-rg-half_float.html | 60 + .../image_data/tex-2d-rg32f-rg-float.html | 60 + .../tex-2d-rg8-rg-unsigned_byte.html | 60 + ...tex-2d-rg8ui-rg_integer-unsigned_byte.html | 60 + .../image_data/tex-2d-rgb16f-rgb-float.html | 60 + .../tex-2d-rgb16f-rgb-half_float.html | 60 + .../image_data/tex-2d-rgb32f-rgb-float.html | 60 + .../tex-2d-rgb565-rgb-unsigned_byte.html | 60 + ...ex-2d-rgb565-rgb-unsigned_short_5_6_5.html | 60 + .../tex-2d-rgb5_a1-rgba-unsigned_byte.html | 60 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 60 + .../tex-2d-rgb8-rgb-unsigned_byte.html | 60 + ...x-2d-rgb8ui-rgb_integer-unsigned_byte.html | 60 + .../image_data/tex-2d-rgb9_e5-rgb-float.html | 60 + .../tex-2d-rgb9_e5-rgb-half_float.html | 60 + .../image_data/tex-2d-rgba16f-rgba-float.html | 60 + .../tex-2d-rgba16f-rgba-half_float.html | 60 + .../image_data/tex-2d-rgba32f-rgba-float.html | 60 + .../tex-2d-rgba4-rgba-unsigned_byte.html | 60 + ...-2d-rgba4-rgba-unsigned_short_4_4_4_4.html | 60 + .../tex-2d-rgba8-rgba-unsigned_byte.html | 60 + ...2d-rgba8ui-rgba_integer-unsigned_byte.html | 60 + .../tex-2d-srgb8-rgb-unsigned_byte.html | 60 + ...ex-2d-srgb8_alpha8-rgba-unsigned_byte.html | 60 + .../tex-3d-r11f_g11f_b10f-rgb-float.html | 60 + .../tex-3d-r11f_g11f_b10f-rgb-half_float.html | 60 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 60 + .../image_data/tex-3d-r16f-red-float.html | 60 + .../tex-3d-r16f-red-half_float.html | 60 + .../image_data/tex-3d-r32f-red-float.html | 60 + .../tex-3d-r8-red-unsigned_byte.html | 60 + ...tex-3d-r8ui-red_integer-unsigned_byte.html | 60 + .../image_data/tex-3d-rg16f-rg-float.html | 60 + .../tex-3d-rg16f-rg-half_float.html | 60 + .../image_data/tex-3d-rg32f-rg-float.html | 60 + .../tex-3d-rg8-rg-unsigned_byte.html | 60 + ...tex-3d-rg8ui-rg_integer-unsigned_byte.html | 60 + .../image_data/tex-3d-rgb16f-rgb-float.html | 60 + .../tex-3d-rgb16f-rgb-half_float.html | 60 + .../image_data/tex-3d-rgb32f-rgb-float.html | 60 + .../tex-3d-rgb565-rgb-unsigned_byte.html | 60 + ...ex-3d-rgb565-rgb-unsigned_short_5_6_5.html | 60 + .../tex-3d-rgb5_a1-rgba-unsigned_byte.html | 60 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 60 + .../tex-3d-rgb8-rgb-unsigned_byte.html | 60 + ...x-3d-rgb8ui-rgb_integer-unsigned_byte.html | 60 + .../image_data/tex-3d-rgb9_e5-rgb-float.html | 60 + .../tex-3d-rgb9_e5-rgb-half_float.html | 60 + .../image_data/tex-3d-rgba16f-rgba-float.html | 60 + .../tex-3d-rgba16f-rgba-half_float.html | 60 + .../image_data/tex-3d-rgba32f-rgba-float.html | 60 + .../tex-3d-rgba4-rgba-unsigned_byte.html | 60 + ...-3d-rgba4-rgba-unsigned_short_4_4_4_4.html | 60 + .../tex-3d-rgba8-rgba-unsigned_byte.html | 60 + ...3d-rgba8ui-rgba_integer-unsigned_byte.html | 60 + .../tex-3d-srgb8-rgb-unsigned_byte.html | 60 + ...ex-3d-srgb8_alpha8-rgba-unsigned_byte.html | 60 + .../textures/misc/00_test_list.txt | 23 + .../textures/misc/active-3d-texture-bug.html | 147 + .../misc/copy-texture-image-luma-format.html | 189 + .../copy-texture-image-webgl-specific.html | 326 + .../textures/misc/copy-texture-image.html | 250 + .../textures/misc/gl-get-tex-parameter.html | 50 + ...teger-cubemap-specification-order-bug.html | 192 + .../integer-cubemap-texture-sampling.html | 192 + .../textures/misc/mipmap-fbo.html | 73 + .../textures/misc/tex-3d-size-limit.html | 186 + ...age-with-array-buffer-view-sub-source.html | 220 + ...image-with-bad-args-from-dom-elements.html | 151 + .../misc/tex-image-with-bad-args.html | 78 + .../tex-image-with-different-data-source.html | 74 + .../textures/misc/tex-input-validation.html | 47 + .../textures/misc/tex-mipmap-levels.html | 248 + .../textures/misc/tex-new-formats.html | 588 + .../textures/misc/tex-srgb-mipmap.html | 229 + .../textures/misc/tex-storage-2d.html | 296 + .../misc/tex-storage-and-subimage-3d.html | 236 + .../misc/tex-storage-compressed-formats.html | 126 + .../textures/misc/tex-unpack-params.html | 614 + .../textures/misc/texel-fetch-undefined.html | 106 + .../textures/misc/texture-npot.html | 183 + .../textures/svg_image/00_test_list.txt | 66 + .../tex-2d-r11f_g11f_b10f-rgb-float.html | 59 + .../tex-2d-r11f_g11f_b10f-rgb-half_float.html | 59 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 59 + .../svg_image/tex-2d-r16f-red-float.html | 59 + .../svg_image/tex-2d-r16f-red-half_float.html | 59 + .../svg_image/tex-2d-r32f-red-float.html | 59 + .../tex-2d-r8-red-unsigned_byte.html | 59 + ...tex-2d-r8ui-red_integer-unsigned_byte.html | 59 + .../svg_image/tex-2d-rg16f-rg-float.html | 59 + .../svg_image/tex-2d-rg16f-rg-half_float.html | 59 + .../svg_image/tex-2d-rg32f-rg-float.html | 59 + .../tex-2d-rg8-rg-unsigned_byte.html | 59 + ...tex-2d-rg8ui-rg_integer-unsigned_byte.html | 59 + .../svg_image/tex-2d-rgb16f-rgb-float.html | 59 + .../tex-2d-rgb16f-rgb-half_float.html | 59 + .../svg_image/tex-2d-rgb32f-rgb-float.html | 59 + .../tex-2d-rgb565-rgb-unsigned_byte.html | 59 + ...ex-2d-rgb565-rgb-unsigned_short_5_6_5.html | 59 + .../tex-2d-rgb5_a1-rgba-unsigned_byte.html | 59 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 59 + .../tex-2d-rgb8-rgb-unsigned_byte.html | 59 + ...x-2d-rgb8ui-rgb_integer-unsigned_byte.html | 59 + .../svg_image/tex-2d-rgb9_e5-rgb-float.html | 59 + .../tex-2d-rgb9_e5-rgb-half_float.html | 59 + .../svg_image/tex-2d-rgba16f-rgba-float.html | 59 + .../tex-2d-rgba16f-rgba-half_float.html | 59 + .../svg_image/tex-2d-rgba32f-rgba-float.html | 59 + .../tex-2d-rgba4-rgba-unsigned_byte.html | 59 + ...-2d-rgba4-rgba-unsigned_short_4_4_4_4.html | 59 + .../tex-2d-rgba8-rgba-unsigned_byte.html | 59 + ...2d-rgba8ui-rgba_integer-unsigned_byte.html | 59 + .../tex-2d-srgb8-rgb-unsigned_byte.html | 59 + ...ex-2d-srgb8_alpha8-rgba-unsigned_byte.html | 59 + .../tex-3d-r11f_g11f_b10f-rgb-float.html | 59 + .../tex-3d-r11f_g11f_b10f-rgb-half_float.html | 59 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 59 + .../svg_image/tex-3d-r16f-red-float.html | 59 + .../svg_image/tex-3d-r16f-red-half_float.html | 59 + .../svg_image/tex-3d-r32f-red-float.html | 59 + .../tex-3d-r8-red-unsigned_byte.html | 59 + ...tex-3d-r8ui-red_integer-unsigned_byte.html | 59 + .../svg_image/tex-3d-rg16f-rg-float.html | 59 + .../svg_image/tex-3d-rg16f-rg-half_float.html | 59 + .../svg_image/tex-3d-rg32f-rg-float.html | 59 + .../tex-3d-rg8-rg-unsigned_byte.html | 59 + ...tex-3d-rg8ui-rg_integer-unsigned_byte.html | 59 + .../svg_image/tex-3d-rgb16f-rgb-float.html | 59 + .../tex-3d-rgb16f-rgb-half_float.html | 59 + .../svg_image/tex-3d-rgb32f-rgb-float.html | 59 + .../tex-3d-rgb565-rgb-unsigned_byte.html | 59 + ...ex-3d-rgb565-rgb-unsigned_short_5_6_5.html | 59 + .../tex-3d-rgb5_a1-rgba-unsigned_byte.html | 59 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 59 + .../tex-3d-rgb8-rgb-unsigned_byte.html | 59 + ...x-3d-rgb8ui-rgb_integer-unsigned_byte.html | 59 + .../svg_image/tex-3d-rgb9_e5-rgb-float.html | 59 + .../tex-3d-rgb9_e5-rgb-half_float.html | 59 + .../svg_image/tex-3d-rgba16f-rgba-float.html | 59 + .../tex-3d-rgba16f-rgba-half_float.html | 59 + .../svg_image/tex-3d-rgba32f-rgba-float.html | 59 + .../tex-3d-rgba4-rgba-unsigned_byte.html | 59 + ...-3d-rgba4-rgba-unsigned_short_4_4_4_4.html | 59 + .../tex-3d-rgba8-rgba-unsigned_byte.html | 59 + ...3d-rgba8ui-rgba_integer-unsigned_byte.html | 59 + .../tex-3d-srgb8-rgb-unsigned_byte.html | 59 + ...ex-3d-srgb8_alpha8-rgba-unsigned_byte.html | 59 + .../textures/video/00_test_list.txt | 66 + .../tex-2d-r11f_g11f_b10f-rgb-float.html | 59 + .../tex-2d-r11f_g11f_b10f-rgb-half_float.html | 59 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 59 + .../textures/video/tex-2d-r16f-red-float.html | 59 + .../video/tex-2d-r16f-red-half_float.html | 59 + .../textures/video/tex-2d-r32f-red-float.html | 59 + .../video/tex-2d-r8-red-unsigned_byte.html | 59 + ...tex-2d-r8ui-red_integer-unsigned_byte.html | 59 + .../textures/video/tex-2d-rg16f-rg-float.html | 59 + .../video/tex-2d-rg16f-rg-half_float.html | 59 + .../textures/video/tex-2d-rg32f-rg-float.html | 59 + .../video/tex-2d-rg8-rg-unsigned_byte.html | 59 + ...tex-2d-rg8ui-rg_integer-unsigned_byte.html | 59 + .../video/tex-2d-rgb16f-rgb-float.html | 59 + .../video/tex-2d-rgb16f-rgb-half_float.html | 59 + .../video/tex-2d-rgb32f-rgb-float.html | 59 + .../tex-2d-rgb565-rgb-unsigned_byte.html | 59 + ...ex-2d-rgb565-rgb-unsigned_short_5_6_5.html | 59 + .../tex-2d-rgb5_a1-rgba-unsigned_byte.html | 59 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 59 + .../video/tex-2d-rgb8-rgb-unsigned_byte.html | 59 + ...x-2d-rgb8ui-rgb_integer-unsigned_byte.html | 59 + .../video/tex-2d-rgb9_e5-rgb-float.html | 59 + .../video/tex-2d-rgb9_e5-rgb-half_float.html | 59 + .../video/tex-2d-rgba16f-rgba-float.html | 59 + .../video/tex-2d-rgba16f-rgba-half_float.html | 59 + .../video/tex-2d-rgba32f-rgba-float.html | 59 + .../tex-2d-rgba4-rgba-unsigned_byte.html | 59 + ...-2d-rgba4-rgba-unsigned_short_4_4_4_4.html | 59 + .../tex-2d-rgba8-rgba-unsigned_byte.html | 59 + ...2d-rgba8ui-rgba_integer-unsigned_byte.html | 59 + .../video/tex-2d-srgb8-rgb-unsigned_byte.html | 59 + ...ex-2d-srgb8_alpha8-rgba-unsigned_byte.html | 59 + .../tex-3d-r11f_g11f_b10f-rgb-float.html | 59 + .../tex-3d-r11f_g11f_b10f-rgb-half_float.html | 59 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 59 + .../textures/video/tex-3d-r16f-red-float.html | 59 + .../video/tex-3d-r16f-red-half_float.html | 59 + .../textures/video/tex-3d-r32f-red-float.html | 59 + .../video/tex-3d-r8-red-unsigned_byte.html | 59 + ...tex-3d-r8ui-red_integer-unsigned_byte.html | 59 + .../textures/video/tex-3d-rg16f-rg-float.html | 59 + .../video/tex-3d-rg16f-rg-half_float.html | 59 + .../textures/video/tex-3d-rg32f-rg-float.html | 59 + .../video/tex-3d-rg8-rg-unsigned_byte.html | 59 + ...tex-3d-rg8ui-rg_integer-unsigned_byte.html | 59 + .../video/tex-3d-rgb16f-rgb-float.html | 59 + .../video/tex-3d-rgb16f-rgb-half_float.html | 59 + .../video/tex-3d-rgb32f-rgb-float.html | 59 + .../tex-3d-rgb565-rgb-unsigned_byte.html | 59 + ...ex-3d-rgb565-rgb-unsigned_short_5_6_5.html | 59 + .../tex-3d-rgb5_a1-rgba-unsigned_byte.html | 59 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 59 + .../video/tex-3d-rgb8-rgb-unsigned_byte.html | 59 + ...x-3d-rgb8ui-rgb_integer-unsigned_byte.html | 59 + .../video/tex-3d-rgb9_e5-rgb-float.html | 59 + .../video/tex-3d-rgb9_e5-rgb-half_float.html | 59 + .../video/tex-3d-rgba16f-rgba-float.html | 59 + .../video/tex-3d-rgba16f-rgba-half_float.html | 59 + .../video/tex-3d-rgba32f-rgba-float.html | 59 + .../tex-3d-rgba4-rgba-unsigned_byte.html | 59 + ...-3d-rgba4-rgba-unsigned_short_4_4_4_4.html | 59 + .../tex-3d-rgba8-rgba-unsigned_byte.html | 59 + ...3d-rgba8ui-rgba_integer-unsigned_byte.html | 59 + .../video/tex-3d-srgb8-rgb-unsigned_byte.html | 59 + ...ex-3d-srgb8_alpha8-rgba-unsigned_byte.html | 59 + .../textures/webgl_canvas/00_test_list.txt | 66 + .../tex-2d-r11f_g11f_b10f-rgb-float.html | 59 + .../tex-2d-r11f_g11f_b10f-rgb-half_float.html | 59 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 59 + .../webgl_canvas/tex-2d-r16f-red-float.html | 59 + .../tex-2d-r16f-red-half_float.html | 59 + .../webgl_canvas/tex-2d-r32f-red-float.html | 59 + .../tex-2d-r8-red-unsigned_byte.html | 59 + ...tex-2d-r8ui-red_integer-unsigned_byte.html | 59 + .../webgl_canvas/tex-2d-rg16f-rg-float.html | 59 + .../tex-2d-rg16f-rg-half_float.html | 59 + .../webgl_canvas/tex-2d-rg32f-rg-float.html | 59 + .../tex-2d-rg8-rg-unsigned_byte.html | 59 + ...tex-2d-rg8ui-rg_integer-unsigned_byte.html | 59 + .../webgl_canvas/tex-2d-rgb16f-rgb-float.html | 59 + .../tex-2d-rgb16f-rgb-half_float.html | 59 + .../webgl_canvas/tex-2d-rgb32f-rgb-float.html | 59 + .../tex-2d-rgb565-rgb-unsigned_byte.html | 59 + ...ex-2d-rgb565-rgb-unsigned_short_5_6_5.html | 59 + .../tex-2d-rgb5_a1-rgba-unsigned_byte.html | 59 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 59 + .../tex-2d-rgb8-rgb-unsigned_byte.html | 59 + ...x-2d-rgb8ui-rgb_integer-unsigned_byte.html | 59 + .../tex-2d-rgba16f-rgba-float.html | 59 + .../tex-2d-rgba16f-rgba-half_float.html | 59 + .../tex-2d-rgba32f-rgba-float.html | 59 + .../tex-2d-rgba4-rgba-unsigned_byte.html | 59 + ...-2d-rgba4-rgba-unsigned_short_4_4_4_4.html | 59 + .../tex-2d-rgba8-rgba-unsigned_byte.html | 59 + ...2d-rgba8ui-rgba_integer-unsigned_byte.html | 59 + .../tex-2d-srgb8-rgb-unsigned_byte.html | 59 + ...ex-2d-srgb8_alpha8-rgba-unsigned_byte.html | 59 + .../tex-3d-r11f_g11f_b10f-rgb-float.html | 59 + .../tex-3d-r11f_g11f_b10f-rgb-half_float.html | 59 + ...b10f-rgb-unsigned_int_10f_11f_11f_rev.html | 59 + .../webgl_canvas/tex-3d-r16f-red-float.html | 59 + .../tex-3d-r16f-red-half_float.html | 59 + .../webgl_canvas/tex-3d-r32f-red-float.html | 59 + .../tex-3d-r8-red-unsigned_byte.html | 59 + ...tex-3d-r8ui-red_integer-unsigned_byte.html | 59 + .../webgl_canvas/tex-3d-rg16f-rg-float.html | 59 + .../tex-3d-rg16f-rg-half_float.html | 59 + .../webgl_canvas/tex-3d-rg32f-rg-float.html | 59 + .../tex-3d-rg8-rg-unsigned_byte.html | 59 + ...tex-3d-rg8ui-rg_integer-unsigned_byte.html | 59 + .../webgl_canvas/tex-3d-rgb16f-rgb-float.html | 59 + .../tex-3d-rgb16f-rgb-half_float.html | 59 + .../webgl_canvas/tex-3d-rgb32f-rgb-float.html | 59 + .../tex-3d-rgb565-rgb-unsigned_byte.html | 59 + ...ex-3d-rgb565-rgb-unsigned_short_5_6_5.html | 59 + .../tex-3d-rgb5_a1-rgba-unsigned_byte.html | 59 + ...d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html | 59 + .../tex-3d-rgb8-rgb-unsigned_byte.html | 59 + ...x-3d-rgb8ui-rgb_integer-unsigned_byte.html | 59 + .../tex-3d-rgba16f-rgba-float.html | 59 + .../tex-3d-rgba16f-rgba-half_float.html | 59 + .../tex-3d-rgba32f-rgba-float.html | 59 + .../tex-3d-rgba4-rgba-unsigned_byte.html | 59 + ...-3d-rgba4-rgba-unsigned_short_4_4_4_4.html | 59 + .../tex-3d-rgba8-rgba-unsigned_byte.html | 59 + ...3d-rgba8ui-rgba_integer-unsigned_byte.html | 59 + .../tex-3d-srgb8-rgb-unsigned_byte.html | 59 + ...ex-3d-srgb8_alpha8-rgba-unsigned_byte.html | 59 + .../transform_feedback/00_test_list.txt | 3 + .../transform_feedback.html | 456 + .../two-unreferenced-varyings.html | 159 + .../unwritten-output-defaults-to-zero.html | 156 + .../vertex_arrays/00_test_list.txt | 1 + .../vertex_arrays/vertex-array-object.html | 605 + .../conformance-2.0.0/deqp/00_test_list.txt | 7 + .../webgl/conformance-2.0.0/deqp/LICENSE | 202 + .../webgl/conformance-2.0.0/deqp/README.md | 21 + .../webgl/conformance-2.0.0/deqp/build.py | 283 + .../webgl/conformance-2.0.0/deqp/compiler.jar | Bin 0 -> 6220019 bytes .../deqp/compiler_additional_extern.js | 111 + .../deqp/data/gles2/shaders/00_test_list.txt | 15 + .../deqp/data/gles2/shaders/conditionals.html | 38 + .../deqp/data/gles2/shaders/conditionals.test | 333 + .../gles2/shaders/constant_expressions.html | 38 + .../gles2/shaders/constant_expressions.test | 288 + .../deqp/data/gles2/shaders/constants.html | 38 + .../deqp/data/gles2/shaders/constants.test | 662 + .../deqp/data/gles2/shaders/conversions.html | 38 + .../deqp/data/gles2/shaders/conversions.test | 5930 +++++++ .../deqp/data/gles2/shaders/declarations.html | 38 + .../deqp/data/gles2/shaders/declarations.test | 140 + .../deqp/data/gles2/shaders/fragdata.html | 38 + .../deqp/data/gles2/shaders/fragdata.test | 76 + .../deqp/data/gles2/shaders/functions.html | 38 + .../deqp/data/gles2/shaders/functions.test | 3475 ++++ .../shaders/invalid_texture_functions.html | 38 + .../shaders/invalid_texture_functions.test | 90 + .../deqp/data/gles2/shaders/keywords.html | 38 + .../deqp/data/gles2/shaders/keywords.test | 1613 ++ .../deqp/data/gles2/shaders/linkage.html | 38 + .../deqp/data/gles2/shaders/linkage.test | 1715 ++ .../deqp/data/gles2/shaders/preprocessor.html | 38 + .../deqp/data/gles2/shaders/preprocessor.test | 4287 +++++ .../gles2/shaders/qualification_order.html | 38 + .../gles2/shaders/qualification_order.test | 785 + .../gles2/shaders/reserved_operators.html | 38 + .../gles2/shaders/reserved_operators.test | 250 + .../deqp/data/gles2/shaders/scoping.html | 38 + .../deqp/data/gles2/shaders/scoping.test | 823 + .../deqp/data/gles2/shaders/swizzles.html | 38 + .../deqp/data/gles2/shaders/swizzles.test | 6811 ++++++++ .../deqp/data/gles3/shaders/00_test_list.txt | 17 + .../deqp/data/gles3/shaders/arrays.html | 38 + .../deqp/data/gles3/shaders/arrays.test | 1962 +++ .../deqp/data/gles3/shaders/conditionals.html | 38 + .../deqp/data/gles3/shaders/conditionals.test | 381 + .../gles3/shaders/constant_expressions.html | 38 + .../gles3/shaders/constant_expressions.test | 483 + .../deqp/data/gles3/shaders/constants.html | 38 + .../deqp/data/gles3/shaders/constants.test | 1153 ++ .../deqp/data/gles3/shaders/conversions.html | 38 + .../deqp/data/gles3/shaders/conversions.test | 14246 ++++++++++++++++ .../deqp/data/gles3/shaders/declarations.html | 38 + .../deqp/data/gles3/shaders/declarations.test | 591 + .../deqp/data/gles3/shaders/fragdata.html | 38 + .../deqp/data/gles3/shaders/fragdata.test | 76 + .../deqp/data/gles3/shaders/functions.html | 38 + .../deqp/data/gles3/shaders/functions.test | 4345 +++++ .../shaders/invalid_texture_functions.html | 38 + .../shaders/invalid_texture_functions.test | 1143 ++ .../deqp/data/gles3/shaders/keywords.html | 38 + .../deqp/data/gles3/shaders/keywords.test | 3219 ++++ .../deqp/data/gles3/shaders/linkage.html | 38 + .../deqp/data/gles3/shaders/linkage.test | 3833 +++++ .../deqp/data/gles3/shaders/negative.html | 38 + .../deqp/data/gles3/shaders/negative.test | 100 + .../deqp/data/gles3/shaders/preprocessor.html | 38 + .../deqp/data/gles3/shaders/preprocessor.test | 5256 ++++++ .../gles3/shaders/qualification_order.html | 38 + .../gles3/shaders/qualification_order.test | 2714 +++ .../deqp/data/gles3/shaders/scoping.html | 38 + .../deqp/data/gles3/shaders/scoping.test | 901 + .../deqp/data/gles3/shaders/switch.html | 38 + .../deqp/data/gles3/shaders/switch.test | 633 + .../deqp/data/gles3/shaders/swizzles.html | 38 + .../deqp/data/gles3/shaders/swizzles.test | 7459 ++++++++ .../webgl/conformance-2.0.0/deqp/deqp-deps.js | 141 + .../common/tcuBilinearImageCompare.js | 272 + .../framework/common/tcuCompressedTexture.js | 967 ++ .../deqp/framework/common/tcuFloat.js | 809 + .../deqp/framework/common/tcuFloatFormat.js | 349 + .../framework/common/tcuFuzzyImageCompare.js | 338 + .../deqp/framework/common/tcuImageCompare.js | 757 + .../deqp/framework/common/tcuInterval.js | 609 + .../deqp/framework/common/tcuLogImage.js | 163 + .../deqp/framework/common/tcuMatrix.js | 354 + .../deqp/framework/common/tcuMatrixUtil.js | 70 + .../deqp/framework/common/tcuPixelFormat.js | 79 + .../deqp/framework/common/tcuRGBA.js | 279 + .../deqp/framework/common/tcuSkipList.js | 382 + .../framework/common/tcuStringTemplate.js | 42 + .../deqp/framework/common/tcuSurface.js | 184 + .../deqp/framework/common/tcuTestCase.js | 484 + .../framework/common/tcuTexCompareVerifier.js | 1356 ++ .../framework/common/tcuTexLookupVerifier.js | 2225 +++ .../framework/common/tcuTexVerifierUtil.js | 265 + .../deqp/framework/common/tcuTexture.js | 3636 ++++ .../deqp/framework/common/tcuTextureUtil.js | 725 + .../deqp/framework/delibs/debase/deMath.js | 1061 ++ .../deqp/framework/delibs/debase/deRandom.js | 260 + .../deqp/framework/delibs/debase/deString.js | 111 + .../deqp/framework/delibs/debase/deUtil.js | 90 + .../deqp/framework/opengl/gluDrawUtil.js | 510 + .../deqp/framework/opengl/gluObjectWrapper.js | 117 + .../deqp/framework/opengl/gluPixelTransfer.js | 55 + .../deqp/framework/opengl/gluShaderProgram.js | 488 + .../deqp/framework/opengl/gluShaderUtil.js | 795 + .../deqp/framework/opengl/gluStrUtil.js | 166 + .../deqp/framework/opengl/gluTexture.js | 380 + .../deqp/framework/opengl/gluTextureUtil.js | 1025 ++ .../deqp/framework/opengl/gluVarType.js | 814 + .../deqp/framework/opengl/gluVarTypeUtil.js | 693 + .../opengl/simplereference/00_test_list.txt | 1 + .../simplereference/referencecontext.html | 34 + .../opengl/simplereference/sglrGLContext.js | 231 + .../simplereference/sglrReferenceContext.js | 4986 ++++++ .../sglrReferenceContextTest.js | 834 + .../simplereference/sglrReferenceUtils.js | 317 + .../simplereference/sglrShaderProgram.js | 336 + .../framework/referencerenderer/rrDefs.js | 72 + .../referencerenderer/rrFragmentOperations.js | 583 + .../referencerenderer/rrGenericVector.js | 54 + .../rrMultisamplePixelBufferAccess.js | 190 + .../referencerenderer/rrRenderState.js | 323 + .../framework/referencerenderer/rrRenderer.js | 1274 ++ .../framework/referencerenderer/rrShaders.js | 123 + .../referencerenderer/rrShadingContext.js | 113 + .../framework/referencerenderer/rrUtil.js | 115 + .../referencerenderer/rrVertexAttrib.js | 641 + .../referencerenderer/rrVertexPacket.js | 101 + .../deqp/functional/gles3/00_test_list.txt | 76 + .../deqp/functional/gles3/attriblocation.html | 26 + .../functional/gles3/booleanstatequery.html | 26 + .../deqp/functional/gles3/buffercopy.html | 26 + .../functional/gles3/bufferobjectquery.html | 26 + .../gles3/builtinprecision/00_test_list.txt | 55 + .../gles3/builtinprecision/abs.html | 34 + .../gles3/builtinprecision/acos.html | 34 + .../gles3/builtinprecision/acosh.html | 34 + .../gles3/builtinprecision/add.html | 34 + .../gles3/builtinprecision/asin.html | 34 + .../gles3/builtinprecision/asinh.html | 34 + .../gles3/builtinprecision/atan.html | 34 + .../gles3/builtinprecision/atan2.html | 34 + .../gles3/builtinprecision/atanh.html | 34 + .../builtinprecision_test_generator.py | 160 + .../gles3/builtinprecision/ceil.html | 34 + .../gles3/builtinprecision/clamp.html | 34 + .../gles3/builtinprecision/cos.html | 34 + .../gles3/builtinprecision/cosh.html | 34 + .../gles3/builtinprecision/cross.html | 34 + .../gles3/builtinprecision/degrees.html | 34 + .../gles3/builtinprecision/determinant.html | 34 + .../gles3/builtinprecision/distance.html | 34 + .../gles3/builtinprecision/div.html | 34 + .../gles3/builtinprecision/dot.html | 34 + .../gles3/builtinprecision/exp.html | 34 + .../gles3/builtinprecision/exp2.html | 34 + .../gles3/builtinprecision/faceforward.html | 34 + .../gles3/builtinprecision/floor.html | 34 + .../gles3/builtinprecision/fract.html | 34 + .../gles3/builtinprecision/inverse.html | 34 + .../gles3/builtinprecision/inversesqrt.html | 34 + .../gles3/builtinprecision/length.html | 34 + .../gles3/builtinprecision/log.html | 34 + .../gles3/builtinprecision/log2.html | 34 + .../builtinprecision/matrixcompmult.html | 34 + .../gles3/builtinprecision/max.html | 34 + .../gles3/builtinprecision/min.html | 34 + .../gles3/builtinprecision/mix.html | 34 + .../gles3/builtinprecision/mod.html | 34 + .../gles3/builtinprecision/modf.html | 34 + .../gles3/builtinprecision/mul.html | 34 + .../gles3/builtinprecision/normalize.html | 34 + .../gles3/builtinprecision/outerproduct.html | 34 + .../gles3/builtinprecision/pow.html | 34 + .../gles3/builtinprecision/radians.html | 34 + .../gles3/builtinprecision/reflect.html | 34 + .../gles3/builtinprecision/refract.html | 34 + .../gles3/builtinprecision/round.html | 34 + .../gles3/builtinprecision/roundeven.html | 34 + .../gles3/builtinprecision/sign.html | 34 + .../gles3/builtinprecision/sin.html | 34 + .../gles3/builtinprecision/sinh.html | 34 + .../gles3/builtinprecision/smoothstep.html | 34 + .../gles3/builtinprecision/sqrt.html | 34 + .../gles3/builtinprecision/step.html | 34 + .../gles3/builtinprecision/sub.html | 34 + .../gles3/builtinprecision/tan.html | 34 + .../gles3/builtinprecision/tanh.html | 34 + .../gles3/builtinprecision/transpose.html | 34 + .../gles3/builtinprecision/trunc.html | 34 + .../deqp/functional/gles3/clipping.html | 26 + .../gles3/defaultvertexattribute.html | 26 + .../functional/gles3/draw/00_test_list.txt | 7 + .../functional/gles3/draw/draw_arrays.html | 33 + .../gles3/draw/draw_arrays_instanced.html | 33 + .../functional/gles3/draw/draw_elements.html | 33 + .../gles3/draw/draw_elements_instanced.html | 33 + .../gles3/draw/draw_range_elements.html | 33 + .../gles3/draw/draw_test_generator.py | 106 + .../functional/gles3/draw/instancing.html | 33 + .../deqp/functional/gles3/draw/random.html | 33 + .../deqp/functional/gles3/es3fApiCase.js | 161 + .../gles3/es3fAttribLocationTests.js | 267 + .../functional/gles3/es3fBooleanStateQuery.js | 372 + .../functional/gles3/es3fBufferCopyTests.js | 355 + .../gles3/es3fBufferObjectQueryTests.js | 177 + .../gles3/es3fBuiltinPrecisionTests.js | 87 + .../functional/gles3/es3fClippingTests.js | 406 + .../gles3/es3fDefaultVertexAttributeTests.js | 546 + .../deqp/functional/gles3/es3fDrawTests.js | 1155 ++ .../gles3/es3fFboColorbufferTests.js | 1041 ++ .../gles3/es3fFboCompletenessTests.js | 567 + .../gles3/es3fFboDepthbufferTests.js | 385 + .../gles3/es3fFboInvalidateTests.js | 1471 ++ .../gles3/es3fFboMultisampleTests.js | 377 + .../functional/gles3/es3fFboRenderTest.js | 2389 +++ .../gles3/es3fFboStateQueryTests.js | 796 + .../gles3/es3fFboStencilbufferTests.js | 325 + .../deqp/functional/gles3/es3fFboTestCase.js | 483 + .../deqp/functional/gles3/es3fFboTestUtil.js | 1324 ++ .../gles3/es3fFloatStateQueryTests.js | 431 + .../functional/gles3/es3fFragDepthTests.js | 593 + .../gles3/es3fFragmentOutputTests.js | 1398 ++ .../gles3/es3fFramebufferBlitTests.js | 1261 ++ .../gles3/es3fIndexedStateQueryTests.js | 409 + .../gles3/es3fInstancedRenderingTests.js | 711 + .../gles3/es3fIntegerStateQueryTests.js | 2049 +++ .../gles3/es3fInternalFormatQueryTests.js | 173 + .../functional/gles3/es3fLifetimeTests.js | 476 + .../functional/gles3/es3fMultisampleTests.js | 1737 ++ .../gles3/es3fNegativeBufferApiTests.js | 1104 ++ .../gles3/es3fNegativeFragmentApiTests.js | 339 + .../gles3/es3fNegativeShaderApiTests.js | 1195 ++ .../gles3/es3fNegativeStateApiTests.js | 927 + .../gles3/es3fNegativeTextureApiTests.js | 3001 ++++ .../gles3/es3fNegativeVertexArrayApiTests.js | 914 + .../gles3/es3fOcclusionQueryTests.js | 511 + .../gles3/es3fPixelBufferObjectTest.js | 577 + .../gles3/es3fPrimitiveRestartTests.js | 704 + .../gles3/es3fRasterizerDiscardTests.js | 485 + .../gles3/es3fRboStateQueryTests.js | 308 + .../functional/gles3/es3fReadPixelTests.js | 517 + .../gles3/es3fSamplerObjectTests.js | 313 + .../gles3/es3fSamplerStateQueryTests.js | 205 + .../functional/gles3/es3fShaderApiTests.js | 650 + .../gles3/es3fShaderBuiltinVarTests.js | 1109 ++ .../gles3/es3fShaderCommonFunctionTests.js | 1913 +++ .../gles3/es3fShaderDerivateTests.js | 1696 ++ .../gles3/es3fShaderIndexingTests.js | 1278 ++ .../functional/gles3/es3fShaderLoopTests.js | 1251 ++ .../functional/gles3/es3fShaderMatrixTest.js | 1852 ++ .../gles3/es3fShaderOperatorTests.js | 3219 ++++ .../gles3/es3fShaderPackingFunctionTests.js | 791 + .../gles3/es3fShaderPrecisionTests.js | 941 + .../gles3/es3fShaderStateQueryTests.js | 2205 +++ .../functional/gles3/es3fShaderStructTests.js | 1957 +++ .../functional/gles3/es3fShaderSwitchTests.js | 492 + .../gles3/es3fShaderTextureFunctionTests.js | 2698 +++ .../functional/gles3/es3fStringQueryTests.js | 111 + .../deqp/functional/gles3/es3fSyncTests.js | 330 + .../gles3/es3fTextureFilteringTests.js | 2269 +++ .../gles3/es3fTextureFormatTests.js | 1185 ++ .../gles3/es3fTextureShadowTests.js | 898 + .../gles3/es3fTextureSpecificationTests.js | 7456 ++++++++ .../functional/gles3/es3fTextureStateQuery.js | 376 + .../functional/gles3/es3fTextureWrapTests.js | 434 + .../gles3/es3fTransformFeedbackTests.js | 1914 +++ .../functional/gles3/es3fUniformApiTests.js | 3203 ++++ .../functional/gles3/es3fUniformBlockTests.js | 748 + .../gles3/es3fVertexArrayObjectTests.js | 875 + .../functional/gles3/es3fVertexArrayTests.js | 1103 ++ .../gles3/fbocolorbuffer/00_test_list.txt | 26 + .../gles3/fbocolorbuffer/blend.html | 34 + .../gles3/fbocolorbuffer/clear.html | 34 + .../fbocolorbuffer_test_generator.py | 133 + .../gles3/fbocolorbuffer/tex2d_00.html | 34 + .../gles3/fbocolorbuffer/tex2d_01.html | 34 + .../gles3/fbocolorbuffer/tex2d_02.html | 34 + .../gles3/fbocolorbuffer/tex2d_03.html | 34 + .../gles3/fbocolorbuffer/tex2d_04.html | 34 + .../gles3/fbocolorbuffer/tex2d_05.html | 34 + .../gles3/fbocolorbuffer/tex2darray_00.html | 34 + .../gles3/fbocolorbuffer/tex2darray_01.html | 34 + .../gles3/fbocolorbuffer/tex2darray_02.html | 34 + .../gles3/fbocolorbuffer/tex2darray_03.html | 34 + .../gles3/fbocolorbuffer/tex2darray_04.html | 34 + .../gles3/fbocolorbuffer/tex2darray_05.html | 34 + .../gles3/fbocolorbuffer/tex3d_00.html | 34 + .../gles3/fbocolorbuffer/tex3d_01.html | 34 + .../gles3/fbocolorbuffer/tex3d_02.html | 34 + .../gles3/fbocolorbuffer/tex3d_03.html | 34 + .../gles3/fbocolorbuffer/tex3d_04.html | 34 + .../gles3/fbocolorbuffer/tex3d_05.html | 34 + .../gles3/fbocolorbuffer/texcube_00.html | 34 + .../gles3/fbocolorbuffer/texcube_01.html | 34 + .../gles3/fbocolorbuffer/texcube_02.html | 34 + .../gles3/fbocolorbuffer/texcube_03.html | 34 + .../gles3/fbocolorbuffer/texcube_04.html | 34 + .../gles3/fbocolorbuffer/texcube_05.html | 34 + .../functional/gles3/fbocompleteness.html | 34 + .../deqp/functional/gles3/fbodepthbuffer.html | 34 + .../gles3/fboinvalidate/00_test_list.txt | 7 + .../gles3/fboinvalidate/default.html | 34 + .../fboinvalidate_test_generator.py | 131 + .../gles3/fboinvalidate/format_00.html | 34 + .../gles3/fboinvalidate/format_01.html | 34 + .../gles3/fboinvalidate/format_02.html | 34 + .../functional/gles3/fboinvalidate/sub.html | 34 + .../gles3/fboinvalidate/target.html | 34 + .../functional/gles3/fboinvalidate/whole.html | 34 + .../gles3/fbomultisample.2_samples.html | 26 + .../gles3/fbomultisample.4_samples.html | 26 + .../gles3/fbomultisample.8_samples.html | 26 + .../gles3/fborender/00_test_list.txt | 18 + .../fborender/fborender_test_generator.py | 134 + .../gles3/fborender/recreate_color_00.html | 33 + .../gles3/fborender/recreate_color_01.html | 33 + .../gles3/fborender/recreate_color_02.html | 33 + .../gles3/fborender/recreate_color_03.html | 33 + .../gles3/fborender/recreate_color_04.html | 33 + .../gles3/fborender/recreate_color_05.html | 33 + .../gles3/fborender/recreate_color_06.html | 33 + .../fborender/recreate_depth_stencil.html | 33 + .../functional/gles3/fborender/resize_00.html | 33 + .../functional/gles3/fborender/resize_01.html | 33 + .../functional/gles3/fborender/resize_02.html | 33 + .../functional/gles3/fborender/resize_03.html | 33 + .../fborender/shared_colorbuffer_00.html | 33 + .../fborender/shared_colorbuffer_01.html | 33 + .../fborender/shared_colorbuffer_02.html | 33 + .../fborender/shared_colorbuffer_clear.html | 33 + .../gles3/fborender/shared_depth_stencil.html | 33 + .../gles3/fborender/stencil_clear.html | 33 + .../deqp/functional/gles3/fbostatequery.html | 26 + .../functional/gles3/fbostencilbuffer.html | 26 + .../functional/gles3/floatstatequery.html | 26 + .../deqp/functional/gles3/fragdepth.html | 26 + .../gles3/fragmentoutput/00_test_list.txt | 11 + .../gles3/fragmentoutput/array.fixed.html | 33 + .../gles3/fragmentoutput/array.float.html | 33 + .../gles3/fragmentoutput/array.int.html | 33 + .../gles3/fragmentoutput/array.uint.html | 33 + .../gles3/fragmentoutput/basic.fixed.html | 33 + .../gles3/fragmentoutput/basic.float.html | 33 + .../gles3/fragmentoutput/basic.int.html | 33 + .../gles3/fragmentoutput/basic.uint.html | 33 + .../fragmentoutput_test_generator.py | 110 + .../gles3/fragmentoutput/random_00.html | 33 + .../gles3/fragmentoutput/random_01.html | 33 + .../gles3/fragmentoutput/random_02.html | 33 + .../gles3/framebufferblit/00_test_list.txt | 50 + .../gles3/framebufferblit/conversion_00.html | 33 + .../gles3/framebufferblit/conversion_01.html | 33 + .../gles3/framebufferblit/conversion_02.html | 33 + .../gles3/framebufferblit/conversion_03.html | 33 + .../gles3/framebufferblit/conversion_04.html | 33 + .../gles3/framebufferblit/conversion_05.html | 33 + .../gles3/framebufferblit/conversion_06.html | 33 + .../gles3/framebufferblit/conversion_07.html | 33 + .../gles3/framebufferblit/conversion_08.html | 33 + .../gles3/framebufferblit/conversion_09.html | 33 + .../gles3/framebufferblit/conversion_10.html | 33 + .../gles3/framebufferblit/conversion_11.html | 33 + .../gles3/framebufferblit/conversion_12.html | 33 + .../gles3/framebufferblit/conversion_13.html | 33 + .../gles3/framebufferblit/conversion_14.html | 33 + .../gles3/framebufferblit/conversion_15.html | 33 + .../gles3/framebufferblit/conversion_16.html | 33 + .../gles3/framebufferblit/conversion_17.html | 33 + .../gles3/framebufferblit/conversion_18.html | 33 + .../gles3/framebufferblit/conversion_19.html | 33 + .../gles3/framebufferblit/conversion_20.html | 33 + .../gles3/framebufferblit/conversion_21.html | 33 + .../gles3/framebufferblit/conversion_22.html | 33 + .../gles3/framebufferblit/conversion_23.html | 33 + .../gles3/framebufferblit/conversion_24.html | 33 + .../gles3/framebufferblit/conversion_25.html | 33 + .../gles3/framebufferblit/conversion_26.html | 33 + .../gles3/framebufferblit/conversion_27.html | 33 + .../gles3/framebufferblit/conversion_28.html | 33 + .../gles3/framebufferblit/conversion_29.html | 33 + .../gles3/framebufferblit/conversion_30.html | 33 + .../gles3/framebufferblit/conversion_31.html | 33 + .../gles3/framebufferblit/conversion_32.html | 33 + .../gles3/framebufferblit/conversion_33.html | 33 + .../gles3/framebufferblit/conversion_34.html | 33 + .../default_framebuffer_00.html | 33 + .../default_framebuffer_01.html | 33 + .../default_framebuffer_02.html | 33 + .../default_framebuffer_03.html | 33 + .../default_framebuffer_04.html | 33 + .../default_framebuffer_05.html | 33 + .../default_framebuffer_06.html | 33 + .../gles3/framebufferblit/depth_stencil.html | 33 + .../frambufferblit_test_generator.py | 128 + .../gles3/framebufferblit/rect_00.html | 33 + .../gles3/framebufferblit/rect_01.html | 33 + .../gles3/framebufferblit/rect_02.html | 33 + .../gles3/framebufferblit/rect_03.html | 33 + .../gles3/framebufferblit/rect_04.html | 33 + .../gles3/framebufferblit/rect_05.html | 33 + .../gles3/framebufferblit/rect_06.html | 33 + .../functional/gles3/indexedstatequery.html | 26 + .../functional/gles3/instancedrendering.html | 26 + .../functional/gles3/integerstatequery.html | 26 + .../functional/gles3/internalformatquery.html | 26 + .../deqp/functional/gles3/lifetime.html | 36 + .../deqp/functional/gles3/multisample.html | 26 + .../functional/gles3/negativebufferapi.html | 32 + .../functional/gles3/negativefragmentapi.html | 25 + .../functional/gles3/negativeshaderapi.html | 26 + .../functional/gles3/negativestateapi.html | 25 + .../functional/gles3/negativetextureapi.html | 32 + .../gles3/negativevertexarrayapi.html | 32 + .../gles3/occlusionquery_conservative.html | 28 + .../gles3/occlusionquery_strict.html | 28 + .../functional/gles3/pixelbufferobject.html | 26 + .../functional/gles3/primitiverestart/00.html | 33 + .../gles3/primitiverestart/00_test_list.txt | 8 + .../functional/gles3/primitiverestart/01.html | 33 + .../functional/gles3/primitiverestart/02.html | 33 + .../functional/gles3/primitiverestart/03.html | 33 + .../functional/gles3/primitiverestart/04.html | 33 + .../functional/gles3/primitiverestart/05.html | 33 + .../functional/gles3/primitiverestart/06.html | 33 + .../functional/gles3/primitiverestart/07.html | 33 + .../primitiverestart_test_generator.py | 101 + .../functional/gles3/rasterizerdiscard.html | 26 + .../deqp/functional/gles3/rbostatequery.html | 26 + .../deqp/functional/gles3/readpixel.html | 28 + .../deqp/functional/gles3/samplerobject.html | 26 + .../functional/gles3/samplerstatequery.html | 26 + .../deqp/functional/gles3/shaderapi.html | 26 + .../functional/gles3/shaderbuiltinvar.html | 26 + .../gles3/shadercommonfunction.html | 26 + .../functional/gles3/shaderderivate_dfdx.html | 26 + .../functional/gles3/shaderderivate_dfdy.html | 26 + .../gles3/shaderderivate_fwidth.html | 26 + .../gles3/shaderindexing/00_test_list.txt | 9 + .../gles3/shaderindexing/mat_00.html | 33 + .../gles3/shaderindexing/mat_01.html | 33 + .../gles3/shaderindexing/mat_02.html | 33 + .../shaderindexing_test_generator.py | 114 + .../functional/gles3/shaderindexing/tmp.html | 33 + .../gles3/shaderindexing/uniform.html | 33 + .../gles3/shaderindexing/varying.html | 33 + .../functional/gles3/shaderindexing/vec2.html | 33 + .../functional/gles3/shaderindexing/vec3.html | 33 + .../functional/gles3/shaderindexing/vec4.html | 33 + .../functional/gles3/shaderloop_do_while.html | 26 + .../deqp/functional/gles3/shaderloop_for.html | 26 + .../functional/gles3/shaderloop_while.html | 26 + .../gles3/shadermatrix/00_test_list.txt | 33 + .../gles3/shadermatrix/add_assign.html | 33 + .../gles3/shadermatrix/add_const.html | 33 + .../gles3/shadermatrix/add_dynamic.html | 33 + .../gles3/shadermatrix/add_uniform.html | 33 + .../gles3/shadermatrix/determinant.html | 33 + .../gles3/shadermatrix/div_assign.html | 33 + .../gles3/shadermatrix/div_const.html | 33 + .../gles3/shadermatrix/div_dynamic.html | 33 + .../gles3/shadermatrix/div_uniform.html | 33 + .../gles3/shadermatrix/inverse.html | 33 + .../gles3/shadermatrix/matrixcompmult.html | 33 + .../gles3/shadermatrix/mul_assign.html | 33 + .../gles3/shadermatrix/mul_const_highp.html | 33 + .../gles3/shadermatrix/mul_const_lowp.html | 33 + .../gles3/shadermatrix/mul_const_mediump.html | 33 + .../gles3/shadermatrix/mul_dynamic_highp.html | 33 + .../gles3/shadermatrix/mul_dynamic_lowp.html | 33 + .../shadermatrix/mul_dynamic_mediump.html | 33 + .../gles3/shadermatrix/mul_uniform_highp.html | 33 + .../gles3/shadermatrix/mul_uniform_lowp.html | 33 + .../shadermatrix/mul_uniform_mediump.html | 33 + .../gles3/shadermatrix/negation.html | 33 + .../gles3/shadermatrix/outerproduct.html | 33 + .../gles3/shadermatrix/post_decrement.html | 33 + .../gles3/shadermatrix/post_increment.html | 33 + .../gles3/shadermatrix/pre_decrement.html | 33 + .../gles3/shadermatrix/pre_increment.html | 33 + .../shadermatrix_test_generator.py | 138 + .../gles3/shadermatrix/sub_assign.html | 33 + .../gles3/shadermatrix/sub_const.html | 33 + .../gles3/shadermatrix/sub_dynamic.html | 33 + .../gles3/shadermatrix/sub_uniform.html | 33 + .../gles3/shadermatrix/transpose.html | 33 + .../gles3/shadermatrix/unary_addition.html | 33 + .../gles3/shaderoperator/00_test_list.txt | 31 + .../angle_and_trigonometry_00.html | 35 + .../angle_and_trigonometry_01.html | 35 + .../angle_and_trigonometry_02.html | 35 + .../angle_and_trigonometry_03.html | 35 + .../shaderoperator/binary_operator_00.html | 35 + .../shaderoperator/binary_operator_01.html | 35 + .../shaderoperator/binary_operator_02.html | 35 + .../shaderoperator/binary_operator_03.html | 35 + .../shaderoperator/binary_operator_04.html | 35 + .../shaderoperator/binary_operator_05.html | 35 + .../shaderoperator/binary_operator_06.html | 35 + .../shaderoperator/binary_operator_07.html | 35 + .../shaderoperator/binary_operator_08.html | 35 + .../shaderoperator/binary_operator_09.html | 35 + .../shaderoperator/binary_operator_10.html | 35 + .../shaderoperator/binary_operator_11.html | 35 + .../shaderoperator/binary_operator_12.html | 35 + .../shaderoperator/binary_operator_13.html | 35 + .../shaderoperator/binary_operator_14.html | 35 + .../shaderoperator/binary_operator_15.html | 35 + .../gles3/shaderoperator/bool_compare.html | 35 + .../shaderoperator/common_functions.html | 35 + .../gles3/shaderoperator/exponential.html | 35 + .../gles3/shaderoperator/float_compare.html | 35 + .../gles3/shaderoperator/geometric.html | 35 + .../gles3/shaderoperator/int_compare.html | 35 + .../gles3/shaderoperator/selection.html | 35 + .../gles3/shaderoperator/sequence.html | 35 + .../shaderoperator_test_generator.py | 138 + .../shaderoperator/unary_operator_00.html | 35 + .../shaderoperator/unary_operator_01.html | 35 + .../shaderoperator/unary_operator_02.html | 35 + .../gles3/shaderpackingfunction.html | 28 + .../gles3/shaderprecision_float.html | 26 + .../functional/gles3/shaderprecision_int.html | 26 + .../gles3/shaderprecision_uint.html | 26 + .../functional/gles3/shaderstatequery.html | 33 + .../deqp/functional/gles3/shaderstruct.html | 26 + .../deqp/functional/gles3/shaderswitch.html | 26 + .../shadertexturefunction/00_test_list.txt | 15 + .../shadertexturefunction_test_generator.py | 120 + .../shadertexturefunction/texelfetch.html | 33 + .../texelfetchoffset.html | 33 + .../gles3/shadertexturefunction/texture.html | 33 + .../shadertexturefunction/texturegrad.html | 33 + .../texturegradoffset.html | 33 + .../shadertexturefunction/texturelod.html | 33 + .../texturelodoffset.html | 33 + .../shadertexturefunction/textureoffset.html | 33 + .../shadertexturefunction/textureproj.html | 33 + .../textureprojgrad.html | 33 + .../textureprojgradoffset.html | 33 + .../shadertexturefunction/textureprojlod.html | 33 + .../textureprojlodoffset.html | 33 + .../textureprojoffset.html | 33 + .../shadertexturefunction/texturesize.html | 33 + .../deqp/functional/gles3/stringquery.html | 26 + .../deqp/functional/gles3/sync.html | 34 + .../gles3/texturefiltering/00_test_list.txt | 116 + .../2d_array_combinations_00.html | 33 + .../2d_array_combinations_01.html | 33 + .../2d_array_combinations_02.html | 33 + .../2d_array_combinations_03.html | 33 + .../2d_array_combinations_04.html | 33 + .../2d_array_combinations_05.html | 33 + .../texturefiltering/2d_array_formats_00.html | 33 + .../texturefiltering/2d_array_formats_01.html | 33 + .../texturefiltering/2d_array_formats_02.html | 33 + .../texturefiltering/2d_array_formats_03.html | 33 + .../texturefiltering/2d_array_formats_04.html | 33 + .../texturefiltering/2d_array_formats_05.html | 33 + .../texturefiltering/2d_array_formats_06.html | 33 + .../texturefiltering/2d_array_formats_07.html | 33 + .../texturefiltering/2d_array_formats_08.html | 33 + .../texturefiltering/2d_array_formats_09.html | 33 + .../texturefiltering/2d_array_sizes_00.html | 33 + .../texturefiltering/2d_array_sizes_01.html | 33 + .../texturefiltering/2d_array_sizes_02.html | 33 + .../texturefiltering/2d_array_sizes_03.html | 33 + .../texturefiltering/2d_array_sizes_04.html | 33 + .../texturefiltering/2d_combinations_00.html | 33 + .../texturefiltering/2d_combinations_01.html | 33 + .../texturefiltering/2d_combinations_02.html | 33 + .../texturefiltering/2d_combinations_03.html | 33 + .../texturefiltering/2d_combinations_04.html | 33 + .../texturefiltering/2d_combinations_05.html | 33 + .../gles3/texturefiltering/2d_formats_00.html | 33 + .../gles3/texturefiltering/2d_formats_01.html | 33 + .../gles3/texturefiltering/2d_formats_02.html | 33 + .../gles3/texturefiltering/2d_formats_03.html | 33 + .../gles3/texturefiltering/2d_formats_04.html | 33 + .../gles3/texturefiltering/2d_formats_05.html | 33 + .../gles3/texturefiltering/2d_formats_06.html | 33 + .../gles3/texturefiltering/2d_formats_07.html | 33 + .../gles3/texturefiltering/2d_formats_08.html | 33 + .../gles3/texturefiltering/2d_formats_09.html | 33 + .../gles3/texturefiltering/2d_sizes_00.html | 33 + .../gles3/texturefiltering/2d_sizes_01.html | 33 + .../gles3/texturefiltering/2d_sizes_02.html | 33 + .../gles3/texturefiltering/2d_sizes_03.html | 33 + .../gles3/texturefiltering/2d_sizes_04.html | 33 + .../gles3/texturefiltering/2d_sizes_05.html | 33 + .../texturefiltering/3d_combinations_00.html | 33 + .../texturefiltering/3d_combinations_01.html | 33 + .../texturefiltering/3d_combinations_02.html | 33 + .../texturefiltering/3d_combinations_03.html | 33 + .../texturefiltering/3d_combinations_04.html | 33 + .../texturefiltering/3d_combinations_05.html | 33 + .../texturefiltering/3d_combinations_06.html | 33 + .../texturefiltering/3d_combinations_07.html | 33 + .../texturefiltering/3d_combinations_08.html | 33 + .../texturefiltering/3d_combinations_09.html | 33 + .../texturefiltering/3d_combinations_10.html | 33 + .../texturefiltering/3d_combinations_11.html | 33 + .../texturefiltering/3d_combinations_12.html | 33 + .../texturefiltering/3d_combinations_13.html | 33 + .../texturefiltering/3d_combinations_14.html | 33 + .../texturefiltering/3d_combinations_15.html | 33 + .../texturefiltering/3d_combinations_16.html | 33 + .../texturefiltering/3d_combinations_17.html | 33 + .../texturefiltering/3d_combinations_18.html | 33 + .../texturefiltering/3d_combinations_19.html | 33 + .../texturefiltering/3d_combinations_20.html | 33 + .../texturefiltering/3d_combinations_21.html | 33 + .../texturefiltering/3d_combinations_22.html | 33 + .../texturefiltering/3d_combinations_23.html | 33 + .../texturefiltering/3d_combinations_24.html | 33 + .../texturefiltering/3d_combinations_25.html | 33 + .../texturefiltering/3d_combinations_26.html | 33 + .../texturefiltering/3d_combinations_27.html | 33 + .../texturefiltering/3d_combinations_28.html | 33 + .../texturefiltering/3d_combinations_29.html | 33 + .../texturefiltering/3d_combinations_30.html | 33 + .../texturefiltering/3d_combinations_31.html | 33 + .../texturefiltering/3d_combinations_32.html | 33 + .../texturefiltering/3d_combinations_33.html | 33 + .../texturefiltering/3d_combinations_34.html | 33 + .../texturefiltering/3d_combinations_35.html | 33 + .../gles3/texturefiltering/3d_formats_00.html | 33 + .../gles3/texturefiltering/3d_formats_01.html | 33 + .../gles3/texturefiltering/3d_formats_02.html | 33 + .../gles3/texturefiltering/3d_formats_03.html | 33 + .../gles3/texturefiltering/3d_formats_04.html | 33 + .../gles3/texturefiltering/3d_formats_05.html | 33 + .../gles3/texturefiltering/3d_formats_06.html | 33 + .../gles3/texturefiltering/3d_formats_07.html | 33 + .../gles3/texturefiltering/3d_formats_08.html | 33 + .../gles3/texturefiltering/3d_formats_09.html | 33 + .../gles3/texturefiltering/3d_sizes_00.html | 33 + .../gles3/texturefiltering/3d_sizes_01.html | 33 + .../gles3/texturefiltering/3d_sizes_02.html | 33 + .../gles3/texturefiltering/3d_sizes_03.html | 33 + .../gles3/texturefiltering/3d_sizes_04.html | 33 + .../cube_combinations_00.html | 33 + .../cube_combinations_01.html | 33 + .../cube_combinations_02.html | 33 + .../cube_combinations_03.html | 33 + .../cube_combinations_04.html | 33 + .../cube_combinations_05.html | 33 + .../texturefiltering/cube_formats_00.html | 33 + .../texturefiltering/cube_formats_01.html | 33 + .../texturefiltering/cube_formats_02.html | 33 + .../texturefiltering/cube_formats_03.html | 33 + .../texturefiltering/cube_formats_04.html | 33 + .../texturefiltering/cube_formats_05.html | 33 + .../texturefiltering/cube_formats_06.html | 33 + .../texturefiltering/cube_formats_07.html | 33 + .../texturefiltering/cube_formats_08.html | 33 + .../texturefiltering/cube_formats_09.html | 33 + .../cube_no_edges_visible.html | 33 + .../gles3/texturefiltering/cube_sizes_00.html | 33 + .../gles3/texturefiltering/cube_sizes_01.html | 33 + .../gles3/texturefiltering/cube_sizes_02.html | 33 + .../gles3/texturefiltering/cube_sizes_03.html | 33 + .../gles3/texturefiltering/cube_sizes_04.html | 33 + .../texturefiltering_test_generator.py | 155 + .../gles3/textureformat/00_test_list.txt | 38 + .../gles3/textureformat/compressed_2d.html | 33 + .../gles3/textureformat/compressed_cube.html | 33 + .../sized_color_2d_array_npot_00.html | 33 + .../sized_color_2d_array_npot_01.html | 33 + .../sized_color_2d_array_npot_02.html | 33 + .../sized_color_2d_array_npot_03.html | 33 + .../sized_color_2d_array_pot_00.html | 33 + .../sized_color_2d_array_pot_01.html | 33 + .../sized_color_2d_array_pot_02.html | 33 + .../sized_color_2d_array_pot_03.html | 33 + .../textureformat/sized_color_2d_npot_00.html | 33 + .../textureformat/sized_color_2d_npot_01.html | 33 + .../textureformat/sized_color_2d_npot_02.html | 33 + .../textureformat/sized_color_2d_npot_03.html | 33 + .../textureformat/sized_color_2d_pot_00.html | 33 + .../textureformat/sized_color_2d_pot_01.html | 33 + .../textureformat/sized_color_2d_pot_02.html | 33 + .../textureformat/sized_color_2d_pot_03.html | 33 + .../textureformat/sized_color_3d_npot_00.html | 33 + .../textureformat/sized_color_3d_npot_01.html | 33 + .../textureformat/sized_color_3d_npot_02.html | 33 + .../textureformat/sized_color_3d_npot_03.html | 33 + .../textureformat/sized_color_3d_pot_00.html | 33 + .../textureformat/sized_color_3d_pot_01.html | 33 + .../textureformat/sized_color_3d_pot_02.html | 33 + .../textureformat/sized_color_3d_pot_03.html | 33 + .../sized_color_cube_npot_00.html | 33 + .../sized_color_cube_npot_01.html | 33 + .../sized_color_cube_npot_02.html | 33 + .../sized_color_cube_npot_03.html | 33 + .../sized_color_cube_pot_00.html | 33 + .../sized_color_cube_pot_01.html | 33 + .../sized_color_cube_pot_02.html | 33 + .../sized_color_cube_pot_03.html | 33 + .../textureformat/sized_depth_stencil.html | 33 + .../textureformat_test_generator.py | 143 + .../gles3/textureformat/unsized_2d.html | 33 + .../gles3/textureformat/unsized_2d_array.html | 33 + .../gles3/textureformat/unsized_3d.html | 33 + .../gles3/textureshadow/00_test_list.txt | 144 + .../textureshadow/2d_array_linear_always.html | 33 + .../textureshadow/2d_array_linear_equal.html | 33 + .../2d_array_linear_greater.html | 33 + .../2d_array_linear_greater_or_equal.html | 33 + .../textureshadow/2d_array_linear_less.html | 33 + .../2d_array_linear_less_or_equal.html | 33 + .../2d_array_linear_mipmap_linear_always.html | 33 + .../2d_array_linear_mipmap_linear_equal.html | 33 + ...2d_array_linear_mipmap_linear_greater.html | 33 + ...linear_mipmap_linear_greater_or_equal.html | 33 + .../2d_array_linear_mipmap_linear_less.html | 33 + ...ay_linear_mipmap_linear_less_or_equal.html | 33 + .../2d_array_linear_mipmap_linear_never.html | 33 + ..._array_linear_mipmap_linear_not_equal.html | 33 + ...2d_array_linear_mipmap_nearest_always.html | 33 + .../2d_array_linear_mipmap_nearest_equal.html | 33 + ...d_array_linear_mipmap_nearest_greater.html | 33 + ...inear_mipmap_nearest_greater_or_equal.html | 33 + .../2d_array_linear_mipmap_nearest_less.html | 33 + ...y_linear_mipmap_nearest_less_or_equal.html | 33 + .../2d_array_linear_mipmap_nearest_never.html | 33 + ...array_linear_mipmap_nearest_not_equal.html | 33 + .../textureshadow/2d_array_linear_never.html | 33 + .../2d_array_linear_not_equal.html | 33 + .../2d_array_nearest_always.html | 33 + .../textureshadow/2d_array_nearest_equal.html | 33 + .../2d_array_nearest_greater.html | 33 + .../2d_array_nearest_greater_or_equal.html | 33 + .../textureshadow/2d_array_nearest_less.html | 33 + .../2d_array_nearest_less_or_equal.html | 33 + ...2d_array_nearest_mipmap_linear_always.html | 33 + .../2d_array_nearest_mipmap_linear_equal.html | 33 + ...d_array_nearest_mipmap_linear_greater.html | 33 + ...earest_mipmap_linear_greater_or_equal.html | 33 + .../2d_array_nearest_mipmap_linear_less.html | 33 + ...y_nearest_mipmap_linear_less_or_equal.html | 33 + .../2d_array_nearest_mipmap_linear_never.html | 33 + ...array_nearest_mipmap_linear_not_equal.html | 33 + ...d_array_nearest_mipmap_nearest_always.html | 33 + ...2d_array_nearest_mipmap_nearest_equal.html | 33 + ..._array_nearest_mipmap_nearest_greater.html | 33 + ...arest_mipmap_nearest_greater_or_equal.html | 33 + .../2d_array_nearest_mipmap_nearest_less.html | 33 + ..._nearest_mipmap_nearest_less_or_equal.html | 33 + ...2d_array_nearest_mipmap_nearest_never.html | 33 + ...rray_nearest_mipmap_nearest_not_equal.html | 33 + .../textureshadow/2d_array_nearest_never.html | 33 + .../2d_array_nearest_not_equal.html | 33 + .../gles3/textureshadow/2d_linear_always.html | 33 + .../gles3/textureshadow/2d_linear_equal.html | 33 + .../textureshadow/2d_linear_greater.html | 33 + .../2d_linear_greater_or_equal.html | 33 + .../gles3/textureshadow/2d_linear_less.html | 33 + .../2d_linear_less_or_equal.html | 33 + .../2d_linear_mipmap_linear_always.html | 33 + .../2d_linear_mipmap_linear_equal.html | 33 + .../2d_linear_mipmap_linear_greater.html | 33 + ...linear_mipmap_linear_greater_or_equal.html | 33 + .../2d_linear_mipmap_linear_less.html | 33 + ...2d_linear_mipmap_linear_less_or_equal.html | 33 + .../2d_linear_mipmap_linear_never.html | 33 + .../2d_linear_mipmap_linear_not_equal.html | 33 + .../2d_linear_mipmap_nearest_always.html | 33 + .../2d_linear_mipmap_nearest_equal.html | 33 + .../2d_linear_mipmap_nearest_greater.html | 33 + ...inear_mipmap_nearest_greater_or_equal.html | 33 + .../2d_linear_mipmap_nearest_less.html | 33 + ...d_linear_mipmap_nearest_less_or_equal.html | 33 + .../2d_linear_mipmap_nearest_never.html | 33 + .../2d_linear_mipmap_nearest_not_equal.html | 33 + .../gles3/textureshadow/2d_linear_never.html | 33 + .../textureshadow/2d_linear_not_equal.html | 33 + .../textureshadow/2d_nearest_always.html | 33 + .../gles3/textureshadow/2d_nearest_equal.html | 33 + .../textureshadow/2d_nearest_greater.html | 33 + .../2d_nearest_greater_or_equal.html | 33 + .../gles3/textureshadow/2d_nearest_less.html | 33 + .../2d_nearest_less_or_equal.html | 33 + .../2d_nearest_mipmap_linear_always.html | 33 + .../2d_nearest_mipmap_linear_equal.html | 33 + .../2d_nearest_mipmap_linear_greater.html | 33 + ...earest_mipmap_linear_greater_or_equal.html | 33 + .../2d_nearest_mipmap_linear_less.html | 33 + ...d_nearest_mipmap_linear_less_or_equal.html | 33 + .../2d_nearest_mipmap_linear_never.html | 33 + .../2d_nearest_mipmap_linear_not_equal.html | 33 + .../2d_nearest_mipmap_nearest_always.html | 33 + .../2d_nearest_mipmap_nearest_equal.html | 33 + .../2d_nearest_mipmap_nearest_greater.html | 33 + ...arest_mipmap_nearest_greater_or_equal.html | 33 + .../2d_nearest_mipmap_nearest_less.html | 33 + ..._nearest_mipmap_nearest_less_or_equal.html | 33 + .../2d_nearest_mipmap_nearest_never.html | 33 + .../2d_nearest_mipmap_nearest_not_equal.html | 33 + .../gles3/textureshadow/2d_nearest_never.html | 33 + .../textureshadow/2d_nearest_not_equal.html | 33 + .../textureshadow/cube_linear_always.html | 33 + .../textureshadow/cube_linear_equal.html | 33 + .../textureshadow/cube_linear_greater.html | 33 + .../cube_linear_greater_or_equal.html | 33 + .../gles3/textureshadow/cube_linear_less.html | 33 + .../cube_linear_less_or_equal.html | 33 + .../cube_linear_mipmap_linear_always.html | 33 + .../cube_linear_mipmap_linear_equal.html | 33 + .../cube_linear_mipmap_linear_greater.html | 33 + ...linear_mipmap_linear_greater_or_equal.html | 33 + .../cube_linear_mipmap_linear_less.html | 33 + ...be_linear_mipmap_linear_less_or_equal.html | 33 + .../cube_linear_mipmap_linear_never.html | 33 + .../cube_linear_mipmap_linear_not_equal.html | 33 + .../cube_linear_mipmap_nearest_always.html | 33 + .../cube_linear_mipmap_nearest_equal.html | 33 + .../cube_linear_mipmap_nearest_greater.html | 33 + ...inear_mipmap_nearest_greater_or_equal.html | 33 + .../cube_linear_mipmap_nearest_less.html | 33 + ...e_linear_mipmap_nearest_less_or_equal.html | 33 + .../cube_linear_mipmap_nearest_never.html | 33 + .../cube_linear_mipmap_nearest_not_equal.html | 33 + .../textureshadow/cube_linear_never.html | 33 + .../textureshadow/cube_linear_not_equal.html | 33 + .../textureshadow/cube_nearest_always.html | 33 + .../textureshadow/cube_nearest_equal.html | 33 + .../textureshadow/cube_nearest_greater.html | 33 + .../cube_nearest_greater_or_equal.html | 33 + .../textureshadow/cube_nearest_less.html | 33 + .../cube_nearest_less_or_equal.html | 33 + .../cube_nearest_mipmap_linear_always.html | 33 + .../cube_nearest_mipmap_linear_equal.html | 33 + .../cube_nearest_mipmap_linear_greater.html | 33 + ...earest_mipmap_linear_greater_or_equal.html | 33 + .../cube_nearest_mipmap_linear_less.html | 33 + ...e_nearest_mipmap_linear_less_or_equal.html | 33 + .../cube_nearest_mipmap_linear_never.html | 33 + .../cube_nearest_mipmap_linear_not_equal.html | 33 + .../cube_nearest_mipmap_nearest_always.html | 33 + .../cube_nearest_mipmap_nearest_equal.html | 33 + .../cube_nearest_mipmap_nearest_greater.html | 33 + ...arest_mipmap_nearest_greater_or_equal.html | 33 + .../cube_nearest_mipmap_nearest_less.html | 33 + ..._nearest_mipmap_nearest_less_or_equal.html | 33 + .../cube_nearest_mipmap_nearest_never.html | 33 + ...cube_nearest_mipmap_nearest_not_equal.html | 33 + .../textureshadow/cube_nearest_never.html | 33 + .../textureshadow/cube_nearest_not_equal.html | 33 + .../textureshadow_test_generator.py | 133 + .../texturespecification/00_test_list.txt | 90 + .../basic_copyteximage2d.html | 33 + .../basic_copytexsubimage2d.html | 33 + .../basic_teximage2d_2d_00.html | 33 + .../basic_teximage2d_2d_01.html | 33 + .../basic_teximage2d_cube_00.html | 33 + .../basic_teximage2d_cube_01.html | 33 + .../basic_teximage2d_cube_02.html | 33 + .../basic_teximage2d_cube_03.html | 33 + .../basic_teximage2d_cube_04.html | 33 + .../basic_teximage3d_2d_array_00.html | 33 + .../basic_teximage3d_2d_array_01.html | 33 + .../basic_teximage3d_2d_array_02.html | 33 + .../basic_teximage3d_3d_00.html | 33 + .../basic_teximage3d_3d_01.html | 33 + .../basic_teximage3d_3d_02.html | 33 + .../basic_teximage3d_3d_03.html | 33 + .../basic_teximage3d_3d_04.html | 33 + .../basic_texsubimage2d_2d_00.html | 33 + .../basic_texsubimage2d_2d_01.html | 33 + .../basic_texsubimage2d_2d_02.html | 33 + .../basic_texsubimage2d_cube_00.html | 33 + .../basic_texsubimage2d_cube_01.html | 33 + .../basic_texsubimage2d_cube_02.html | 33 + .../basic_texsubimage2d_cube_03.html | 33 + .../basic_texsubimage2d_cube_04.html | 33 + .../basic_texsubimage3d_00.html | 33 + .../basic_texsubimage3d_01.html | 33 + .../basic_texsubimage3d_02.html | 33 + .../basic_texsubimage3d_03.html | 33 + .../basic_texsubimage3d_04.html | 33 + .../random_teximage2d_2d.html | 33 + .../random_teximage2d_cube.html | 33 + .../teximage2d_align.html | 33 + .../teximage2d_depth.html | 33 + .../teximage2d_depth_pbo.html | 33 + .../teximage2d_pbo_2d_00.html | 33 + .../teximage2d_pbo_2d_01.html | 33 + .../teximage2d_pbo_cube_00.html | 33 + .../teximage2d_pbo_cube_01.html | 33 + .../teximage2d_pbo_cube_02.html | 33 + .../teximage2d_pbo_cube_03.html | 33 + .../teximage2d_pbo_cube_04.html | 33 + .../teximage2d_pbo_params.html | 33 + .../teximage2d_unpack_params.html | 33 + .../teximage3d_depth.html | 33 + .../teximage3d_depth_pbo.html | 33 + .../teximage3d_pbo_2d_array_00.html | 33 + .../teximage3d_pbo_2d_array_01.html | 33 + .../teximage3d_pbo_3d_00.html | 33 + .../teximage3d_pbo_3d_01.html | 33 + .../teximage3d_pbo_params.html | 33 + .../teximage3d_unpack_params.html | 33 + .../texstorage2d_format_2d_00.html | 33 + .../texstorage2d_format_2d_01.html | 33 + .../texstorage2d_format_2d_02.html | 33 + .../texstorage2d_format_cube_00.html | 33 + .../texstorage2d_format_cube_01.html | 33 + .../texstorage2d_format_cube_02.html | 33 + .../texstorage2d_format_cube_03.html | 33 + .../texstorage2d_format_cube_04.html | 33 + .../texstorage2d_format_depth_stencil.html | 33 + .../texstorage2d_format_size.html | 33 + .../texstorage3d_format_2d_array_00.html | 33 + .../texstorage3d_format_2d_array_01.html | 33 + .../texstorage3d_format_2d_array_02.html | 33 + .../texstorage3d_format_3d_00.html | 33 + .../texstorage3d_format_3d_01.html | 33 + .../texstorage3d_format_3d_02.html | 33 + .../texstorage3d_format_3d_03.html | 33 + .../texstorage3d_format_depth_stencil.html | 33 + .../texstorage3d_format_size.html | 33 + .../texsubimage2d_align.html | 33 + .../texsubimage2d_depth.html | 33 + .../texsubimage2d_empty_tex.html | 33 + .../texsubimage2d_pbo_2d_00.html | 33 + .../texsubimage2d_pbo_2d_01.html | 33 + .../texsubimage2d_pbo_cube_00.html | 33 + .../texsubimage2d_pbo_cube_01.html | 33 + .../texsubimage2d_pbo_cube_02.html | 33 + .../texsubimage2d_pbo_cube_03.html | 33 + .../texsubimage2d_pbo_cube_04.html | 33 + .../texsubimage2d_pbo_params.html | 33 + .../texsubimage2d_unpack_params.html | 33 + .../texsubimage3d_depth.html | 33 + .../texsubimage3d_pbo_2d_array_00.html | 33 + .../texsubimage3d_pbo_2d_array_01.html | 33 + .../texsubimage3d_pbo_3d_00.html | 33 + .../texsubimage3d_pbo_3d_01.html | 33 + .../texsubimage3d_pbo_params.html | 33 + .../texsubimage3d_unpack_params.html | 33 + .../texturespecification_test_generator.py | 195 + .../functional/gles3/texturestatequery.html | 26 + .../gles3/texturewrap/00_test_list.txt | 22 + .../gles3/texturewrap/eac_r11_npot.html | 33 + .../gles3/texturewrap/eac_r11_pot.html | 33 + .../gles3/texturewrap/eac_rg11_npot.html | 33 + .../gles3/texturewrap/eac_rg11_pot.html | 33 + .../texturewrap/eac_signed_r11_npot.html | 33 + .../gles3/texturewrap/eac_signed_r11_pot.html | 33 + .../texturewrap/eac_signed_rg11_npot.html | 33 + .../texturewrap/eac_signed_rg11_pot.html | 33 + .../texturewrap/etc2_eac_rgba8_npot.html | 33 + .../gles3/texturewrap/etc2_eac_rgba8_pot.html | 33 + .../etc2_eac_srgb8_alpha8_npot.html | 33 + .../etc2_eac_srgb8_alpha8_pot.html | 33 + .../gles3/texturewrap/etc2_rgb8_npot.html | 33 + .../gles3/texturewrap/etc2_rgb8_pot.html | 33 + .../etc2_rgb8_punchthrough_alpha1_npot.html | 33 + .../etc2_rgb8_punchthrough_alpha1_pot.html | 33 + .../gles3/texturewrap/etc2_srgb8_npot.html | 33 + .../gles3/texturewrap/etc2_srgb8_pot.html | 33 + .../etc2_srgb8_punchthrough_alpha1_npot.html | 33 + .../etc2_srgb8_punchthrough_alpha1_pot.html | 33 + .../gles3/texturewrap/rgba8_npot.html | 33 + .../gles3/texturewrap/rgba8_pot.html | 33 + .../texturewrap/texturewrap_test_generator.py | 127 + .../gles3/transformfeedback/00_test_list.txt | 29 + .../array_element_interleaved_lines.html | 33 + .../array_element_interleaved_points.html | 33 + .../array_element_interleaved_triangles.html | 33 + .../array_element_separate_lines.html | 33 + .../array_element_separate_points.html | 33 + .../array_element_separate_triangles.html | 33 + .../array_interleaved_lines.html | 33 + .../array_interleaved_points.html | 33 + .../array_interleaved_triangles.html | 33 + .../array_separate_lines.html | 33 + .../array_separate_points.html | 33 + .../array_separate_triangles.html | 33 + .../basic_types_interleaved_lines.html | 33 + .../basic_types_interleaved_points.html | 33 + .../basic_types_interleaved_triangles.html | 33 + .../basic_types_separate_lines.html | 33 + .../basic_types_separate_points.html | 33 + .../basic_types_separate_triangles.html | 33 + .../interpolation_centroid.html | 33 + .../transformfeedback/interpolation_flat.html | 33 + .../interpolation_smooth.html | 33 + .../gles3/transformfeedback/point_size.html | 33 + .../gles3/transformfeedback/position.html | 33 + .../random_interleaved_lines.html | 33 + .../random_interleaved_points.html | 33 + .../random_interleaved_triangles.html | 33 + .../random_separate_lines.html | 33 + .../random_separate_points.html | 33 + .../random_separate_triangles.html | 33 + .../transformfeedback_test_generator.py | 135 + .../gles3/uniformapi/00_test_list.txt | 4 + .../gles3/uniformapi/info_query.html | 33 + .../functional/gles3/uniformapi/random.html | 33 + .../uniformapi/uniformapi_test_generator.py | 109 + .../gles3/uniformapi/value_assigned.html | 33 + .../gles3/uniformapi/value_initial.html | 33 + .../gles3/uniformbuffers/00_test_list.txt | 10 + .../instance_array_basic_type.html | 33 + .../uniformbuffers/multi_basic_types.html | 33 + .../uniformbuffers/multi_nested_struct.html | 33 + .../gles3/uniformbuffers/random.html | 33 + .../uniformbuffers/single_basic_array.html | 33 + .../uniformbuffers/single_basic_type.html | 33 + .../uniformbuffers/single_nested_struct.html | 33 + .../single_nested_struct_array.html | 33 + .../gles3/uniformbuffers/single_struct.html | 33 + .../uniformbuffers/single_struct_array.html | 33 + .../uniformbuffers_test_generator.py | 115 + .../functional/gles3/vertexarrayobject.html | 26 + .../gles3/vertexarrays/00_test_list.txt | 27 + .../multiple_attributes.count.html | 33 + .../multiple_attributes.output.html | 33 + .../multiple_attributes.storage.html | 33 + .../multiple_attributes.stride.html | 33 + .../vertexarrays/single_attribute.first.html | 33 + .../single_attribute.normalize.html | 33 + .../vertexarrays/single_attribute.offset.html | 33 + .../single_attribute.output_type.byte.html | 33 + .../single_attribute.output_type.float.html | 33 + .../single_attribute.output_type.half.html | 33 + .../single_attribute.output_type.int.html | 33 + ..._attribute.output_type.int_2_10_10_10.html | 33 + .../single_attribute.output_type.short.html | 33 + ...e_attribute.output_type.unsigned_byte.html | 33 + ...le_attribute.output_type.unsigned_int.html | 33 + ...e.output_type.unsigned_int_2_10_10_10.html | 33 + ..._attribute.output_type.unsigned_short.html | 33 + .../vertexarrays/single_attribute.stride.html | 33 + .../single_attribute.usage.dynamic_copy.html | 33 + .../single_attribute.usage.dynamic_draw.html | 33 + .../single_attribute.usage.dynamic_read.html | 33 + .../single_attribute.usage.static_copy.html | 33 + .../single_attribute.usage.static_draw.html | 33 + .../single_attribute.usage.static_read.html | 33 + .../single_attribute.usage.stream_copy.html | 33 + .../single_attribute.usage.stream_draw.html | 33 + .../single_attribute.usage.stream_read.html | 33 + .../vertexarrays_test_generator.py | 127 + .../conformance-2.0.0/deqp/genHTMLfromTest.py | 43 + .../shared/glsAttributeLocationTests.js | 1477 ++ .../deqp/modules/shared/glsBufferTestUtil.js | 1068 ++ .../shared/glsBuiltinPrecisionTests.js | 5415 ++++++ .../glsBuiltinPrecisionTestsUnitTests.js | 2819 +++ .../deqp/modules/shared/glsDrawTests.js | 3452 ++++ .../modules/shared/glsFboCompletenessTests.js | 961 ++ .../deqp/modules/shared/glsFboUtil.js | 1413 ++ .../deqp/modules/shared/glsLifetimeTests.js | 1118 ++ .../shared/glsRandomUniformBlockCase.js | 282 + .../modules/shared/glsSamplerObjectTest.js | 1148 ++ .../deqp/modules/shared/glsShaderExecUtil.js | 735 + .../deqp/modules/shared/glsShaderLibrary.js | 1114 ++ .../modules/shared/glsShaderLibraryCase.js | 1132 ++ .../modules/shared/glsShaderRenderCase.js | 1200 ++ .../deqp/modules/shared/glsStateQuery.js | 367 + .../deqp/modules/shared/glsTextureTestUtil.js | 2642 +++ .../modules/shared/glsUniformBlockCase.js | 2451 +++ .../modules/shared/glsVertexArrayTests.js | 2534 +++ .../conformance-2.0.0/deqp/run-closure.sh | 26 + .../deqp/temp_externs/chrome.js | 156 + .../deqp/temp_externs/deprecated.js | 46 + .../deqp/temp_externs/es3.js | 2236 +++ .../deqp/temp_externs/es5.js | 269 + .../deqp/temp_externs/es6.js | 856 + .../deqp/temp_externs/es6_collections.js | 253 + .../deqp/temp_externs/fileapi.js | 961 ++ .../deqp/temp_externs/flash.js | 210 + .../deqp/temp_externs/gecko_css.js | 126 + .../deqp/temp_externs/gecko_dom.js | 1120 ++ .../deqp/temp_externs/gecko_event.js | 62 + .../deqp/temp_externs/gecko_xml.js | 73 + .../deqp/temp_externs/google.js | 30 + .../deqp/temp_externs/html5.js | 3241 ++++ .../deqp/temp_externs/ie_css.js | 267 + .../deqp/temp_externs/ie_dom.js | 1395 ++ .../deqp/temp_externs/ie_event.js | 309 + .../deqp/temp_externs/ie_vml.js | 77 + .../deqp/temp_externs/intl.js | 163 + .../deqp/temp_externs/iphone.js | 362 + .../deqp/temp_externs/mediasource.js | 142 + .../deqp/temp_externs/page_visibility.js | 32 + .../conformance-2.0.0/deqp/temp_externs/v8.js | 125 + .../deqp/temp_externs/w3c_anim_timing.js | 191 + .../deqp/temp_externs/w3c_css.js | 2505 +++ .../deqp/temp_externs/w3c_css3d.js | 199 + .../temp_externs/w3c_device_sensor_event.js | 101 + .../deqp/temp_externs/w3c_dom1.js | 874 + .../deqp/temp_externs/w3c_dom2.js | 2619 +++ .../deqp/temp_externs/w3c_dom3.js | 854 + .../deqp/temp_externs/w3c_elementtraversal.js | 56 + .../deqp/temp_externs/w3c_encoding.js | 54 + .../deqp/temp_externs/w3c_event.js | 372 + .../deqp/temp_externs/w3c_event3.js | 63 + .../deqp/temp_externs/w3c_geolocation.js | 101 + .../deqp/temp_externs/w3c_indexeddb.js | 914 + .../temp_externs/w3c_navigation_timing.js | 161 + .../deqp/temp_externs/w3c_range.js | 248 + .../deqp/temp_externs/w3c_rtc.js | 1002 ++ .../deqp/temp_externs/w3c_selectors.js | 94 + .../deqp/temp_externs/w3c_xml.js | 417 + .../deqp/temp_externs/webkit_css.js | 456 + .../deqp/temp_externs/webkit_dom.js | 281 + .../deqp/temp_externs/webkit_event.js | 48 + .../deqp/temp_externs/webkit_notifications.js | 201 + .../deqp/temp_externs/webstorage.js | 148 + .../deqp/temp_externs/window.js | 191 + .../conformance-2.0.0/deqp/test-webgl2.js | 4 + .../conformance-2.0.0/deqp/test-webgl2.sh | 60 + .../webgl/conformance-2.0.0/deqp/webgl2.js | 5537 ++++++ .../50x50pixel-black-with-red-triangle.png | Bin 0 -> 3032 bytes .../extra/canvas-compositing-test.png | Bin 0 -> 212531 bytes .../conformance-2.0.0/extra/sample-100.png | Bin 0 -> 960 bytes .../conformance-2.0.0/extra/sample-200.png | Bin 0 -> 2364 bytes .../conformance-2.0.0/extra/sample-400.png | Bin 0 -> 5181 bytes .../webgl/conformance-2.0.0/extra/sample.svg | 4 + .../extra/tex-image-with-video-test.js | 174 + .../js/desktop-gl-constants.js | 2656 +++ .../js/glsl-conformance-test.js | 393 + .../js/glsl-constructor-tests-generator.js | 936 + .../conformance-2.0.0/js/glsl-generator.js | 1251 ++ .../conformance-2.0.0/js/js-test-post.js | 29 + .../webgl/conformance-2.0.0/js/js-test-pre.js | 752 + .../webgl/conformance-2.0.0/js/pnglib.js | 207 + .../webgl/conformance-2.0.0/js/test-eval.js | 32 + .../js/tests/clipping-wide-points.js | 109 + .../compound-assignment-type-combination.js | 150 + .../js/tests/gl-enum-tests.js | 140 + .../js/tests/gl-get-tex-parameter.js | 200 + .../js/tests/gl-object-get-calls.js | 1092 ++ .../js/tests/gl-vertex-attrib.js | 280 + .../js/tests/instanceof-test.js | 122 + .../js/tests/iterable-test.js | 173 + ...oes-texture-float-and-half-float-linear.js | 183 + .../js/tests/out-of-bounds-test.js | 343 + ...-sub-image-2d-with-canvas-sub-rectangle.js | 329 + .../tex-image-and-sub-image-2d-with-canvas.js | 320 + ...ub-image-2d-with-image-bitmap-from-blob.js | 65 + ...-image-2d-with-image-bitmap-from-canvas.js | 91 + ...-2d-with-image-bitmap-from-image-bitmap.js | 73 + ...ge-2d-with-image-bitmap-from-image-data.js | 66 + ...b-image-2d-with-image-bitmap-from-image.js | 63 + ...b-image-2d-with-image-bitmap-from-video.js | 99 + ...-image-and-sub-image-2d-with-image-data.js | 267 + .../tex-image-and-sub-image-2d-with-image.js | 263 + ...x-image-and-sub-image-2d-with-svg-image.js | 148 + .../tex-image-and-sub-image-2d-with-video.js | 299 + ...mage-and-sub-image-2d-with-webgl-canvas.js | 249 + ...-sub-image-3d-with-canvas-sub-rectangle.js | 304 + .../tex-image-and-sub-image-3d-with-canvas.js | 233 + ...ub-image-3d-with-image-bitmap-from-blob.js | 65 + ...-image-3d-with-image-bitmap-from-canvas.js | 91 + ...-3d-with-image-bitmap-from-image-bitmap.js | 73 + ...ge-3d-with-image-bitmap-from-image-data.js | 66 + ...b-image-3d-with-image-bitmap-from-image.js | 62 + ...b-image-3d-with-image-bitmap-from-video.js | 99 + ...-image-and-sub-image-3d-with-image-data.js | 276 + .../tex-image-and-sub-image-3d-with-image.js | 277 + ...x-image-and-sub-image-3d-with-svg-image.js | 121 + .../tex-image-and-sub-image-3d-with-video.js | 260 + ...mage-and-sub-image-3d-with-webgl-canvas.js | 204 + .../js/tests/tex-image-and-sub-image-utils.js | 818 + ...e-and-sub-image-with-image-bitmap-utils.js | 415 + .../js/tests/tex-input-validation.js | 580 + .../js/tests/typed-array-test-cases.js | 90 + .../js/tests/typed-array-worker.js | 89 + .../js/webgl-test-harness.js | 659 + .../conformance-2.0.0/js/webgl-test-utils.js | 3150 ++++ .../webgl/conformance-2.0.0/py/lint/LICENSE | 30 + .../webgl/conformance-2.0.0/py/lint/README.md | 115 + .../webgl/conformance-2.0.0/py/lint/lint.py | 223 + .../conformance-2.0.0/py/lint/lint.whitelist | 46 + .../py/tex_image_test_generator.py | 214 + .../conformance-2.0.0/resources/1-channel.jpg | Bin 0 -> 16799 bytes .../webgl/conformance-2.0.0/resources/3x3.png | Bin 0 -> 2806 bytes .../conformance-2.0.0/resources/blue-1x1.jpg | Bin 0 -> 319 bytes .../resources/boolUniformShader.vert | 43 + .../resources/bug-32888-texture.png | Bin 0 -> 10050 bytes .../resources/floatUniformShader.vert | 43 + .../resources/fragmentShader.frag | 32 + .../resources/glsl-feature-tests.css | 29 + .../resources/glsl-generator.js | 1251 ++ .../resources/gray-1024x1024.jpg | Bin 0 -> 10314 bytes .../gray-ramp-256-with-128-alpha.png | Bin 0 -> 81 bytes .../resources/gray-ramp-256.png | Bin 0 -> 78 bytes .../resources/gray-ramp-default-gamma.png | Bin 0 -> 123 bytes .../resources/gray-ramp-gamma0.1.png | Bin 0 -> 133 bytes .../resources/gray-ramp-gamma1.0.png | Bin 0 -> 133 bytes .../resources/gray-ramp-gamma2.0.png | Bin 0 -> 133 bytes .../resources/gray-ramp-gamma4.0.png | Bin 0 -> 133 bytes .../resources/gray-ramp-gamma9.0.png | Bin 0 -> 133 bytes .../conformance-2.0.0/resources/gray-ramp.png | Bin 0 -> 123 bytes .../resources/green-2x2-16bit.png | Bin 0 -> 134 bytes .../resources/intArrayUniformShader.vert | 8 + .../resources/intUniformShader.vert | 43 + .../resources/js-test-style.css | 17 + .../resources/matForWebGL2UniformShader.vert | 42 + .../resources/matUniformShader.vert | 40 + .../resources/noopUniformShader.frag | 34 + .../resources/noopUniformShader.vert | 4 + .../resources/noopUniformShaderES3.frag | 40 + .../resources/noopUniformShaderES3.vert | 6 + .../resources/npot-video.mp4 | Bin 0 -> 38215 bytes .../resources/npot-video.theora.ogv | Bin 0 -> 24630 bytes .../resources/npot-video.webmvp8.webm | Bin 0 -> 51240 bytes .../resources/ogles-tests.css | 30 + .../resources/opengl_logo.jpg | Bin 0 -> 5827 bytes .../resources/red-green-blue-cyan-4x4.png | Bin 0 -> 469 bytes .../resources/red-green-blue-cyan-4x4.psd | Bin 0 -> 20380 bytes .../resources/red-green-semi-transparent.png | Bin 0 -> 101 bytes .../resources/red-green.bt601.vp9.webm | Bin 0 -> 4015 bytes .../conformance-2.0.0/resources/red-green.mp4 | Bin 0 -> 92225 bytes .../conformance-2.0.0/resources/red-green.png | Bin 0 -> 144 bytes .../conformance-2.0.0/resources/red-green.svg | 6 + .../resources/red-green.theora.ogv | Bin 0 -> 10292 bytes .../resources/red-green.webmvp8.webm | Bin 0 -> 10979 bytes .../resources/red-indexed.png | Bin 0 -> 168 bytes .../samplerForWebGL2UniformShader.frag | 34 + .../resources/samplerUniformShader.frag | 8 + .../small-square-with-cie-rgb-profile.png | Bin 0 -> 868 bytes .../small-square-with-colormatch-profile.png | Bin 0 -> 871 bytes .../small-square-with-colorspin-profile.jpg | Bin 0 -> 9145 bytes .../small-square-with-colorspin-profile.png | Bin 0 -> 841 bytes .../small-square-with-e-srgb-profile.png | Bin 0 -> 1985 bytes .../small-square-with-smpte-c-profile.png | Bin 0 -> 871 bytes ...-square-with-srgb-iec61966-2.1-profile.png | Bin 0 -> 3201 bytes .../resources/structUniformShader.vert | 53 + .../resources/thunderbird-logo-64x64.png | Bin 0 -> 63843 bytes .../resources/transparent-on-left-indexed.png | Bin 0 -> 972 bytes .../resources/uintUniformShader.vert | 38 + .../resources/uniformBlockShader.frag | 36 + .../resources/uniformBlockShader.vert | 43 + .../resources/vertexShader.vert | 36 + .../resources/webgl-logo.png | Bin 0 -> 9077 bytes .../resources/zero-alpha.png | Bin 0 -> 89 bytes .../conformance-2.0.0/test-guidelines.md | 181 + 4646 files changed, 564933 insertions(+) create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/CONFORMANCE_RULES.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/README.md create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/AUTHORS create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/CONTRIBUTING create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/LICENSE create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/README-Khronos.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/README.md create mode 100755 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/closurebuilder.py create mode 100755 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/depstree.py create mode 100755 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/depswriter.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/jscompiler.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/source.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/treescan.py create mode 100755 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/calcdeps.py create mode 100755 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/scopify.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/goog/base.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/goog/deps.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/00_readme.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-bindAttribLocation-aliasing.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-bindAttribLocation-matrix.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-bindAttribLocation-repeated.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-disabled-vertex-attrib.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-enable-vertex-attrib.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-matrix-attributes.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertex-attrib-render.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertex-attrib-zero-issues.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertex-attrib.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertexattribpointer-offsets.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertexattribpointer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-bind-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-data-and-buffer-sub-data.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-data-array-buffer-delete.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-uninitialized.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/element-array-buffer-delete-recreate.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-copies-indices.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-crash-with-buffer-sub-data.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-large-buffer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-verifies-too-many-indices.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-with-resized-buffer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/buffer-offscreen-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/buffer-preserve-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/canvas-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/canvas-zero-size.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/draw-static-webgl-to-multiple-canvas-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/draw-webgl-to-canvas-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/drawingbuffer-hd-dpi-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/drawingbuffer-static-canvas-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/drawingbuffer-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/framebuffer-bindings-affected-by-to-data-url.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/framebuffer-bindings-unaffected-on-resize.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/rapid-resizing.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/texture-bindings-unaffected-on-resize.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/to-data-url-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/viewport-unchanged-upon-resize.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/constants-and-properties.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-attribute-preserve-drawing-buffer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-attributes-alpha-depth-stencil-antialias.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-creation-and-destruction.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-creation.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-eviction-with-garbage-collection.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-hidden-alpha.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-lost-restored.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-lost.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-no-alpha-fbo-with-alpha.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-release-upon-reload.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-release-with-workers.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-size-change.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-type-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/incorrect-context-object-behaviour.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/methods.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/premultiplyalpha-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resource-sharing-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resources/context-release-child-with-worker.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resources/context-release-upon-reload-child.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resources/context-release-worker.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/user-defined-properties-on-context.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/angle-instanced-arrays-out-of-bounds.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/angle-instanced-arrays.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-blend-minmax.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-disjoint-timer-query.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-frag-depth.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-sRGB.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-shader-texture-lod.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-texture-filter-anisotropic.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/get-extension.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-element-index-uint.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-standard-derivatives.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-linear.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-canvas.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-image-data.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-image.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-video.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-linear.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-canvas.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-image-data.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-image.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-video.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-vertex-array-object-bufferData.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-vertex-array-object.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-etc.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-pvrtc.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-s3tc-srgb.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-s3tc.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-size-limit.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-debug-renderer-info.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-debug-shaders.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-depth-texture.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-draw-buffers-framebuffer-unsupported.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-draw-buffers-max-draw-buffers.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-draw-buffers.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-shared-resources.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/README.md create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-ambiguous-function-call.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-constructor-invalid-parameters.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-d3d11-compiler-error.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-dx-variable-bug.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/array-of-struct-with-int-first-position.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/bool-type-cast-bug-int-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/compare-loop-index-to-uniform.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/complex-glsl-does-not-crash.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/compound-assignment-type-combination.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/conditional-discard-in-loop.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/conditional-discard-optimization.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/constant-precision-qualifier.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/essl3-shaders-with-webgl1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/floor-div-cos-should-not-truncate.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/floored-division-accuracy.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/fragcoord-linking-bug.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/gl-fragcoord-multisampling-bug.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/global-invariant-does-not-leak-across-shaders.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/invariant-does-not-leak-across-shaders.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/logic-inside-block-without-braces.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/long-expressions-should-not-crash.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/loop-if-loop-gradient.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/modulo-arithmetic-accuracy.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/multiplication-assignment.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/nested-functions-should-not-crash.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/nested-loops-with-break-and-continue.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/nested-sequence-operator.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/pow-of-small-constant-in-user-defined-function.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/pow-with-constant-exponent-should-not-crash.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/qualcomm-crash.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/qualcomm-loop-with-continue-crash.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sampler-array-using-loop-index.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sampler-struct-function-arg.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sequence-operator-evaluation-order.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sketchfab-lighting-shader-crash.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/struct-constructor-highp-bug.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/temp-expressions-should-not-crash.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/undefined-index-should-not-crash.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/uniforms-should-not-lose-values.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-bvec2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-bvec3.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-bvec4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-ivec2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-ivec3.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-ivec4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-mat2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-mat3.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-mat4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec-mat-corner-cases.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec-mat-index.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec3.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-abs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-acos.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-asin.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-atan-xy.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-atan.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-ceil.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-clamp-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-clamp-gentype.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-cos.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-cross.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-distance.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-dot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-faceforward.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-floor.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-fract.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-length.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-max-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-max-gentype.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-min-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-min-gentype.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mix-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mix-gentype.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mod-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mod-gentype.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-normalize.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-reflect.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-sign.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-sin.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-smoothstep-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-smoothstep-gentype.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-step-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-step-gentype.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_float.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_mat2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_mat3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_mat4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_vec2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_vec3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_vec4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_ivec2_vec2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_ivec3_vec3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_ivec4_vec4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_int_to_float.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_ivec2_to_vec2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_ivec3_to_vec3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_ivec4_to_vec4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/construct_struct.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_float.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_mat2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_mat3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_mat4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_vec2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_vec3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_vec4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_ivec2_vec2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_ivec3_vec3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_ivec4_vec4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_int_float.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_ivec2_vec2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_ivec3_vec3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_ivec4_vec4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_int_float.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_ivec2_vec2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_ivec3_vec3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_ivec4_vec4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/greater_than.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/greater_than_equal.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/less_than.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/less_than_equal.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_float.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_mat2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_mat3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_mat4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_vec2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_vec3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_vec4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_ivec2_vec2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_ivec3_vec3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_ivec4_vec4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_int_float.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_ivec2_vec2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_ivec3_vec3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_ivec4_vec4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_float.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_mat2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_mat3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_mat4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_vec2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_vec3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_vec4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_ivec2_vec2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_ivec3_vec3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_ivec4_vec4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_int_float.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_ivec2_vec2.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_ivec3_vec3.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_ivec4_vec4.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/float_literal.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/literal_precision.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/overflow_leak.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/glsl-mat3-construction.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/glsl-mat4-to-mat3.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/matrix-compound-multiply.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/attrib-location-length-limits.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/boolean_precision.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/const-variable-initialization.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/embedded-struct-definitions-forbidden.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/empty-declaration.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/empty_main.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/expression-list-in-declarator-initializer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/gl_position_unset.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/global-variable-init.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/glsl-function-nodes.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/glsl-long-variable-names.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/glsl-vertex-branch.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/include.vs create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/large-loop-compile.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/non-ascii-comments.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/non-ascii.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/re-compile-re-link.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/sequence-operator-returns-constant.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-precision-format-obeyed.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-struct-scope.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-uniform-packing-restrictions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-varying-packing-restrictions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-256-character-define.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-256-character-identifier.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-257-character-define.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-257-character-identifier.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-_webgl-identifier.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-arbitrary-indexing.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-arbitrary-indexing.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-array-of-structs-containing-arrays.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-array-of-structs-uniform.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-attrib-array.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-attrib-struct.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-clipvertex.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-comma-assignment.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-comma-conditional-assignment.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-comma-separated-variable-declarations.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-conditional-scoping-negative.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-conditional-scoping.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-default-precision.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-default-precision.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-define-line-continuation.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-dfdx-no-ext.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-dfdx.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-do-loop.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-error-directive.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-explicit-int-cast.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-float-return-value.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-for-loop.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-for-scoping.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-frag-depth.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-function-recursion.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-function-scoped-struct.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-functional-scoping.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-glcolor.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-gles-1.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-gles-symbol.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-global-variable-precision-mismatch.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-glprojectionmatrix.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-hex-int-constant-macro.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-implicit-vec3-to-vec4-cast.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-include.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-int-return-value.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-invalid-identifier.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-ivec2-return-value.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-ivec3-return-value.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-ivec4-return-value.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-limited-indexing.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-long-line.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-non-ascii-error.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-non-reserved-words.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-precision.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-preprocessor-whitespace.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-quoted-error.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-reserved-words.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-short-circuiting-operators.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-similar-uniform-array-names.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-too-many-uniforms.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-two-initializer-types.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-undefined-preprocessor-symbol.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-uniform-in-loop-condition.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec2-return-value.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec3-return-value.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec4-return-value.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec4-vec3-vec4-conditional.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-100.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-100.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-120.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-130.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-webgl-identifier.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-while-loop.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-without-precision.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-constant-expression-loop-conditions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-invariance.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-mis-matching-uniforms.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-mis-matching-varyings.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-missing-varyings.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-name-conflicts.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-uniform-structs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-varyings.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shared.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-assign.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-equals.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-mixed-array-declarators.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-nesting-exceeds-maximum.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-nesting-of-variable-names.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-nesting-under-maximum.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-specifiers-in-uniforms.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-unary-operators.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/ternary-operator-on-arrays.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/ternary-operators-in-global-initializers.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/ternary-operators-in-initializers.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/uniform-location-length-limits.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_field.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_function.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_struct.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_variable.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_field.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_function.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_struct.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_variable.vert.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2d-bias.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2dlod.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2dproj.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2dprojlod.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-fragcoord-xy-values.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-fragcoord.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-fragdata-and-fragcolor.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-frontfacing.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-pointcoord.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/glsl-built-ins.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-line-width.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-max-texture-dimensions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-min-attribs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-min-textures.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-min-uniforms.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/bad-arguments-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/boolean-argument-conversion.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/delayed-drawing.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/error-reporting.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/expando-loss.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/functions-returning-strings.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/instanceof-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/invalid-passed-params.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/is-object.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/null-object-behaviour.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/object-deletion-behaviour.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/shader-precision-format.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/type-conversion-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/uninitialized-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/webgl-specific.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/README.md create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-A.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-B1.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-B2.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-B3.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-B4.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-C.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-D_G.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-G_I.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-L_S.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-S_V.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/constants.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/getContext.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/methods.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-A.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B3.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-C.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-D_G.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-G_I.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-L_S.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-S_V.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/webGLArrays.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bindBuffer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bindBufferBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bindFramebufferLeaveNonZero.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferData.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferDataBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferSubData.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferSubDataBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexImage2D.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexImage2DBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexSubImage2D.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexSubImage2DBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/deleteBufferBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/drawArrays.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/drawArraysOutOfBounds.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/drawElements.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/isTests.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/isTestsBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/readPixels.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/readPixelsBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2D.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2DBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2DHTML.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2DHTMLBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2D.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2DBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2DHTML.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2DHTMLBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformMatrix.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformMatrixBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformf.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformfArrayLen1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformfBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformi.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformiBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttrib.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttribBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttribPointer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttribPointerBadArgs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/glsl/arrayOutOfBounds.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/glsl/uniformOutOfBounds.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/unit.css create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/unit.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/util.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_001_to_004.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_001_to_004.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/array_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_empty_array_float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_empty_array_float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_uniform_array_float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_uniform_array_float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/initfunc_empty_array_float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/initfunc_empty_array_float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_009_to_012.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvaryyvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvaryyvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvaryyvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvaryyvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvaryyvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvaryyvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvaryyvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvaryyvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvaryyvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvaryyvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvaryyvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvaryyvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/biConstants_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/biConstants_009_to_016.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxCombinedTextureImageUnits_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxCombinedTextureImageUnits_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxDrawBuffers_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxDrawBuffers_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxFragmentUniformVectors_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxFragmentUniformVectors_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxTextureImageUnits_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxTextureImageUnits_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVaryingVectors_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVaryingVectors_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexAttribs_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexAttribs_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexTextureImageUnits_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexTextureImageUnits_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexUniformVectors_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexUniformVectors_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/DepthRange_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/DepthRange_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/biuDepthRange_001_to_002.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CG_Data_Types_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CG_Standard_Library_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectBuiltInOveride_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectComma_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectConstFolding1_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectConstFolding2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectConstruct_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectExtension10_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectExtension1_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectExtension4_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFull_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFuncOverload_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFuncOverload_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFunction1_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectModule_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParse1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParse2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParse2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParseTest1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParseTest_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectPreprocess5_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectPreprocess8_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectPreprocess9_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle1_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectVersion_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/DuplicateVersion1_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/FunctionParam_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Include_Preprocessor_Directive_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Low_Level_Assembly_Reserved_Words_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Main_Parameters_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/ParseTest3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/ParseTest4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Permissive_Constant_Conversions_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Permissive_Scalar_Vector_Expressions_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/TernaryOp_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Texture_Rectangle_Samplers_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array10_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array11_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array5_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array6_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array7_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array8_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array9_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute1_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/break_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_009_to_016.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_017_to_024.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_025_to_032.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_033_to_040.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_041_to_048.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_049_to_056.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_057_to_064.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_065_to_072.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_073_to_080.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_081_to_088.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_089_to_096.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_097_to_104.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_105_to_112.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_113_to_120.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_121_to_128.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_129_to_136.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_137_to_144.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_145_to_152.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_153_to_160.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_161_to_168.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_169_to_176.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_177_to_178.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma1_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comment_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/conditional1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/conditional2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/conditional3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constFunc_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constructor1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constructor2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constructor3_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/continue_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType10_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType11_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType12_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType13_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType19_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType5_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType6_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType7_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType8_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType9_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/default.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/default.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dowhile_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dvec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dvec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dvec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension2_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension3_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension5_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension6_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension7_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension8_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension9_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/float2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/float3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/float4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly1_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function10_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function2_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function6_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function7_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function8_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function9_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/hvec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/hvec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/hvec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/identifier1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/identifier2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/identifier3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/if1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/if2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment6_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/main1_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/main2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/main3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/matrix_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/normal_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser10_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser1_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser5_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser6_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser7_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser8_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser9_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess0_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess10_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess6_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess7_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/scoping1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/scoping2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct10_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct11_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct5_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct6_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct7_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct8_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct9_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/swizzle1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/swizzle2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/swizzle3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/typecast_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/uniform1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/uniform_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vector_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/version2_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/version3_V100_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vertexOnly2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vertexOnly_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vertex_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/while1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/while2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/while_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/built_in_varying_array_out_of_bounds/built_in_varying_array_out_of_bounds_001_to_001.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/built_in_varying_array_out_of_bounds/gl_Color_array_index_out_of_bounds_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/built_in_varying_array_out_of_bounds/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_frag_xvary_yconstquarter.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_frag_xvary_yconstquarter_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_vert_xvary_yconstquarter.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_vert_xvary_yconstquarter_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_frag_xvary_yconstquarter.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_frag_xvary_yconstquarter_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_vert_xvary_yconstquarter.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_vert_xvary_yconstquarter_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_frag_xvary_yconstquarter.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_frag_xvary_yconstquarter_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_vert_xvary_yconstquarter.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_vert_xvary_yconstquarter_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/control_flow_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/control_flow_009_to_010.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_break_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_break_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_continue_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_continue_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_break_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_break_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_continue_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_continue_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/nested_if_else_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/nested_if_else_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_001_to_002.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_frag_xvaryyconst.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_frag_xvaryyconst_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_vert_xvaryyconst.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_vert_xvaryyconst_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default_001_to_001.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default_textured.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default_textured.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/expected.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_001_to_002.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_cond_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_cond_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_frag_xvaryyhalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_frag_xvaryyhalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_vert_xvaryyhalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_vert_xvaryyhalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_frag_xvaryyhalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_frag_xvaryyhalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_vert_xvaryyhalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_vert_xvaryyhalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_frag_xvaryyhalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_frag_xvaryyhalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_vert_xvaryyhalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_vert_xvaryyhalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_frag_xvaryyone.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_frag_xvaryyone_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_vert_xvaryyone.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_vert_xvaryyone_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_frag_xvaryyhalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_frag_xvaryyhalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_vert_xvaryyhalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_vert_xvaryyhalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_frag_xvaryythird.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_frag_xvaryythird_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_vert_xvaryythird.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_vert_xvaryythird_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_009_to_012.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_009_to_012.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvaryneg.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvaryneg_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvaryneg.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvaryneg_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvaryneg.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvaryneg_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvaryneg.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvaryneg_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvaryneg.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvaryneg_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvaryneg.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvaryneg_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_009_to_012.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvaryneg.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvaryneg_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvaryneg.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvaryneg_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvaryneg.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvaryneg_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvaryneg.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvaryneg_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvaryneg.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvaryneg_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvaryneg.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvaryneg_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_frag_nvaryiconst.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_frag_nvaryiconst_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_vert_nvaryiconst.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_vert_nvaryiconst_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_frag_nvaryiconst.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_frag_nvaryiconst_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_vert_nvaryiconst.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_vert_nvaryiconst_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_frag_nvaryiconst.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_frag_nvaryiconst_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_vert_nvaryiconst.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_vert_nvaryiconst_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/array_float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/array_float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_bigarray_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_bigarray_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_009_to_016.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_017_to_024.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_025_to_032.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_033_to_040.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_041_to_048.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_049_to_056.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_057_to_064.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_065_to_072.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_073_to_080.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_081_to_088.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_089_to_096.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_097_to_104.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_105_to_112.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_113_to_120.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_121_to_126.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_bigarray_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_bigarray_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_struct_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_struct_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_bigarray_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_bigarray_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/void_empty_empty_void_empty_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/void_empty_empty_void_empty_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_001_to_003.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_w_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_xy_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_xy_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_z_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_z_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_z_frag_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FrontFacing/gl_FrontFacing_001_to_001.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FrontFacing/gl_FrontFacing_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FrontFacing/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_009_to_012.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary01.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary01_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary01.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary01_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary01.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary01_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary01.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary01_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary01.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary01_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary01.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary01_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_009_to_012.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary01.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary01_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary01.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary01_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary01.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary01_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary01.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary01_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary01.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary01_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary01.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary01_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_copy_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_copy_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_copy_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_copy_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_copy_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_copy_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_2vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_2vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_4float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_4float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_copy_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_copy_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_3vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_3vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_9float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_9float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_copy_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_copy_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_16float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_16float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_4vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_4vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_copy_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_copy_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_009_to_016.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_017_to_024.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_025_to_032.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_033_to_040.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_041_to_046.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect0_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect0_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect1_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect1_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arraysimple_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arraysimple_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixCompMult_001_to_004.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_frag_xvary_yconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_frag_xvary_yconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_vert_xvary_yconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_vert_xvary_yconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_frag_xvary_yconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_frag_xvary_yconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_vert_xvary_yconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_vert_xvary_yconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_frag_xvary_yconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_frag_xvary_yconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_vert_xvary_yconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_vert_xvary_yconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_frag_xvary_yconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_frag_xvary_yconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_vert_xvary_yconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_vert_xvary_yconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_frag_xvary_yconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_frag_xvary_yconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_vert_xvary_yconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_vert_xvary_yconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_frag_xvary_yconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_frag_xvary_yconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_vert_xvary_yconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_vert_xvary_yconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_frag_xvary_yconsthalf_aconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_frag_xvary_yconsthalf_aconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_vert_xvary_yconsthalf_aconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_vert_xvary_yconsthalf_aconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_frag_xvary_yconsthalf_aconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_frag_xvary_yconsthalf_aconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_vert_xvary_yconsthalf_aconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_vert_xvary_yconsthalf_aconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_frag_xvary_yconsthalf_aconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_frag_xvary_yconsthalf_aconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_vert_xvary_yconsthalf_aconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_vert_xvary_yconsthalf_aconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_frag_xvary_yconst1.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_frag_xvary_yconst1_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_vert_xvary_yconst1.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_vert_xvary_yconst1_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_frag_xvary_yconst1.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_frag_xvary_yconst1_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_vert_xvary_yconst1.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_vert_xvary_yconst1_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_frag_xvary_yconst1.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_frag_xvary_yconst1_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_vert_xvary_yconst1.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_vert_xvary_yconst1_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_x_large_y_large_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_x_large_y_large_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_001_to_004.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_009_to_012.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_vert_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/addsubtract_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/addsubtract_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/assignments_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/assignments_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/division_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/division_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/equality_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/equality_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/logical_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/logical_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/multiplicative_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/multiplicative_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_009_to_016.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_017_to_024.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_025_to_026.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixdecrement_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixdecrement_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixincrement_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixincrement_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixdecrement_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixdecrement_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixincrement_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixincrement_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/relational_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/relational_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/selection_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/selection_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/unary_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/unary_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_009_to_016.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_017_to_024.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconst2_yvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconst2_yvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconsthalf_yvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconsthalf_yvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconst2.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconst2_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconst2_yvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconst2_yvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconsthalf_yvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconsthalf_yvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconst2.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconst2_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconst2_yvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconst2_yvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconsthalf_yvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconsthalf_yvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconst2.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconst2_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconst2_yvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconst2_yvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconsthalf_yvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconsthalf_yvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconst2.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconst2_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconst2_yvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconst2_yvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconsthalf_yvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconsthalf_yvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconst2.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconst2_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconst2_yvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconst2_yvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconsthalf_yvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconsthalf_yvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconst2.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconst2_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_frag_ivarynconst.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_frag_ivarynconst_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_vert_ivarynconst.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_vert_ivarynconst_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_frag_ivarynconst.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_frag_ivarynconst_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_vert_ivarynconst.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_vert_ivarynconst_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_frag_ivarynconst.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_frag_ivarynconst_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_vert_ivarynconst.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_vert_ivarynconst_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_frag_ivarynconst.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_frag_ivarynconst_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_vert_ivarynconst.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_vert_ivarynconst_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_frag_ivarynconst.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_frag_ivarynconst_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_vert_ivarynconst.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_vert_ivarynconst_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_frag_ivarynconst.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_frag_ivarynconst_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_vert_ivarynconst.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_vert_ivarynconst_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_frag_xvary_edgeconstquarter.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_frag_xvary_edgeconstquarter_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_vert_xvary_edgeconstquarter.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_vert_xvary_edgeconstquarter_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_frag_xvary_edgeconstquarter.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_frag_xvary_edgeconstquarter_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_vert_xvary_edgeconstquarter.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_vert_xvary_edgeconstquarter_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_frag_xvary_edgeconstquarter.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_frag_xvary_edgeconstquarter_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_vert_xvary_edgeconstquarter.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_vert_xvary_edgeconstquarter_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_frag_xvary_edgeconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_frag_xvary_edgeconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_vert_xvary_edgeconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_vert_xvary_edgeconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_frag_xvary_edgeconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_frag_xvary_edgeconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_vert_xvary_edgeconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_vert_xvary_edgeconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_frag_xvary_edgeconsthalf.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_frag_xvary_edgeconsthalf_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_vert_xvary_edgeconsthalf.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_vert_xvary_edgeconsthalf_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/nestedstructcomb_various_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/nestedstructcomb_various_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_009_to_016.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_017_to_024.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_025_to_032.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_033_to_040.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_041_to_048.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_049_to_056.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bool_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bool_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bvec2bvec3bvec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bvec2bvec3bvec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bool_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bool_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bvec2bvec3bvec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bvec2bvec3bvec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bool_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bool_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bvec2bvec3bvec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bvec2bvec3bvec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_009_to_016.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_017_to_024.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_025_to_032.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_033_to_040.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_041_to_048.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_049_to_056.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_057_to_064.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_065_to_072.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_073_to_080.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_081_to_088.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_089_to_096.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_097_to_104.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_105_to_112.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_113_to_120.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_bgr_1vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_bgr_1vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_br_g_1vec2_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_br_g_1vec2_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_gb_r_1vec2_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_gb_r_1vec2_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_grb_1vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_grb_1vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_ps_t_1vec2_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_ps_t_1vec2_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_pts_1vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_pts_1vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rb_g_1vec2_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rb_g_1vec2_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rg_b_1vec2_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rg_b_1vec2_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rgb_1vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rgb_1vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_sp_t_1vec2_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_sp_t_1vec2_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_st_p_1vec2_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_st_p_1vec2_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_stp_1vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_stp_1vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tp_s_1vec2_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tp_s_1vec2_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tsp_1vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tsp_1vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xy_z_1vec2_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xy_z_1vec2_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xyz_1vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xyz_1vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xz_y_1vec2_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xz_y_1vec2_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yxz_1vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yxz_1vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yz_x_1vec2_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yz_x_1vec2_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zx_y_1vec2_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zx_y_1vec2_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zyx_1vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zyx_1vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ar_bg_2vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ar_bg_2vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arb_g_1vec3_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arb_g_1vec3_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arbg_1vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arbg_1vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_bar_g_1vec3_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_bar_g_1vec3_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_barg_1vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_barg_1vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_br_ag_2vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_br_ag_2vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gr_ab_2vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gr_ab_2vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gra_b_1vec3_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gra_b_1vec3_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_grab_1vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_grab_1vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqs_t_1vec3_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqs_t_1vec3_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqst_1vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqst_1vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ps_qt_2vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ps_qt_2vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qs_pt_2vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qs_pt_2vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qsp_t_1vec3_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qsp_t_1vec3_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qspt_1vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qspt_1vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_r_g_b_a_4float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_r_g_b_a_4float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rg_ba_2vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rg_ba_2vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgb_a_1vec3_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgb_a_1vec3_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgba_1vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgba_1vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_s_t_p_q_4float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_s_t_p_q_4float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_st_pq_2vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_st_pq_2vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stp_q_1vec3_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stp_q_1vec3_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stpq_1vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stpq_1vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ts_qp_2vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ts_qp_2vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsq_p_1vec3_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsq_p_1vec3_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsqp_1vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsqp_1vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wx_zy_2vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wx_zy_2vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxz_y_1vec3_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxz_y_1vec3_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxzy_1vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxzy_1vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_x_y_z_w_4float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_x_y_z_w_4float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xy_zw_2vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xy_zw_2vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyz_w_1vec3_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyz_w_1vec3_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyzw_1vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyzw_1vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yx_wz_2vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yx_wz_2vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxw_z_1vec3_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxw_z_1vec3_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxwz_1vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxwz_1vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwx_y_1vec3_1float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwx_y_1vec3_1float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwxy_1vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwxy_1vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zx_wy_2vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zx_wy_2vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_001_to_006.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_frag_xvary.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_frag_xvary_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_vert_xvary.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_vert_xvary_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/bvec4_2int_2float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/bvec4_2int_2float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/ivec3_3int_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/ivec3_3int_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_2float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_2float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_vec3_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_vec3_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_float_vec2_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_float_vec2_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec2_float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec2_float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_ivec4_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_ivec4_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_vec3_float_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_vec3_float_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec_009_to_016.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec_017_to_018.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/input.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3_001_to_008.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3array_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3array_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arraydirect_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arraydirect_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arrayindirect_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arrayindirect_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3single_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3single_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/compressed_paletted_texture/compressed_paletted_texture.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/compressed_paletted_texture/compressed_paletted_texture.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default_textured.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default_textured.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dx.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dx.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dy.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dy.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dx.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dx.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dy.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dy.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_multitexturing.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_multitexturing.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_pointSize.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_pointSize.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/copy_texture/copy_texture.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default_textured.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default_textured.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse_ref.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse_ref.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_rasterization/point_rasterization.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_rasterization/point_rasterization.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_sprites/point_sprites.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_sprites/point_sprites.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/user_clip_planes/user_clip_planes.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/user_clip_planes/user_clip_planes.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/successfulcompile_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/successfulcompile_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/unsuccessfulcompile_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/unsuccessfulcompile_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/bind_attribute_location/brick.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/bind_attribute_location/brick.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/brick.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/texture.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/wood.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/wood.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/delete_object/successfulcompile_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/delete_object/successfulcompile_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/detach_shader/successfulcompile_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/detach_shader/successfulcompile_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/framebuffer_objects/fboShader0.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/framebuffer_objects/fboShader0.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_mat2.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_mat3.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_mat4.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_vec.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_uniform/brick.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_uniform/brick.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_attribute_location/brick.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_attribute_location/brick.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_handle/successfulcompile_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_handle/successfulcompile_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_uniform_location/brick.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_uniform_location/brick.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramInfoLog_2.0/simple.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramInfoLog_2.0/simple.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramiv_2.0/brick.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramiv_2.0/brick.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetShaderInfoLog_2.0/simple.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetShaderInfoLog_2.0/simple.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/bvec_tests.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/bvec_tests.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/ivec_tests.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/ivec_tests.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/mat_tests.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/mat_tests.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/vec_tests.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/vec_tests.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetVertexAttrib/mat_tests.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetVertexAttrib/mat_tests2.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetVertexAttrib/vec_tests.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1b_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1b_vert.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1b_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1f_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1f_vert.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1f_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1i_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1i_vert.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1i_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/21f_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/21i_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/22f_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/22i_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/23f_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/23i_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/24f_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/24i_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2b_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2b_vert.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2b_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2f_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2f_vert.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2f_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2i_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2i_vert.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2i_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2m_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3b_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3b_vert.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3b_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3f_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3f_vert.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3f_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3i_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3i_vert.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3i_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3m_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_firstthree_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_firstthree_vert.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_lastthree_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_lastthree_vert.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4f_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4f_vert.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4f_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4i_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4i_vert.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4i_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4m_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/default.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2VSU.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2VSU.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2arrayVSU.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2arrayVSU.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrixVSU.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrixVSU.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/successfulcompile_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/successfulcompile_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/unsuccessfulcompile_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/unsuccessfulcompile_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/precision_specifiers/precision_specifiers.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/precision_specifiers/precision_specifiers.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/relink_program/simple.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/relink_program/simple.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/successfulcompile_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/successfulcompile_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/unsuccessfulcompile_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/unsuccessfulcompile_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/three_uniforms/4f_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/successfulcompile_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/successfulcompile_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/unsuccessfulcompile_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/unsuccessfulcompile_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/successfulcompile_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/successfulcompile_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/unsuccessfulcompile_frag.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/unsuccessfulcompile_vert.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/vertex_program_point_size/point_size.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/README.md create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/mustpass.run.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/ogles-utils.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/process-ogles2-tests.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/get-active-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-bind-attrib-location-long-names-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-bind-attrib-location-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-get-active-attribute.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-get-active-uniform.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-getshadersource.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-shader-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/invalid-UTF-16.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/program-infolog.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/program-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/use-program-crash-with-discard-in-fragment-shader.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/reading/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/reading/read-pixels-pack-alignment.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/reading/read-pixels-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/feedback-loop.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/framebuffer-object-attachment.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/framebuffer-state-restoration.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/framebuffer-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/renderbuffer-initialization.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/clipping-wide-points.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/culling.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/default-texture-draw-bug.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/draw-arrays-out-of-bounds.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/draw-elements-out-of-bounds.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/draw-with-changing-start-vertex-bug.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/framebuffer-switch.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/framebuffer-texture-switch.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-clear.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-drawarrays.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-drawelements.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-scissor-canvas-dimensions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-scissor-fbo-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-scissor-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-viewport-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/line-loop-tri-fan.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/many-draw-calls.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/more-than-65536-indices.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/multisample-corruption.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/negative-one-index.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/out-of-bounds-index-buffers.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-no-attributes.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-size.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-specific-shader-variables.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/polygon-offset.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/simple.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/triangle.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/diffs.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-enable-enum-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-enum-tests.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-get-calls.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-geterror.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-getstring.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-initial-state.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-object-get-calls.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/state-uneffected-after-compositing.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgb-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgb-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgba-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgb-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgb-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgba-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgb-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgb-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgba-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgb-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgb-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgba-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgb-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgb-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgba-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgb-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgb-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgba-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgb-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgb-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgba-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgb-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgb-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgba-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgb-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgb-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgba-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/compressed-tex-image.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/copy-tex-image-2d-formats.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/copy-tex-image-and-sub-image-2d.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/copy-tex-sub-image-2d-partial-texture.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/cube-incomplete-fbo.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/default-texture.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/gl-get-tex-parameter.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/gl-pixelstorei.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/gl-teximage.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/mipmap-fbo.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/origin-clean-conformance.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-and-sub-image-2d-with-array-buffer-view.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-and-uniform-binding-bugs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-canvas-corruption.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-webgl.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-with-format-and-type.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-with-invalid-data.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-input-validation.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-sub-image-2d-bad-args.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-sub-image-2d.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texparameter-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-active-bind-2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-active-bind.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-attachment-formats.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-clear.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-complete.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-copying-feedback-loops.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-cube-as-fbo-attachment.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-draw-with-2d-and-cube.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-fakeblack.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-formats-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-hd-dpi.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-mips.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-npot-video.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-npot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-size-cube-maps.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-size-limit.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-size.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-sub-image-cube-maps.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-transparent-pixels-initialized.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-upload-cube-maps.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-upload-size.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgb-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgb-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgba-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgb-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgba-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgb-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgb-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgba-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-buffer-crash.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-buffer-view-crash.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-large-array-tests.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-unit-tests.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/data-view-crash.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/data-view-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/typed-arrays-in-workers.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-uniform-arrays.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-uniform-bool.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-uniformmatrix4fv.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-unknown-uniform.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/null-uniform-location.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/out-of-bounds-uniform-array-access.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-default-values.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-location.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-samplers-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-values-per-program.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertex-attrib-i-render.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertex-attrib.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertexattribipointer-offsets.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertexattribipointer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/bound-buffer-size-change-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-copying-contents.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-copying-restrictions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-data-and-buffer-sub-data-sub-source.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-overflow-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-type-restrictions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/get-buffer-sub-data.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/one-large-uniform-buffer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/uniform-buffers.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/constants-and-properties-2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/context-attributes-depth-stencil-antialias-obeyed.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/context-type-test-2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/methods-2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/ext-color-buffer-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/ext-disjoint-timer-query-webgl2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/promoted-extensions-in-shaders.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/promoted-extensions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-as-return-value.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-assign-constructor.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-assign.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-complex-indexing.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-element-increment.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-equality.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-in-complex-expression.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/attrib-location-length-limits.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/bool-type-cast-bug-uint-ivec-uvec.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/compare-structs-containing-arrays.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/compound-assignment-type-combination.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/const-array-init.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/forbidden-operators.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/frag-depth.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/invalid-default-precision.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/invalid-invariant.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/loops-with-side-effects.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/misplaced-version-directive.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/no-attribute-vertex-shader.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/sampler-no-precision.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/sequence-operator-returns-non-constant.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-linking.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1024-character-define.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1024-character-identifier.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1025-character-define.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1025-character-identifier.frag.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-invalid-characters.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-mis-matching-uniform-block.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/short-circuiting-in-loop-condition.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/texture-offset-out-of-range.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/texture-offset-uniform-texture-coordinate.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/tricky-loop-conditions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/unary-minus-operator-in-dynamic-loop.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/uniform-block-layout-match.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/uniform-block-layouts.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/uniform-location-length-limits.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/valid-invariant.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/vector-dynamic-indexing-nv-driver-bug.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/vector-dynamic-indexing.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/expando-loss-2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/getextension-while-pbo-bound-stability.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/instanceof-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/object-deletion-behaviour-2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/uninitialized-test-2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/views-with-offsets.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/programs/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/programs/gl-get-frag-data-location.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/query/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/query/occlusion-query.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/query/query.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/format-r11f-g11f-b10f.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-from-fbo-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-from-rgb8-into-pbo-bug.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-into-pixel-pack-buffer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-pack-parameters.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-object-attachment.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-texture-layer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/invalidate-framebuffer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/multisample-with-full-sample-counts.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/multisampled-renderbuffer-initialization.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/readbuffer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/attrib-type-match.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-filter-outofbounds.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-filter-srgb.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-multisampled-readbuffer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-outside-readbuffer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-scissor-enabled.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-size-overflow.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-srgb-and-linear-drawbuffers.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-stencil-only.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/canvas-resizing-with-pbo-bound.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/clear-func-buffer-type-match.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/clear-srgb-color-buffer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/clipping-wide-points.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/draw-buffers.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/element-index-uint.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/framebuffer-completeness-unaffected.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/framebuffer-unsupported.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/fs-color-type-mismatch-color-buffer-type.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/instanced-arrays.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/instanced-rendering-bug.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/out-of-bounds-index-buffers-after-copying.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/rendering-sampling-feedback-loop.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/rgb-format-support.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/uniform-block-buffer-size.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/samplers/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/samplers/sampler-drawing-test.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/samplers/samplers.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-enum-tests.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-get-calls.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-getstring.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-object-get-calls.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/sync/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/sync/sync-webgl-specific.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/active-3d-texture-bug.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/copy-texture-image-luma-format.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/copy-texture-image-webgl-specific.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/copy-texture-image.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/gl-get-tex-parameter.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/integer-cubemap-specification-order-bug.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/integer-cubemap-texture-sampling.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/mipmap-fbo.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-3d-size-limit.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-and-sub-image-with-array-buffer-view-sub-source.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-with-bad-args-from-dom-elements.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-with-bad-args.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-with-different-data-source.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-input-validation.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-mipmap-levels.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-new-formats.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-srgb-mipmap.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-storage-2d.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-storage-and-subimage-3d.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-storage-compressed-formats.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-unpack-params.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/texel-fetch-undefined.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/texture-npot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb9_e5-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb9_e5-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r11f_g11f_b10f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r11f_g11f_b10f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r16f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r16f-red-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r32f-red-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r8-red-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r8ui-red_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg16f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg16f-rg-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg32f-rg-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg8-rg-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg8ui-rg_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb16f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb16f-rgb-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb32f-rgb-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb565-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb5_a1-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba16f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba16f-rgba-half_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba32f-rgba-float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba4-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-srgb8-rgb-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/transform_feedback.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/two-unreferenced-varyings.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/unwritten-output-defaults-to-zero.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/vertex_arrays/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/vertex_arrays/vertex-array-object.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/LICENSE create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/README.md create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/build.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/compiler.jar create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/compiler_additional_extern.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/conditionals.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/conditionals.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/constant_expressions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/constant_expressions.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/constants.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/constants.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/conversions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/conversions.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/declarations.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/declarations.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/fragdata.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/fragdata.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/functions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/functions.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/invalid_texture_functions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/invalid_texture_functions.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/keywords.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/keywords.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/linkage.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/linkage.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/preprocessor.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/preprocessor.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/qualification_order.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/qualification_order.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/reserved_operators.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/reserved_operators.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/scoping.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/scoping.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/swizzles.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles2/shaders/swizzles.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/arrays.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/arrays.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/conditionals.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/conditionals.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/constant_expressions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/constant_expressions.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/constants.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/constants.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/conversions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/conversions.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/declarations.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/declarations.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/fragdata.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/fragdata.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/functions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/functions.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/invalid_texture_functions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/invalid_texture_functions.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/keywords.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/keywords.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/linkage.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/linkage.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/negative.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/negative.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/preprocessor.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/preprocessor.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/qualification_order.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/qualification_order.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/scoping.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/scoping.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/switch.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/switch.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/swizzles.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/data/gles3/shaders/swizzles.test create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/deqp-deps.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuBilinearImageCompare.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuCompressedTexture.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuFloat.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuFloatFormat.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuFuzzyImageCompare.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuImageCompare.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuInterval.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuLogImage.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuMatrix.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuMatrixUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuPixelFormat.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuRGBA.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuSkipList.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuStringTemplate.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuSurface.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuTestCase.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuTexCompareVerifier.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuTexLookupVerifier.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuTexVerifierUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuTexture.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/common/tcuTextureUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/delibs/debase/deMath.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/delibs/debase/deRandom.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/delibs/debase/deString.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/delibs/debase/deUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/gluDrawUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/gluObjectWrapper.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/gluPixelTransfer.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/gluShaderProgram.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/gluShaderUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/gluStrUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/gluTexture.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/gluTextureUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/gluVarType.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/gluVarTypeUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/simplereference/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/simplereference/referencecontext.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/simplereference/sglrGLContext.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/simplereference/sglrReferenceContext.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/simplereference/sglrReferenceContextTest.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/simplereference/sglrReferenceUtils.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/opengl/simplereference/sglrShaderProgram.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/referencerenderer/rrDefs.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/referencerenderer/rrFragmentOperations.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/referencerenderer/rrGenericVector.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/referencerenderer/rrMultisamplePixelBufferAccess.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/referencerenderer/rrRenderState.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/referencerenderer/rrRenderer.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/referencerenderer/rrShaders.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/referencerenderer/rrShadingContext.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/referencerenderer/rrUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/referencerenderer/rrVertexAttrib.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/framework/referencerenderer/rrVertexPacket.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/attriblocation.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/booleanstatequery.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/buffercopy.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/bufferobjectquery.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/abs.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/acos.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/acosh.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/add.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/asin.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/asinh.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/atan.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/atan2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/atanh.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/builtinprecision_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/ceil.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/clamp.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/cos.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/cosh.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/cross.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/degrees.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/determinant.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/distance.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/div.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/dot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/exp.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/exp2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/faceforward.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/floor.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/fract.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/inverse.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/inversesqrt.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/length.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/log.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/log2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/matrixcompmult.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/max.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/min.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/mix.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/mod.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/modf.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/mul.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/normalize.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/outerproduct.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/pow.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/radians.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/reflect.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/refract.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/round.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/roundeven.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/sign.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/sin.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/sinh.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/smoothstep.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/sqrt.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/step.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/sub.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/tan.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/tanh.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/transpose.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/builtinprecision/trunc.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/clipping.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/defaultvertexattribute.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/draw/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/draw/draw_arrays.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/draw/draw_arrays_instanced.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/draw/draw_elements.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/draw/draw_elements_instanced.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/draw/draw_range_elements.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/draw/draw_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/draw/instancing.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/draw/random.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fApiCase.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fAttribLocationTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fBooleanStateQuery.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fBufferCopyTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fBufferObjectQueryTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fBuiltinPrecisionTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fClippingTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fDefaultVertexAttributeTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fDrawTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fFboColorbufferTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fFboCompletenessTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fFboDepthbufferTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fFboInvalidateTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fFboMultisampleTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fFboRenderTest.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fFboStateQueryTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fFboStencilbufferTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fFboTestCase.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fFboTestUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fFloatStateQueryTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fFragDepthTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fFragmentOutputTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fFramebufferBlitTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fIndexedStateQueryTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fInstancedRenderingTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fIntegerStateQueryTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fInternalFormatQueryTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fLifetimeTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fMultisampleTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fNegativeBufferApiTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fNegativeFragmentApiTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fNegativeShaderApiTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fNegativeStateApiTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fNegativeTextureApiTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fNegativeVertexArrayApiTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fOcclusionQueryTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fPixelBufferObjectTest.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fPrimitiveRestartTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fRasterizerDiscardTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fRboStateQueryTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fReadPixelTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fSamplerObjectTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fSamplerStateQueryTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fShaderApiTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fShaderBuiltinVarTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fShaderCommonFunctionTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fShaderDerivateTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fShaderIndexingTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fShaderLoopTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fShaderMatrixTest.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fShaderOperatorTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fShaderPackingFunctionTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fShaderPrecisionTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fShaderStateQueryTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fShaderStructTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fShaderSwitchTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fShaderTextureFunctionTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fStringQueryTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fSyncTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fTextureFilteringTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fTextureFormatTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fTextureShadowTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fTextureSpecificationTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fTextureStateQuery.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fTextureWrapTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fTransformFeedbackTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fUniformApiTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fUniformBlockTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fVertexArrayObjectTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/es3fVertexArrayTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/blend.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/clear.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/fbocolorbuffer_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2d_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2d_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2d_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2d_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2d_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2d_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2darray_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2darray_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2darray_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2darray_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2darray_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2darray_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex3d_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex3d_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex3d_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex3d_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex3d_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/tex3d_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/texcube_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/texcube_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/texcube_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/texcube_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/texcube_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocolorbuffer/texcube_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbocompleteness.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbodepthbuffer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fboinvalidate/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fboinvalidate/default.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fboinvalidate/fboinvalidate_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fboinvalidate/format_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fboinvalidate/format_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fboinvalidate/format_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fboinvalidate/sub.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fboinvalidate/target.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fboinvalidate/whole.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbomultisample.2_samples.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbomultisample.4_samples.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbomultisample.8_samples.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/fborender_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/recreate_color_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/recreate_color_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/recreate_color_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/recreate_color_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/recreate_color_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/recreate_color_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/recreate_color_06.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/recreate_depth_stencil.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/resize_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/resize_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/resize_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/resize_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/shared_colorbuffer_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/shared_colorbuffer_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/shared_colorbuffer_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/shared_colorbuffer_clear.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/shared_depth_stencil.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fborender/stencil_clear.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbostatequery.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fbostencilbuffer.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/floatstatequery.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fragdepth.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fragmentoutput/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fragmentoutput/array.fixed.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fragmentoutput/array.float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fragmentoutput/array.int.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fragmentoutput/array.uint.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fragmentoutput/basic.fixed.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fragmentoutput/basic.float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fragmentoutput/basic.int.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fragmentoutput/basic.uint.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fragmentoutput/fragmentoutput_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fragmentoutput/random_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fragmentoutput/random_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/fragmentoutput/random_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_06.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_07.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_08.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_09.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_10.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_11.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_12.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_13.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_14.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_15.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_16.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_17.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_18.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_19.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_20.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_21.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_22.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_23.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_24.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_25.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_26.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_27.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_28.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_29.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_30.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_31.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_32.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_33.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/conversion_34.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/default_framebuffer_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/default_framebuffer_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/default_framebuffer_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/default_framebuffer_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/default_framebuffer_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/default_framebuffer_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/default_framebuffer_06.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/depth_stencil.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/frambufferblit_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/rect_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/rect_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/rect_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/rect_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/rect_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/rect_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/framebufferblit/rect_06.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/indexedstatequery.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/instancedrendering.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/integerstatequery.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/internalformatquery.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/lifetime.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/multisample.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/negativebufferapi.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/negativefragmentapi.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/negativeshaderapi.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/negativestateapi.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/negativetextureapi.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/negativevertexarrayapi.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/occlusionquery_conservative.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/occlusionquery_strict.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/pixelbufferobject.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/primitiverestart/00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/primitiverestart/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/primitiverestart/01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/primitiverestart/02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/primitiverestart/03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/primitiverestart/04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/primitiverestart/05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/primitiverestart/06.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/primitiverestart/07.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/primitiverestart/primitiverestart_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/rasterizerdiscard.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/rbostatequery.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/readpixel.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/samplerobject.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/samplerstatequery.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderapi.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderbuiltinvar.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadercommonfunction.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderderivate_dfdx.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderderivate_dfdy.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderderivate_fwidth.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderindexing/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderindexing/mat_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderindexing/mat_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderindexing/mat_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderindexing/shaderindexing_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderindexing/tmp.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderindexing/uniform.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderindexing/varying.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderindexing/vec2.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderindexing/vec3.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderindexing/vec4.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderloop_do_while.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderloop_for.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderloop_while.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/add_assign.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/add_const.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/add_dynamic.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/add_uniform.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/determinant.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/div_assign.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/div_const.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/div_dynamic.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/div_uniform.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/inverse.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/matrixcompmult.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/mul_assign.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/mul_const_highp.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/mul_const_lowp.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/mul_const_mediump.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/mul_dynamic_highp.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/mul_dynamic_lowp.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/mul_dynamic_mediump.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/mul_uniform_highp.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/mul_uniform_lowp.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/mul_uniform_mediump.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/negation.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/outerproduct.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/post_decrement.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/post_increment.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/pre_decrement.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/pre_increment.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/shadermatrix_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/sub_assign.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/sub_const.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/sub_dynamic.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/sub_uniform.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/transpose.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadermatrix/unary_addition.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/angle_and_trigonometry_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/angle_and_trigonometry_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/angle_and_trigonometry_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/angle_and_trigonometry_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_06.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_07.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_08.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_09.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_10.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_11.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_12.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_13.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_14.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/binary_operator_15.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/bool_compare.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/common_functions.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/exponential.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/float_compare.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/geometric.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/int_compare.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/selection.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/sequence.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/shaderoperator_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/unary_operator_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/unary_operator_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderoperator/unary_operator_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderpackingfunction.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderprecision_float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderprecision_int.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderprecision_uint.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderstatequery.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderstruct.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shaderswitch.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/shadertexturefunction_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/texelfetch.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/texelfetchoffset.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/texture.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/texturegrad.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/texturegradoffset.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/texturelod.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/texturelodoffset.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/textureoffset.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/textureproj.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/textureprojgrad.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/textureprojgradoffset.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/textureprojlod.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/textureprojlodoffset.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/textureprojoffset.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/shadertexturefunction/texturesize.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/stringquery.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/sync.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_combinations_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_combinations_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_combinations_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_combinations_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_combinations_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_combinations_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_formats_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_formats_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_formats_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_formats_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_formats_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_formats_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_formats_06.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_formats_07.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_formats_08.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_formats_09.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_sizes_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_sizes_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_sizes_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_sizes_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_array_sizes_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_combinations_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_combinations_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_combinations_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_combinations_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_combinations_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_combinations_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_06.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_07.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_08.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_09.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_sizes_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_sizes_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_sizes_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_sizes_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_sizes_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/2d_sizes_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_06.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_07.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_08.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_09.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_10.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_11.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_12.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_13.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_14.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_15.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_16.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_17.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_18.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_19.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_20.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_21.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_22.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_23.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_24.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_25.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_26.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_27.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_28.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_29.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_30.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_31.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_32.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_33.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_34.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_combinations_35.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_formats_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_formats_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_formats_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_formats_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_formats_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_formats_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_formats_06.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_formats_07.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_formats_08.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_formats_09.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_sizes_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_sizes_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_sizes_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_sizes_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/3d_sizes_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_combinations_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_combinations_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_combinations_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_combinations_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_combinations_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_combinations_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_05.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_06.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_07.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_08.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_09.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_no_edges_visible.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_sizes_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_sizes_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_sizes_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_sizes_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/cube_sizes_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturefiltering/texturefiltering_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/compressed_2d.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/compressed_cube.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_array_npot_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_array_npot_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_array_npot_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_array_npot_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_array_pot_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_array_pot_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_array_pot_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_array_pot_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_npot_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_npot_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_npot_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_npot_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_pot_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_pot_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_pot_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_pot_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_3d_npot_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_3d_npot_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_3d_npot_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_3d_npot_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_3d_pot_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_3d_pot_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_3d_pot_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_3d_pot_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_npot_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_npot_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_npot_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_npot_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_pot_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_pot_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_pot_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_pot_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/sized_depth_stencil.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/textureformat_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/unsized_2d.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/unsized_2d_array.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureformat/unsized_3d.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_linear_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_linear_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_linear_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_linear_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_linear_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_linear_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_linear_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_linear_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_nearest_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_nearest_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_nearest_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_nearest_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_nearest_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_nearest_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_nearest_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_mipmap_nearest_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_linear_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_linear_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_linear_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_linear_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_linear_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_linear_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_linear_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_linear_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_linear_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_nearest_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_nearest_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_nearest_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_nearest_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_nearest_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_nearest_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_nearest_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_mipmap_nearest_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_array_nearest_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_linear_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_linear_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_linear_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_linear_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_linear_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_linear_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_linear_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_linear_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_nearest_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_nearest_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_nearest_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_nearest_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_nearest_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_nearest_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_nearest_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_mipmap_nearest_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_linear_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_linear_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_linear_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_linear_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_linear_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_linear_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_linear_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_linear_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_linear_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_nearest_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_nearest_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_nearest_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_nearest_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_nearest_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_nearest_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_nearest_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_mipmap_nearest_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/2d_nearest_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_linear_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_linear_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_linear_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_linear_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_linear_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_linear_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_linear_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_linear_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_nearest_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_nearest_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_nearest_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_nearest_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_nearest_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_nearest_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_nearest_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_mipmap_nearest_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_linear_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_linear_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_linear_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_linear_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_linear_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_linear_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_linear_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_linear_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_linear_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_nearest_always.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_nearest_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_nearest_greater.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_nearest_greater_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_nearest_less.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_nearest_less_or_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_nearest_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_mipmap_nearest_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_never.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/cube_nearest_not_equal.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/textureshadow/textureshadow_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_copyteximage2d.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_copytexsubimage2d.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage2d_2d_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage2d_2d_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage2d_cube_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage2d_cube_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage2d_cube_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage2d_cube_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage2d_cube_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage3d_2d_array_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage3d_2d_array_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage3d_2d_array_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage3d_3d_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage3d_3d_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage3d_3d_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage3d_3d_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_teximage3d_3d_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_2d_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_2d_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_2d_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_cube_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_cube_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_cube_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_cube_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_cube_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage3d_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage3d_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage3d_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage3d_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage3d_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/random_teximage2d_2d.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/random_teximage2d_cube.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage2d_align.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage2d_depth.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage2d_depth_pbo.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage2d_pbo_2d_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage2d_pbo_2d_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage2d_pbo_cube_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage2d_pbo_cube_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage2d_pbo_cube_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage2d_pbo_cube_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage2d_pbo_cube_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage2d_pbo_params.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage2d_unpack_params.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage3d_depth.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage3d_depth_pbo.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage3d_pbo_2d_array_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage3d_pbo_2d_array_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage3d_pbo_3d_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage3d_pbo_3d_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage3d_pbo_params.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/teximage3d_unpack_params.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_2d_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_2d_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_2d_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_cube_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_cube_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_cube_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_cube_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_cube_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_depth_stencil.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_size.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_2d_array_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_2d_array_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_2d_array_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_3d_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_3d_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_3d_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_3d_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_depth_stencil.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_size.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_align.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_depth.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_empty_tex.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_pbo_2d_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_pbo_2d_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_pbo_cube_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_pbo_cube_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_pbo_cube_02.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_pbo_cube_03.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_pbo_cube_04.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_pbo_params.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_unpack_params.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage3d_depth.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage3d_pbo_2d_array_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage3d_pbo_2d_array_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage3d_pbo_3d_00.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage3d_pbo_3d_01.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage3d_pbo_params.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texsubimage3d_unpack_params.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturespecification/texturespecification_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturestatequery.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/eac_r11_npot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/eac_r11_pot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/eac_rg11_npot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/eac_rg11_pot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/eac_signed_r11_npot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/eac_signed_r11_pot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/eac_signed_rg11_npot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/eac_signed_rg11_pot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/etc2_eac_rgba8_npot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/etc2_eac_rgba8_pot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/etc2_eac_srgb8_alpha8_npot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/etc2_eac_srgb8_alpha8_pot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/etc2_rgb8_npot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/etc2_rgb8_pot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/etc2_rgb8_punchthrough_alpha1_npot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/etc2_rgb8_punchthrough_alpha1_pot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/etc2_srgb8_npot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/etc2_srgb8_pot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/etc2_srgb8_punchthrough_alpha1_npot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/etc2_srgb8_punchthrough_alpha1_pot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/rgba8_npot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/rgba8_pot.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/texturewrap/texturewrap_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/array_element_interleaved_lines.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/array_element_interleaved_points.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/array_element_interleaved_triangles.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/array_element_separate_lines.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/array_element_separate_points.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/array_element_separate_triangles.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/array_interleaved_lines.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/array_interleaved_points.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/array_interleaved_triangles.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/array_separate_lines.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/array_separate_points.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/array_separate_triangles.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/basic_types_interleaved_lines.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/basic_types_interleaved_points.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/basic_types_interleaved_triangles.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/basic_types_separate_lines.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/basic_types_separate_points.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/basic_types_separate_triangles.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/interpolation_centroid.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/interpolation_flat.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/interpolation_smooth.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/point_size.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/position.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/random_interleaved_lines.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/random_interleaved_points.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/random_interleaved_triangles.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/random_separate_lines.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/random_separate_points.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/random_separate_triangles.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/transformfeedback/transformfeedback_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformapi/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformapi/info_query.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformapi/random.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformapi/uniformapi_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformapi/value_assigned.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformapi/value_initial.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformbuffers/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformbuffers/instance_array_basic_type.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformbuffers/multi_basic_types.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformbuffers/multi_nested_struct.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformbuffers/random.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformbuffers/single_basic_array.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformbuffers/single_basic_type.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformbuffers/single_nested_struct.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformbuffers/single_nested_struct_array.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformbuffers/single_struct.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformbuffers/single_struct_array.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/uniformbuffers/uniformbuffers_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrayobject.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/00_test_list.txt create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/multiple_attributes.count.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/multiple_attributes.output.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/multiple_attributes.storage.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/multiple_attributes.stride.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.first.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.normalize.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.offset.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.float.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.half.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.int.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.int_2_10_10_10.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.short.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.unsigned_byte.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.unsigned_int.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.unsigned_int_2_10_10_10.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.unsigned_short.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.stride.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.dynamic_copy.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.dynamic_draw.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.dynamic_read.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.static_copy.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.static_draw.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.static_read.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.stream_copy.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.stream_draw.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.stream_read.html create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/functional/gles3/vertexarrays/vertexarrays_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/genHTMLfromTest.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsAttributeLocationTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsBufferTestUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsBuiltinPrecisionTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsBuiltinPrecisionTestsUnitTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsDrawTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsFboCompletenessTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsFboUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsLifetimeTests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsRandomUniformBlockCase.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsSamplerObjectTest.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsShaderExecUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsShaderLibrary.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsShaderLibraryCase.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsShaderRenderCase.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsStateQuery.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsTextureTestUtil.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsUniformBlockCase.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/modules/shared/glsVertexArrayTests.js create mode 100755 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/run-closure.sh create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/chrome.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/deprecated.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/es3.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/es5.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/es6.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/es6_collections.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/fileapi.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/flash.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/gecko_css.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/gecko_dom.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/gecko_event.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/gecko_xml.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/google.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/html5.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/ie_css.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/ie_dom.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/ie_event.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/ie_vml.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/intl.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/iphone.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/mediasource.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/page_visibility.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/v8.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_anim_timing.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_css.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_css3d.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_device_sensor_event.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_dom1.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_dom2.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_dom3.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_elementtraversal.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_encoding.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_event.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_event3.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_geolocation.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_indexeddb.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_navigation_timing.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_range.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_rtc.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_selectors.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/w3c_xml.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/webkit_css.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/webkit_dom.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/webkit_event.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/webkit_notifications.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/webstorage.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/temp_externs/window.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/test-webgl2.js create mode 100755 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/test-webgl2.sh create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/webgl2.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/extra/50x50pixel-black-with-red-triangle.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/extra/canvas-compositing-test.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/extra/sample-100.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/extra/sample-200.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/extra/sample-400.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/extra/sample.svg create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/extra/tex-image-with-video-test.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/desktop-gl-constants.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/glsl-conformance-test.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/glsl-constructor-tests-generator.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/glsl-generator.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/js-test-post.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/js-test-pre.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/pnglib.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/test-eval.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/clipping-wide-points.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/compound-assignment-type-combination.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/gl-enum-tests.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/gl-get-tex-parameter.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/gl-object-get-calls.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/gl-vertex-attrib.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/instanceof-test.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/iterable-test.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/oes-texture-float-and-half-float-linear.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/out-of-bounds-test.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-2d-with-canvas-sub-rectangle.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-2d-with-canvas.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-2d-with-image-bitmap-from-blob.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-2d-with-image-bitmap-from-canvas.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-2d-with-image-bitmap-from-image-bitmap.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-2d-with-image-bitmap-from-image-data.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-2d-with-image-bitmap-from-image.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-2d-with-image-bitmap-from-video.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-2d-with-image-data.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-2d-with-image.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-2d-with-svg-image.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-2d-with-video.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-2d-with-webgl-canvas.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-3d-with-canvas-sub-rectangle.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-3d-with-canvas.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-3d-with-image-bitmap-from-blob.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-3d-with-image-bitmap-from-canvas.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-3d-with-image-bitmap-from-image-bitmap.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-3d-with-image-bitmap-from-image-data.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-3d-with-image-bitmap-from-image.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-3d-with-image-bitmap-from-video.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-3d-with-image-data.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-3d-with-image.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-3d-with-svg-image.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-3d-with-video.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-3d-with-webgl-canvas.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-utils.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-image-and-sub-image-with-image-bitmap-utils.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/tex-input-validation.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/typed-array-test-cases.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/tests/typed-array-worker.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/webgl-test-harness.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/js/webgl-test-utils.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/py/lint/LICENSE create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/py/lint/README.md create mode 100755 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/py/lint/lint.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/py/lint/lint.whitelist create mode 100755 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/py/tex_image_test_generator.py create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/1-channel.jpg create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/3x3.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/blue-1x1.jpg create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/boolUniformShader.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/bug-32888-texture.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/floatUniformShader.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/fragmentShader.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/glsl-feature-tests.css create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/glsl-generator.js create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/gray-1024x1024.jpg create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/gray-ramp-256-with-128-alpha.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/gray-ramp-256.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/gray-ramp-default-gamma.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/gray-ramp-gamma0.1.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/gray-ramp-gamma1.0.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/gray-ramp-gamma2.0.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/gray-ramp-gamma4.0.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/gray-ramp-gamma9.0.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/gray-ramp.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/green-2x2-16bit.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/intArrayUniformShader.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/intUniformShader.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/js-test-style.css create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/matForWebGL2UniformShader.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/matUniformShader.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/noopUniformShader.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/noopUniformShader.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/noopUniformShaderES3.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/noopUniformShaderES3.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/npot-video.mp4 create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/npot-video.theora.ogv create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/npot-video.webmvp8.webm create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/ogles-tests.css create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/opengl_logo.jpg create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/red-green-blue-cyan-4x4.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/red-green-blue-cyan-4x4.psd create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/red-green-semi-transparent.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/red-green.bt601.vp9.webm create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/red-green.mp4 create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/red-green.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/red-green.svg create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/red-green.theora.ogv create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/red-green.webmvp8.webm create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/red-indexed.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/samplerForWebGL2UniformShader.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/samplerUniformShader.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/small-square-with-cie-rgb-profile.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/small-square-with-colormatch-profile.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/small-square-with-colorspin-profile.jpg create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/small-square-with-colorspin-profile.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/small-square-with-e-srgb-profile.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/small-square-with-smpte-c-profile.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/small-square-with-srgb-iec61966-2.1-profile.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/structUniformShader.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/thunderbird-logo-64x64.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/transparent-on-left-indexed.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/uintUniformShader.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/uniformBlockShader.frag create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/uniformBlockShader.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/vertexShader.vert create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/webgl-logo.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/resources/zero-alpha.png create mode 100644 tests/wpt/mozilla/tests/webgl/conformance-2.0.0/test-guidelines.md diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/00_test_list.txt new file mode 100644 index 00000000000..3fde5ef8de5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/00_test_list.txt @@ -0,0 +1,7 @@ +// files that end in .txt list other tests +// other lines are assumed to be .html files + +conformance/00_test_list.txt +conformance/more/00_test_list.txt +deqp/00_test_list.txt +--min-version 2.0.0 conformance2/00_test_list.txt diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/CONFORMANCE_RULES.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/CONFORMANCE_RULES.txt new file mode 100644 index 00000000000..c267d34b083 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/CONFORMANCE_RULES.txt @@ -0,0 +1,127 @@ +Rules for Claiming a Conformant WebGL Implementation +==================================================== + +The WebGL API is a web standard, and many web browser implementers +deliver their browser on multiple operating systems (OSs). WebGL +implementations also typically rely on the presence of an OpenGL or +OpenGL ES implementation on the OS. It can be appreciated that a WebGL +implementation therefore has many dependencies. This document attempts +to clarify to potential implementers the rules the Khronos Group uses +to judge whether a particular WebGL implementation is conformant. + +There are two primary reasons to submit conformance results: + + A) A web browser implementer desires to certify their WebGL + implementation as conformant. + + B) A GPU manufacturer delivering an embedded system including web + browser with WebGL support desires to certify their WebGL + implementation as conformant. + +Each of these situations carries different constraints, so the +conformance rules are phrased differently for each. Typically, a web +browser implementer aims to certify that the WebGL "layer" is correct. +A GPU vendor typically aims to certify that a given device is +physically capable of passing the tests. + +A newly-developed WebGL implementation should not support the "webgl" +HTML Canvas context type by default in a shipping version of the +product until reaching conformance. It is acceptable to give end users +an option to turn on WebGL support in a non-conformant implementation +as long as the documentation for that option clearly indicates that +the implementation is not yet conformant and may have compatibility +issues. It is suggested that the Canvas context type +"experimental-webgl" may be supported by default in such +implementations. + +A WebGL implementation might reach conformance, but a subsequent +graphics driver release on a particular OS might introduce a +regression causing failures of one or more of the WebGL conformance +tests. In this situation it is not required to revoke support for the +"webgl" HTML Canvas context type. The WebGL implementer should work +with the GPU vendor to ensure the driver regression is fixed. A +situation like this would, however, prevent the WebGL implementer from +conforming to a subsequent version of the test suite. + +(A) Conformance Rules for a Web Browser Implementer +=================================================== + +1. Conformance on a particular operating system + +On a given OS, a WebGL implementation will be considered to conform to +a particular version of the conformance suite if the suite passes with +no test failures on at least two GPUs, each from a different +vendor. If the OS only supports a GPU from one vendor, the two-GPU +requirement is dropped. + +2. Conformance across multiple operating systems + +A WebGL implementation will be considered to conform to a particular +version of the conformance suite if it passes rule (1) on all of the +OSs on which the WebGL implementation is intended to be supported. + +3. Conformance as the web browser is upgraded + +WebGL conformance results submitted for an earlier version of the +browser carry forward to later versions of the browser that do not +cause any previously passing test to fail. + +4. Conformance as the operating system is upgraded + +If a new version is released of one of the OSs on which a WebGL +implementation is intended to run, then WebGL conformance results +submitted for earlier versions of that OS carry forward. Future +conformance results must be submitted against the new version of the +OS. If it is anticipated that the older OS version will be supported +for some time, then future conformance results must be submitted +separately for both the old and new versions of the OS. + +(B) Conformance Rules for a GPU Vendor +====================================== + +A GPU vendor submitting conformance results for a WebGL implementation +typically does so because the device containing the GPU includes a +built-in web browser. In this case the following rules apply: + +1. Conformance results must be submitted for each GPU and operating +system combination to be certified. It is not required to submit +results for different devices containing the same GPU and running the +same operating system that do not cause any previously passing test to +fail. + +2. Conformance results carry forward for a given GPU as the operating +system and graphics driver are upgraded but do not cause any previously +passing test to fail. + +Discussion +========== + +A WebGL implementation intended to ship on three OSs may reach +conformance on two of them, but due to graphics driver bugs, may be +unable to reach conformance on the third. In this situation the +implementation is not yet considered to be conformant. + +An existing WebGL implementation which conformed to an earlier version +of the test suite is not required to remove support for the "webgl" +HTML Canvas context type while in the process of conforming to a later +version of the test suite. However, the implementer must not advertise +conformance to the later version until it has been reached. It is +acceptable for the implementer to advertise details of their +conformance, for example number or percentage of passing or failing +tests, or names of passing or failing tests. + +A GPU vendor might submit conformance results in order to use the +WebGL logo in a marketing campaign. In this situation, results may be +submitted in advance of the product becoming available through sales +channels, per the rules above. + +The WebGL API has strict security requirements. Even one failing test +may indicate a serious security issue in the WebGL implementation. For +this reason, no exceptions for failing conformance tests will be +granted. + +The Khronos Group determines whether a particular WebGL implementation +is conformant based on the implementer's conformance suite +submissions, on multiple OSs and on multiple GPUs as necessary, using +the rules above. An implementer shall not judge their own +implementation conformant simply by applying the above rules. diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/README.md b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/README.md new file mode 100644 index 00000000000..6baee99dd45 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/README.md @@ -0,0 +1,79 @@ +Welcome to the WebGL Conformance Test Suite +=========================================== + +Note: Before adding a new test or editing an existing test +[please read these guidelines](test-guidelines.md). + +This is the WebGL conformance test suite. You can find a the current "live" +version at [https://www.khronos.org/registry/webgl/sdk/tests/webgl-conformance-tests.html](https://www.khronos.org/registry/webgl/sdk/tests/webgl-conformance-tests.html) + +NOTE TO USERS: Unless you are a WebGL implementor, there is no need to submit +a conformance result using this process. Should you discover bugs in your +browser's WebGL implementation, either via this test suite or otherwise, +please report them through your browser vendor's bug tracking system. + +FOR WEBGL IMPLEMENTORS: Please follow the instructions below to create +a formal conformance submission. + +1. Open webgl-conformance-tests.html in your target browser + +2. Press the "run tests" button + +3. At the end of the run, press "display text summary" + +4. Verify that the User Agent and WebGL renderer strings identify your browser and target correctly. + +5. Copy the contents of the text summary (starting with "WebGL Conformance Test Results") and send via email to + webgl_conformance_submissions@khronos.org + +Please see CONFORMANCE_RULES.txt in this directory for guidelines +about what constitutes a conformant WebGL implementation. + +Usage Notes: +------------ + +There are various URL options you can pass in. + + run: Set to 1 to start the tests automatically + + Example: webgl-conformance-tests.html?run=1 + + version: Set to the version of the harness you wish to run. Tests + at this version or below will be run + + Example: webgl-conformance-tests.html?version=1.3.2 + + minVersion: Set to the minimum version of each test to include. Only tests + at this version or above will be included. + + Example: webgl-conformance-tests.html?minVersion=1.3.2 + + fast: Only run tests not marked with --slow + + Example: webgl-conformance-tests.html?fast=true + + skip: Comma separated list of regular expressions of which tests to skip. + + Example: webgl-conformance-tests.html?skip=glsl,.*destruction\.html + + include: Comma separated list of regular expressions of which tests to include. + + Example: webgl-conformance-tests.html?include=glsl,.*destruction\.html + + frames: The number of iframes to use to run tests in parallel. + + Example: webgl-conformance-tests.html?frames=8 + + Note the tests are not required to run with anything other than frames = 1. + +History +------- + +The dates below are when work on the conformance suite version was started. + +- 2011/02/24: Version 1.0.0 +- 2012/02/23: Version 1.0.1 +- 2012/03/20: Version 1.0.2 +- 2013/02/14: Version 1.0.3 +- 2013/10/11: Version 2.0.0 (beta) +- 2014/11/14: Version 1.0.4 diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/AUTHORS b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/AUTHORS new file mode 100644 index 00000000000..d5fa71f80eb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/AUTHORS @@ -0,0 +1,19 @@ +# This is a list of contributors to the Closure Library. + +# Names should be added to this file like so: +# Name or Organization + +Google Inc. +Stellar Science Ltd. +Mohamed Mansour +Bjorn Tipling +SameGoal LLC +Guido Tapia +Andrew Mattie +Ilia Mirkin +Ivan Kozik +Rich Dougherty +Chad Killingsworth +Dan Pupius +Mike Dunn +Kengo Toda diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/CONTRIBUTING b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/CONTRIBUTING new file mode 100644 index 00000000000..bab94181df2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/CONTRIBUTING @@ -0,0 +1,48 @@ +Closure Library welcomes patches/pulls for features and bugfixes. + +For contributors inside Google, follow the instructions given here: +http://go/closure-contributors + +For contributors external to Google, follow the instructions given here: + +Notes on Contributions to Closure Library + +Google Individual Contributor License + +In all cases, contributors must sign a contributor license agreement, +either for an individual or corporation, before a patch can be +accepted. Please fill out the agreement for an individual or a +corporation, as appropriate. + +https://developers.google.com/open-source/cla/individual +https://developers.google.com/open-source/cla/corporate + +If you or your organization is not listed there already, you should +add an entry to the AUTHORS file as part of your patch. + +If you plan to add a significant component or large chunk of code, it +is recommended to bring it up on the discussion list for a design +discussion before writing code. + +If appropriate, write a unit test that demonstrates your patch. Tests are the +best way to ensure that future contributors do not break your code +accidentally. + +To change the Closure Library source, you must submit a pull request +in GitHub. See the GitHub documentation here: + +https://help.github.com/categories/63/articles + +Closure Library developers monitor outstanding pull requests. They may +request changes on the pull request before accepting. They will also +verify that the CLA has been signed. + +Oftentimes, the pull request will not be directly merged, but patched to +the internal Google codebase to verify that unit and integration tests +will Closure pass before submitting (and optionally make changes to +the patch to match style, fix text, or to make the code or comments +clearer). In this case, the issue associated with the pull request +will be closed when the patch pushed to the repository via the MOE +(Make Open Easy) system. + +https://code.google.com/p/moe-java/ diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/LICENSE b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/LICENSE new file mode 100644 index 00000000000..d9a10c0d8e8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/LICENSE @@ -0,0 +1,176 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/README-Khronos.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/README-Khronos.txt new file mode 100644 index 00000000000..64d81e51cd7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/README-Khronos.txt @@ -0,0 +1,20 @@ +This is a partial snapshot of the Closure library workspace from: + + https://github.com/google/closure-library + +It contains only the portions needed to type check the ported dEQP +tests, namely: + + closure/goog/base.js + closure/goog/deps.js + +and supporting scripts in closure/bin/ . + +The current version snapshotted here is: + +----- +commit 57bdfe0093cc158fb3a58d2c5f7d75ece8c4b45b +Author: Nathan Naze +Date: Fri Apr 24 18:38:26 2015 -0400 + + fix bad merge diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/README.md b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/README.md new file mode 100644 index 00000000000..d794d1b9b2d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/README.md @@ -0,0 +1,9 @@ +# Closure Library + +Closure Library is a powerful, low-level JavaScript library designed +for building complex and scalable web applications. It is used by many +Google web applications, such as Gmail and Google Docs. + +For more information, visit the +[Google Developers](https://developers.google.com/closure/library) or +[GitHub](https://github.com/google/closure-library) sites. diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/closurebuilder.py b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/closurebuilder.py new file mode 100755 index 00000000000..9e4e2eb339b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/closurebuilder.py @@ -0,0 +1,287 @@ +#!/usr/bin/env python +# +# Copyright 2009 The Closure Library Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Utility for Closure Library dependency calculation. + +ClosureBuilder scans source files to build dependency info. From the +dependencies, the script can produce a manifest in dependency order, +a concatenated script, or compiled output from the Closure Compiler. + +Paths to files can be expressed as individual arguments to the tool (intended +for use with find and xargs). As a convenience, --root can be used to specify +all JS files below a directory. + +usage: %prog [options] [file1.js file2.js ...] +""" + +__author__ = 'nnaze@google.com (Nathan Naze)' + + +import logging +import optparse +import os +import sys + +import depstree +import jscompiler +import source +import treescan + + +def _GetOptionsParser(): + """Get the options parser.""" + + parser = optparse.OptionParser(__doc__) + parser.add_option('-i', + '--input', + dest='inputs', + action='append', + default=[], + help='One or more input files to calculate dependencies ' + 'for. The namespaces in this file will be combined with ' + 'those given with the -n flag to form the set of ' + 'namespaces to find dependencies for.') + parser.add_option('-n', + '--namespace', + dest='namespaces', + action='append', + default=[], + help='One or more namespaces to calculate dependencies ' + 'for. These namespaces will be combined with those given ' + 'with the -i flag to form the set of namespaces to find ' + 'dependencies for. A Closure namespace is a ' + 'dot-delimited path expression declared with a call to ' + 'goog.provide() (e.g. "goog.array" or "foo.bar").') + parser.add_option('--root', + dest='roots', + action='append', + default=[], + help='The paths that should be traversed to build the ' + 'dependencies.') + parser.add_option('-o', + '--output_mode', + dest='output_mode', + type='choice', + action='store', + choices=['list', 'script', 'compiled'], + default='list', + help='The type of output to generate from this script. ' + 'Options are "list" for a list of filenames, "script" ' + 'for a single script containing the contents of all the ' + 'files, or "compiled" to produce compiled output with ' + 'the Closure Compiler. Default is "list".') + parser.add_option('-c', + '--compiler_jar', + dest='compiler_jar', + action='store', + help='The location of the Closure compiler .jar file.') + parser.add_option('-f', + '--compiler_flags', + dest='compiler_flags', + default=[], + action='append', + help='Additional flags to pass to the Closure compiler. ' + 'To pass multiple flags, --compiler_flags has to be ' + 'specified multiple times.') + parser.add_option('-j', + '--jvm_flags', + dest='jvm_flags', + default=[], + action='append', + help='Additional flags to pass to the JVM compiler. ' + 'To pass multiple flags, --jvm_flags has to be ' + 'specified multiple times.') + parser.add_option('--output_file', + dest='output_file', + action='store', + help=('If specified, write output to this path instead of ' + 'writing to standard output.')) + + return parser + + +def _GetInputByPath(path, sources): + """Get the source identified by a path. + + Args: + path: str, A path to a file that identifies a source. + sources: An iterable collection of source objects. + + Returns: + The source from sources identified by path, if found. Converts to + real paths for comparison. + """ + for js_source in sources: + # Convert both to real paths for comparison. + if os.path.realpath(path) == os.path.realpath(js_source.GetPath()): + return js_source + + +def _GetClosureBaseFile(sources): + """Given a set of sources, returns the one base.js file. + + Note that if zero or two or more base.js files are found, an error message + will be written and the program will be exited. + + Args: + sources: An iterable of _PathSource objects. + + Returns: + The _PathSource representing the base Closure file. + """ + base_files = [ + js_source for js_source in sources if _IsClosureBaseFile(js_source)] + + if not base_files: + logging.error('No Closure base.js file found.') + sys.exit(1) + if len(base_files) > 1: + logging.error('More than one Closure base.js files found at these paths:') + for base_file in base_files: + logging.error(base_file.GetPath()) + sys.exit(1) + return base_files[0] + + +def _IsClosureBaseFile(js_source): + """Returns true if the given _PathSource is the Closure base.js source.""" + return (os.path.basename(js_source.GetPath()) == 'base.js' and + js_source.provides == set(['goog'])) + + +class _PathSource(source.Source): + """Source file subclass that remembers its file path.""" + + def __init__(self, path): + """Initialize a source. + + Args: + path: str, Path to a JavaScript file. The source string will be read + from this file. + """ + super(_PathSource, self).__init__(source.GetFileContents(path)) + + self._path = path + + def __str__(self): + return 'PathSource %s' % self._path + + def GetPath(self): + """Returns the path.""" + return self._path + + +def _WrapGoogModuleSource(src): + return ('goog.loadModule(function(exports) {{' + '"use strict";' + '{0}' + '\n' # terminate any trailing single line comment. + ';return exports' + '}});\n').format(src) + + +def main(): + logging.basicConfig(format=(sys.argv[0] + ': %(message)s'), + level=logging.INFO) + options, args = _GetOptionsParser().parse_args() + + # Make our output pipe. + if options.output_file: + out = open(options.output_file, 'w') + else: + out = sys.stdout + + sources = set() + + logging.info('Scanning paths...') + for path in options.roots: + for js_path in treescan.ScanTreeForJsFiles(path): + sources.add(_PathSource(js_path)) + + # Add scripts specified on the command line. + for js_path in args: + sources.add(_PathSource(js_path)) + + logging.info('%s sources scanned.', len(sources)) + + # Though deps output doesn't need to query the tree, we still build it + # to validate dependencies. + logging.info('Building dependency tree..') + tree = depstree.DepsTree(sources) + + input_namespaces = set() + inputs = options.inputs or [] + for input_path in inputs: + js_input = _GetInputByPath(input_path, sources) + if not js_input: + logging.error('No source matched input %s', input_path) + sys.exit(1) + input_namespaces.update(js_input.provides) + + input_namespaces.update(options.namespaces) + + if not input_namespaces: + logging.error('No namespaces found. At least one namespace must be ' + 'specified with the --namespace or --input flags.') + sys.exit(2) + + # The Closure Library base file must go first. + base = _GetClosureBaseFile(sources) + deps = [base] + tree.GetDependencies(input_namespaces) + + output_mode = options.output_mode + if output_mode == 'list': + out.writelines([js_source.GetPath() + '\n' for js_source in deps]) + elif output_mode == 'script': + for js_source in deps: + src = js_source.GetSource() + if js_source.is_goog_module: + src = _WrapGoogModuleSource(src) + out.write(src + '\n') + elif output_mode == 'compiled': + logging.warning("""\ +Closure Compiler now natively understands and orders Closure dependencies and +is prefererred over using this script for performing JavaScript compilation. + +Please migrate your codebase. + +See: +https://github.com/google/closure-compiler/wiki/Manage-Closure-Dependencies +""") + + # Make sure a .jar is specified. + if not options.compiler_jar: + logging.error('--compiler_jar flag must be specified if --output is ' + '"compiled"') + sys.exit(2) + + # Will throw an error if the compilation fails. + compiled_source = jscompiler.Compile( + options.compiler_jar, + [js_source.GetPath() for js_source in deps], + jvm_flags=options.jvm_flags, + compiler_flags=options.compiler_flags) + + logging.info('JavaScript compilation succeeded.') + out.write(compiled_source) + + else: + logging.error('Invalid value for --output flag.') + sys.exit(2) + + +if __name__ == '__main__': + main() diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/depstree.py b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/depstree.py new file mode 100755 index 00000000000..f288dd3aa61 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/depstree.py @@ -0,0 +1,189 @@ +# Copyright 2009 The Closure Library Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Class to represent a full Closure Library dependency tree. + +Offers a queryable tree of dependencies of a given set of sources. The tree +will also do logical validation to prevent duplicate provides and circular +dependencies. +""" + +__author__ = 'nnaze@google.com (Nathan Naze)' + + +class DepsTree(object): + """Represents the set of dependencies between source files.""" + + def __init__(self, sources): + """Initializes the tree with a set of sources. + + Args: + sources: A set of JavaScript sources. + + Raises: + MultipleProvideError: A namespace is provided by muplitple sources. + NamespaceNotFoundError: A namespace is required but never provided. + """ + + self._sources = sources + self._provides_map = dict() + + # Ensure nothing was provided twice. + for source in sources: + for provide in source.provides: + if provide in self._provides_map: + raise MultipleProvideError( + provide, [self._provides_map[provide], source]) + + self._provides_map[provide] = source + + # Check that all required namespaces are provided. + for source in sources: + for require in source.requires: + if require not in self._provides_map: + raise NamespaceNotFoundError(require, source) + + def GetDependencies(self, required_namespaces): + """Get source dependencies, in order, for the given namespaces. + + Args: + required_namespaces: A string (for one) or list (for one or more) of + namespaces. + + Returns: + A list of source objects that provide those namespaces and all + requirements, in dependency order. + + Raises: + NamespaceNotFoundError: A namespace is requested but doesn't exist. + CircularDependencyError: A cycle is detected in the dependency tree. + """ + if isinstance(required_namespaces, str): + required_namespaces = [required_namespaces] + + deps_sources = [] + + for namespace in required_namespaces: + for source in DepsTree._ResolveDependencies( + namespace, [], self._provides_map, []): + if source not in deps_sources: + deps_sources.append(source) + + return deps_sources + + @staticmethod + def _ResolveDependencies(required_namespace, deps_list, provides_map, + traversal_path): + """Resolve dependencies for Closure source files. + + Follows the dependency tree down and builds a list of sources in dependency + order. This function will recursively call itself to fill all dependencies + below the requested namespaces, and then append its sources at the end of + the list. + + Args: + required_namespace: String of required namespace. + deps_list: List of sources in dependency order. This function will append + the required source once all of its dependencies are satisfied. + provides_map: Map from namespace to source that provides it. + traversal_path: List of namespaces of our path from the root down the + dependency/recursion tree. Used to identify cyclical dependencies. + This is a list used as a stack -- when the function is entered, the + current namespace is pushed and popped right before returning. + Each recursive call will check that the current namespace does not + appear in the list, throwing a CircularDependencyError if it does. + + Returns: + The given deps_list object filled with sources in dependency order. + + Raises: + NamespaceNotFoundError: A namespace is requested but doesn't exist. + CircularDependencyError: A cycle is detected in the dependency tree. + """ + + source = provides_map.get(required_namespace) + if not source: + raise NamespaceNotFoundError(required_namespace) + + if required_namespace in traversal_path: + traversal_path.append(required_namespace) # do this *after* the test + + # This must be a cycle. + raise CircularDependencyError(traversal_path) + + # If we don't have the source yet, we'll have to visit this namespace and + # add the required dependencies to deps_list. + if source not in deps_list: + traversal_path.append(required_namespace) + + for require in source.requires: + + # Append all other dependencies before we append our own. + DepsTree._ResolveDependencies(require, deps_list, provides_map, + traversal_path) + deps_list.append(source) + + traversal_path.pop() + + return deps_list + + +class BaseDepsTreeError(Exception): + """Base DepsTree error.""" + + def __init__(self): + Exception.__init__(self) + + +class CircularDependencyError(BaseDepsTreeError): + """Raised when a dependency cycle is encountered.""" + + def __init__(self, dependency_list): + BaseDepsTreeError.__init__(self) + self._dependency_list = dependency_list + + def __str__(self): + return ('Encountered circular dependency:\n%s\n' % + '\n'.join(self._dependency_list)) + + +class MultipleProvideError(BaseDepsTreeError): + """Raised when a namespace is provided more than once.""" + + def __init__(self, namespace, sources): + BaseDepsTreeError.__init__(self) + self._namespace = namespace + self._sources = sources + + def __str__(self): + source_strs = map(str, self._sources) + + return ('Namespace "%s" provided more than once in sources:\n%s\n' % + (self._namespace, '\n'.join(source_strs))) + + +class NamespaceNotFoundError(BaseDepsTreeError): + """Raised when a namespace is requested but not provided.""" + + def __init__(self, namespace, source=None): + BaseDepsTreeError.__init__(self) + self._namespace = namespace + self._source = source + + def __str__(self): + msg = 'Namespace "%s" never provided.' % self._namespace + if self._source: + msg += ' Required in %s' % self._source + return msg diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/depswriter.py b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/depswriter.py new file mode 100755 index 00000000000..bc3be88a350 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/depswriter.py @@ -0,0 +1,204 @@ +#!/usr/bin/env python +# +# Copyright 2009 The Closure Library Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Generates out a Closure deps.js file given a list of JavaScript sources. + +Paths can be specified as arguments or (more commonly) specifying trees +with the flags (call with --help for descriptions). + +Usage: depswriter.py [path/to/js1.js [path/to/js2.js] ...] +""" + +import logging +import optparse +import os +import posixpath +import shlex +import sys + +import source +import treescan + + +__author__ = 'nnaze@google.com (Nathan Naze)' + + +def MakeDepsFile(source_map): + """Make a generated deps file. + + Args: + source_map: A dict map of the source path to source.Source object. + + Returns: + str, A generated deps file source. + """ + + # Write in path alphabetical order + paths = sorted(source_map.keys()) + + lines = [] + + for path in paths: + js_source = source_map[path] + + # We don't need to add entries that don't provide anything. + if js_source.provides: + lines.append(_GetDepsLine(path, js_source)) + + return ''.join(lines) + + +def _GetDepsLine(path, js_source): + """Get a deps.js file string for a source.""" + + provides = sorted(js_source.provides) + requires = sorted(js_source.requires) + module = 'true' if js_source.is_goog_module else 'false' + + return 'goog.addDependency(\'%s\', %s, %s, %s);\n' % ( + path, provides, requires, module) + + +def _GetOptionsParser(): + """Get the options parser.""" + + parser = optparse.OptionParser(__doc__) + + parser.add_option('--output_file', + dest='output_file', + action='store', + help=('If specified, write output to this path instead of ' + 'writing to standard output.')) + parser.add_option('--root', + dest='roots', + default=[], + action='append', + help='A root directory to scan for JS source files. ' + 'Paths of JS files in generated deps file will be ' + 'relative to this path. This flag may be specified ' + 'multiple times.') + parser.add_option('--root_with_prefix', + dest='roots_with_prefix', + default=[], + action='append', + help='A root directory to scan for JS source files, plus ' + 'a prefix (if either contains a space, surround with ' + 'quotes). Paths in generated deps file will be relative ' + 'to the root, but preceded by the prefix. This flag ' + 'may be specified multiple times.') + parser.add_option('--path_with_depspath', + dest='paths_with_depspath', + default=[], + action='append', + help='A path to a source file and an alternate path to ' + 'the file in the generated deps file (if either contains ' + 'a space, surround with whitespace). This flag may be ' + 'specified multiple times.') + return parser + + +def _NormalizePathSeparators(path): + """Replaces OS-specific path separators with POSIX-style slashes. + + Args: + path: str, A file path. + + Returns: + str, The path with any OS-specific path separators (such as backslash on + Windows) replaced with URL-compatible forward slashes. A no-op on systems + that use POSIX paths. + """ + return path.replace(os.sep, posixpath.sep) + + +def _GetRelativePathToSourceDict(root, prefix=''): + """Scans a top root directory for .js sources. + + Args: + root: str, Root directory. + prefix: str, Prefix for returned paths. + + Returns: + dict, A map of relative paths (with prefix, if given), to source.Source + objects. + """ + # Remember and restore the cwd when we're done. We work from the root so + # that paths are relative from the root. + start_wd = os.getcwd() + os.chdir(root) + + path_to_source = {} + for path in treescan.ScanTreeForJsFiles('.'): + prefixed_path = _NormalizePathSeparators(os.path.join(prefix, path)) + path_to_source[prefixed_path] = source.Source(source.GetFileContents(path)) + + os.chdir(start_wd) + + return path_to_source + + +def _GetPair(s): + """Return a string as a shell-parsed tuple. Two values expected.""" + try: + # shlex uses '\' as an escape character, so they must be escaped. + s = s.replace('\\', '\\\\') + first, second = shlex.split(s) + return (first, second) + except: + raise Exception('Unable to parse input line as a pair: %s' % s) + + +def main(): + """CLI frontend to MakeDepsFile.""" + logging.basicConfig(format=(sys.argv[0] + ': %(message)s'), + level=logging.INFO) + options, args = _GetOptionsParser().parse_args() + + path_to_source = {} + + # Roots without prefixes + for root in options.roots: + path_to_source.update(_GetRelativePathToSourceDict(root)) + + # Roots with prefixes + for root_and_prefix in options.roots_with_prefix: + root, prefix = _GetPair(root_and_prefix) + path_to_source.update(_GetRelativePathToSourceDict(root, prefix=prefix)) + + # Source paths + for path in args: + path_to_source[path] = source.Source(source.GetFileContents(path)) + + # Source paths with alternate deps paths + for path_with_depspath in options.paths_with_depspath: + srcpath, depspath = _GetPair(path_with_depspath) + path_to_source[depspath] = source.Source(source.GetFileContents(srcpath)) + + # Make our output pipe. + if options.output_file: + out = open(options.output_file, 'w') + else: + out = sys.stdout + + out.write('// This file was autogenerated by %s.\n' % sys.argv[0]) + out.write('// Please do not edit.\n') + + out.write(MakeDepsFile(path_to_source)) + + +if __name__ == '__main__': + main() diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/jscompiler.py b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/jscompiler.py new file mode 100644 index 00000000000..cc6eb55f9e5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/jscompiler.py @@ -0,0 +1,135 @@ +# Copyright 2010 The Closure Library Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Utility to use the Closure Compiler CLI from Python.""" + + +import logging +import os +import re +import subprocess + + +# Pulls just the major and minor version numbers from the first line of +# 'java -version'. Versions are in the format of [0-9]+\.[0-9]+\..* See: +# http://www.oracle.com/technetwork/java/javase/versioning-naming-139433.html +_VERSION_REGEX = re.compile(r'"([0-9]+)\.([0-9]+)') + + +class JsCompilerError(Exception): + """Raised if there's an error in calling the compiler.""" + pass + + +def _GetJavaVersionString(): + """Get the version string from the Java VM.""" + return subprocess.check_output(['java', '-version'], stderr=subprocess.STDOUT) + + +def _ParseJavaVersion(version_string): + """Returns a 2-tuple for the current version of Java installed. + + Args: + version_string: String of the Java version (e.g. '1.7.2-ea'). + + Returns: + The major and minor versions, as a 2-tuple (e.g. (1, 7)). + """ + match = _VERSION_REGEX.search(version_string) + if match: + version = tuple(int(x, 10) for x in match.groups()) + assert len(version) == 2 + return version + + +def _JavaSupports32BitMode(): + """Determines whether the JVM supports 32-bit mode on the platform.""" + # Suppresses process output to stderr and stdout from showing up in the + # console as we're only trying to determine 32-bit JVM support. + supported = False + try: + devnull = open(os.devnull, 'wb') + return subprocess.call( + ['java', '-d32', '-version'], stdout=devnull, stderr=devnull) == 0 + except IOError: + pass + else: + devnull.close() + return supported + + +def _GetJsCompilerArgs(compiler_jar_path, java_version, source_paths, + jvm_flags, compiler_flags): + """Assembles arguments for call to JsCompiler.""" + + if java_version < (1, 7): + raise JsCompilerError('Closure Compiler requires Java 1.7 or higher. ' + 'Please visit http://www.java.com/getjava') + + args = ['java'] + + # Add JVM flags we believe will produce the best performance. See + # https://groups.google.com/forum/#!topic/closure-library-discuss/7w_O9-vzlj4 + + # Attempt 32-bit mode if available (Java 7 on Mac OS X does not support 32-bit + # mode, for example). + if _JavaSupports32BitMode(): + args += ['-d32'] + + # Prefer the "client" VM. + args += ['-client'] + + # Add JVM flags, if any + if jvm_flags: + args += jvm_flags + + # Add the application JAR. + args += ['-jar', compiler_jar_path] + + for path in source_paths: + args += ['--js', path] + + # Add compiler flags, if any. + if compiler_flags: + args += compiler_flags + + return args + + +def Compile(compiler_jar_path, source_paths, + jvm_flags=None, + compiler_flags=None): + """Prepares command-line call to Closure Compiler. + + Args: + compiler_jar_path: Path to the Closure compiler .jar file. + source_paths: Source paths to build, in order. + jvm_flags: A list of additional flags to pass on to JVM. + compiler_flags: A list of additional flags to pass on to Closure Compiler. + + Returns: + The compiled source, as a string, or None if compilation failed. + """ + + java_version = _ParseJavaVersion(_GetJavaVersionString()) + + args = _GetJsCompilerArgs( + compiler_jar_path, java_version, source_paths, jvm_flags, compiler_flags) + + logging.info('Compiling with the following command: %s', ' '.join(args)) + + try: + return subprocess.check_output(args) + except subprocess.CalledProcessError: + raise JsCompilerError('JavaScript compilation failed.') diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/source.py b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/source.py new file mode 100644 index 00000000000..be5e0d8ad64 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/source.py @@ -0,0 +1,127 @@ +# Copyright 2009 The Closure Library Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Scans a source JS file for its provided and required namespaces. + +Simple class to scan a JavaScript file and express its dependencies. +""" + +__author__ = 'nnaze@google.com' + + +import re + +_BASE_REGEX_STRING = r'^\s*goog\.%s\(\s*[\'"](.+)[\'"]\s*\)' +_MODULE_REGEX = re.compile(_BASE_REGEX_STRING % 'module') +_PROVIDE_REGEX = re.compile(_BASE_REGEX_STRING % 'provide') + +_REQUIRE_REGEX_STRING = (r'^\s*(?:(?:var|let|const)\s+[a-zA-Z_$][a-zA-Z0-9$_]*' + r'\s*=\s*)?goog\.require\(\s*[\'"](.+)[\'"]\s*\)') +_REQUIRES_REGEX = re.compile(_REQUIRE_REGEX_STRING) + + +class Source(object): + """Scans a JavaScript source for its provided and required namespaces.""" + + # Matches a "/* ... */" comment. + # Note: We can't definitively distinguish a "/*" in a string literal without a + # state machine tokenizer. We'll assume that a line starting with whitespace + # and "/*" is a comment. + _COMMENT_REGEX = re.compile( + r""" + ^\s* # Start of a new line and whitespace + /\* # Opening "/*" + .*? # Non greedy match of any characters (including newlines) + \*/ # Closing "*/""", + re.MULTILINE | re.DOTALL | re.VERBOSE) + + def __init__(self, source): + """Initialize a source. + + Args: + source: str, The JavaScript source. + """ + + self.provides = set() + self.requires = set() + self.is_goog_module = False + + self._source = source + self._ScanSource() + + def GetSource(self): + """Get the source as a string.""" + return self._source + + @classmethod + def _StripComments(cls, source): + return cls._COMMENT_REGEX.sub('', source) + + @classmethod + def _HasProvideGoogFlag(cls, source): + """Determines whether the @provideGoog flag is in a comment.""" + for comment_content in cls._COMMENT_REGEX.findall(source): + if '@provideGoog' in comment_content: + return True + + return False + + def _ScanSource(self): + """Fill in provides and requires by scanning the source.""" + + stripped_source = self._StripComments(self.GetSource()) + + source_lines = stripped_source.splitlines() + for line in source_lines: + match = _PROVIDE_REGEX.match(line) + if match: + self.provides.add(match.group(1)) + match = _MODULE_REGEX.match(line) + if match: + self.provides.add(match.group(1)) + self.is_goog_module = True + match = _REQUIRES_REGEX.match(line) + if match: + self.requires.add(match.group(1)) + + # Closure's base file implicitly provides 'goog'. + # This is indicated with the @provideGoog flag. + if self._HasProvideGoogFlag(self.GetSource()): + + if len(self.provides) or len(self.requires): + raise Exception( + 'Base file should not provide or require namespaces.') + + self.provides.add('goog') + + +def GetFileContents(path): + """Get a file's contents as a string. + + Args: + path: str, Path to file. + + Returns: + str, Contents of file. + + Raises: + IOError: An error occurred opening or reading the file. + + """ + fileobj = open(path) + try: + return fileobj.read() + finally: + fileobj.close() diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/treescan.py b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/treescan.py new file mode 100644 index 00000000000..6694593aab0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/build/treescan.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python +# +# Copyright 2010 The Closure Library Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Shared utility functions for scanning directory trees.""" + +import os +import re + + +__author__ = 'nnaze@google.com (Nathan Naze)' + + +# Matches a .js file path. +_JS_FILE_REGEX = re.compile(r'^.+\.js$') + + +def ScanTreeForJsFiles(root): + """Scans a directory tree for JavaScript files. + + Args: + root: str, Path to a root directory. + + Returns: + An iterable of paths to JS files, relative to cwd. + """ + return ScanTree(root, path_filter=_JS_FILE_REGEX) + + +def ScanTree(root, path_filter=None, ignore_hidden=True): + """Scans a directory tree for files. + + Args: + root: str, Path to a root directory. + path_filter: A regular expression filter. If set, only paths matching + the path_filter are returned. + ignore_hidden: If True, do not follow or return hidden directories or files + (those starting with a '.' character). + + Yields: + A string path to files, relative to cwd. + """ + + def OnError(os_error): + raise os_error + + for dirpath, dirnames, filenames in os.walk(root, onerror=OnError): + # os.walk allows us to modify dirnames to prevent decent into particular + # directories. Avoid hidden directories. + for dirname in dirnames: + if ignore_hidden and dirname.startswith('.'): + dirnames.remove(dirname) + + for filename in filenames: + + # nothing that starts with '.' + if ignore_hidden and filename.startswith('.'): + continue + + fullpath = os.path.join(dirpath, filename) + + if path_filter and not path_filter.match(fullpath): + continue + + yield os.path.normpath(fullpath) diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/calcdeps.py b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/calcdeps.py new file mode 100755 index 00000000000..9cb1a6db062 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/calcdeps.py @@ -0,0 +1,590 @@ +#!/usr/bin/env python +# +# Copyright 2006 The Closure Library Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Calculates JavaScript dependencies without requiring Google's build system. + +This tool is deprecated and is provided for legacy users. +See build/closurebuilder.py and build/depswriter.py for the current tools. + +It iterates over a number of search paths and builds a dependency tree. With +the inputs provided, it walks the dependency tree and outputs all the files +required for compilation. +""" + + + + + +try: + import distutils.version +except ImportError: + # distutils is not available in all environments + distutils = None + +import logging +import optparse +import os +import re +import subprocess +import sys + + +_BASE_REGEX_STRING = '^\s*goog\.%s\(\s*[\'"](.+)[\'"]\s*\)' +req_regex = re.compile(_BASE_REGEX_STRING % 'require') +prov_regex = re.compile(_BASE_REGEX_STRING % 'provide') +ns_regex = re.compile('^ns:((\w+\.)*(\w+))$') +version_regex = re.compile('[\.0-9]+') + + +def IsValidFile(ref): + """Returns true if the provided reference is a file and exists.""" + return os.path.isfile(ref) + + +def IsJsFile(ref): + """Returns true if the provided reference is a Javascript file.""" + return ref.endswith('.js') + + +def IsNamespace(ref): + """Returns true if the provided reference is a namespace.""" + return re.match(ns_regex, ref) is not None + + +def IsDirectory(ref): + """Returns true if the provided reference is a directory.""" + return os.path.isdir(ref) + + +def ExpandDirectories(refs): + """Expands any directory references into inputs. + + Description: + Looks for any directories in the provided references. Found directories + are recursively searched for .js files, which are then added to the result + list. + + Args: + refs: a list of references such as files, directories, and namespaces + + Returns: + A list of references with directories removed and replaced by any + .js files that are found in them. Also, the paths will be normalized. + """ + result = [] + for ref in refs: + if IsDirectory(ref): + # Disable 'Unused variable' for subdirs + # pylint: disable=unused-variable + for (directory, subdirs, filenames) in os.walk(ref): + for filename in filenames: + if IsJsFile(filename): + result.append(os.path.join(directory, filename)) + else: + result.append(ref) + return map(os.path.normpath, result) + + +class DependencyInfo(object): + """Represents a dependency that is used to build and walk a tree.""" + + def __init__(self, filename): + self.filename = filename + self.provides = [] + self.requires = [] + + def __str__(self): + return '%s Provides: %s Requires: %s' % (self.filename, + repr(self.provides), + repr(self.requires)) + + +def BuildDependenciesFromFiles(files): + """Build a list of dependencies from a list of files. + + Description: + Takes a list of files, extracts their provides and requires, and builds + out a list of dependency objects. + + Args: + files: a list of files to be parsed for goog.provides and goog.requires. + + Returns: + A list of dependency objects, one for each file in the files argument. + """ + result = [] + filenames = set() + for filename in files: + if filename in filenames: + continue + + # Python 3 requires the file encoding to be specified + if (sys.version_info[0] < 3): + file_handle = open(filename, 'r') + else: + file_handle = open(filename, 'r', encoding='utf8') + + try: + dep = CreateDependencyInfo(filename, file_handle) + result.append(dep) + finally: + file_handle.close() + + filenames.add(filename) + + return result + + +def CreateDependencyInfo(filename, source): + """Create dependency info. + + Args: + filename: Filename for source. + source: File-like object containing source. + + Returns: + A DependencyInfo object with provides and requires filled. + """ + dep = DependencyInfo(filename) + for line in source: + if re.match(req_regex, line): + dep.requires.append(re.search(req_regex, line).group(1)) + if re.match(prov_regex, line): + dep.provides.append(re.search(prov_regex, line).group(1)) + return dep + + +def BuildDependencyHashFromDependencies(deps): + """Builds a hash for searching dependencies by the namespaces they provide. + + Description: + Dependency objects can provide multiple namespaces. This method enumerates + the provides of each dependency and adds them to a hash that can be used + to easily resolve a given dependency by a namespace it provides. + + Args: + deps: a list of dependency objects used to build the hash. + + Raises: + Exception: If a multiple files try to provide the same namepace. + + Returns: + A hash table { namespace: dependency } that can be used to resolve a + dependency by a namespace it provides. + """ + dep_hash = {} + for dep in deps: + for provide in dep.provides: + if provide in dep_hash: + raise Exception('Duplicate provide (%s) in (%s, %s)' % ( + provide, + dep_hash[provide].filename, + dep.filename)) + dep_hash[provide] = dep + return dep_hash + + +def CalculateDependencies(paths, inputs): + """Calculates the dependencies for given inputs. + + Description: + This method takes a list of paths (files, directories) and builds a + searchable data structure based on the namespaces that each .js file + provides. It then parses through each input, resolving dependencies + against this data structure. The final output is a list of files, + including the inputs, that represent all of the code that is needed to + compile the given inputs. + + Args: + paths: the references (files, directories) that are used to build the + dependency hash. + inputs: the inputs (files, directories, namespaces) that have dependencies + that need to be calculated. + + Raises: + Exception: if a provided input is invalid. + + Returns: + A list of all files, including inputs, that are needed to compile the given + inputs. + """ + deps = BuildDependenciesFromFiles(paths + inputs) + search_hash = BuildDependencyHashFromDependencies(deps) + result_list = [] + seen_list = [] + for input_file in inputs: + if IsNamespace(input_file): + namespace = re.search(ns_regex, input_file).group(1) + if namespace not in search_hash: + raise Exception('Invalid namespace (%s)' % namespace) + input_file = search_hash[namespace].filename + if not IsValidFile(input_file) or not IsJsFile(input_file): + raise Exception('Invalid file (%s)' % input_file) + seen_list.append(input_file) + file_handle = open(input_file, 'r') + try: + for line in file_handle: + if re.match(req_regex, line): + require = re.search(req_regex, line).group(1) + ResolveDependencies(require, search_hash, result_list, seen_list) + finally: + file_handle.close() + result_list.append(input_file) + + # All files depend on base.js, so put it first. + base_js_path = FindClosureBasePath(paths) + if base_js_path: + result_list.insert(0, base_js_path) + else: + logging.warning('Closure Library base.js not found.') + + return result_list + + +def FindClosureBasePath(paths): + """Given a list of file paths, return Closure base.js path, if any. + + Args: + paths: A list of paths. + + Returns: + The path to Closure's base.js file including filename, if found. + """ + + for path in paths: + pathname, filename = os.path.split(path) + + if filename == 'base.js': + f = open(path) + + is_base = False + + # Sanity check that this is the Closure base file. Check that this + # is where goog is defined. This is determined by the @provideGoog + # flag. + for line in f: + if '@provideGoog' in line: + is_base = True + break + + f.close() + + if is_base: + return path + +def ResolveDependencies(require, search_hash, result_list, seen_list): + """Takes a given requirement and resolves all of the dependencies for it. + + Description: + A given requirement may require other dependencies. This method + recursively resolves all dependencies for the given requirement. + + Raises: + Exception: when require does not exist in the search_hash. + + Args: + require: the namespace to resolve dependencies for. + search_hash: the data structure used for resolving dependencies. + result_list: a list of filenames that have been calculated as dependencies. + This variable is the output for this function. + seen_list: a list of filenames that have been 'seen'. This is required + for the dependency->dependant ordering. + """ + if require not in search_hash: + raise Exception('Missing provider for (%s)' % require) + + dep = search_hash[require] + if not dep.filename in seen_list: + seen_list.append(dep.filename) + for sub_require in dep.requires: + ResolveDependencies(sub_require, search_hash, result_list, seen_list) + result_list.append(dep.filename) + + +def GetDepsLine(dep, base_path): + """Returns a JS string for a dependency statement in the deps.js file. + + Args: + dep: The dependency that we're printing. + base_path: The path to Closure's base.js including filename. + """ + return 'goog.addDependency("%s", %s, %s);' % ( + GetRelpath(dep.filename, base_path), dep.provides, dep.requires) + + +def GetRelpath(path, start): + """Return a relative path to |path| from |start|.""" + # NOTE: Python 2.6 provides os.path.relpath, which has almost the same + # functionality as this function. Since we want to support 2.4, we have + # to implement it manually. :( + path_list = os.path.abspath(os.path.normpath(path)).split(os.sep) + start_list = os.path.abspath( + os.path.normpath(os.path.dirname(start))).split(os.sep) + + common_prefix_count = 0 + for i in range(0, min(len(path_list), len(start_list))): + if path_list[i] != start_list[i]: + break + common_prefix_count += 1 + + # Always use forward slashes, because this will get expanded to a url, + # not a file path. + return '/'.join(['..'] * (len(start_list) - common_prefix_count) + + path_list[common_prefix_count:]) + + +def PrintLine(msg, out): + out.write(msg) + out.write('\n') + + +def PrintDeps(source_paths, deps, out): + """Print out a deps.js file from a list of source paths. + + Args: + source_paths: Paths that we should generate dependency info for. + deps: Paths that provide dependency info. Their dependency info should + not appear in the deps file. + out: The output file. + + Returns: + True on success, false if it was unable to find the base path + to generate deps relative to. + """ + base_path = FindClosureBasePath(source_paths + deps) + if not base_path: + return False + + PrintLine('// This file was autogenerated by calcdeps.py', out) + excludesSet = set(deps) + + for dep in BuildDependenciesFromFiles(source_paths + deps): + if not dep.filename in excludesSet: + PrintLine(GetDepsLine(dep, base_path), out) + + return True + + +def PrintScript(source_paths, out): + for index, dep in enumerate(source_paths): + PrintLine('// Input %d' % index, out) + f = open(dep, 'r') + PrintLine(f.read(), out) + f.close() + + +def GetJavaVersion(): + """Returns the string for the current version of Java installed.""" + proc = subprocess.Popen(['java', '-version'], stderr=subprocess.PIPE) + proc.wait() + version_line = proc.stderr.read().splitlines()[0] + return version_regex.search(version_line).group() + + +def FilterByExcludes(options, files): + """Filters the given files by the exlusions specified at the command line. + + Args: + options: The flags to calcdeps. + files: The files to filter. + Returns: + A list of files. + """ + excludes = [] + if options.excludes: + excludes = ExpandDirectories(options.excludes) + + excludesSet = set(excludes) + return [i for i in files if not i in excludesSet] + + +def GetPathsFromOptions(options): + """Generates the path files from flag options. + + Args: + options: The flags to calcdeps. + Returns: + A list of files in the specified paths. (strings). + """ + + search_paths = options.paths + if not search_paths: + search_paths = ['.'] # Add default folder if no path is specified. + + search_paths = ExpandDirectories(search_paths) + return FilterByExcludes(options, search_paths) + + +def GetInputsFromOptions(options): + """Generates the inputs from flag options. + + Args: + options: The flags to calcdeps. + Returns: + A list of inputs (strings). + """ + inputs = options.inputs + if not inputs: # Parse stdin + logging.info('No inputs specified. Reading from stdin...') + inputs = filter(None, [line.strip('\n') for line in sys.stdin.readlines()]) + + logging.info('Scanning files...') + inputs = ExpandDirectories(inputs) + + return FilterByExcludes(options, inputs) + + +def Compile(compiler_jar_path, source_paths, out, flags=None): + """Prepares command-line call to Closure compiler. + + Args: + compiler_jar_path: Path to the Closure compiler .jar file. + source_paths: Source paths to build, in order. + flags: A list of additional flags to pass on to Closure compiler. + """ + args = ['java', '-jar', compiler_jar_path] + for path in source_paths: + args += ['--js', path] + + if flags: + args += flags + + logging.info('Compiling with the following command: %s', ' '.join(args)) + proc = subprocess.Popen(args, stdout=subprocess.PIPE) + (stdoutdata, stderrdata) = proc.communicate() + if proc.returncode != 0: + logging.error('JavaScript compilation failed.') + sys.exit(1) + else: + out.write(stdoutdata) + + +def main(): + """The entrypoint for this script.""" + + logging.basicConfig(format='calcdeps.py: %(message)s', level=logging.INFO) + + usage = 'usage: %prog [options] arg' + parser = optparse.OptionParser(usage) + parser.add_option('-i', + '--input', + dest='inputs', + action='append', + help='The inputs to calculate dependencies for. Valid ' + 'values can be files, directories, or namespaces ' + '(ns:goog.net.XhrIo). Only relevant to "list" and ' + '"script" output.') + parser.add_option('-p', + '--path', + dest='paths', + action='append', + help='The paths that should be traversed to build the ' + 'dependencies.') + parser.add_option('-d', + '--dep', + dest='deps', + action='append', + help='Directories or files that should be traversed to ' + 'find required dependencies for the deps file. ' + 'Does not generate dependency information for names ' + 'provided by these files. Only useful in "deps" mode.') + parser.add_option('-e', + '--exclude', + dest='excludes', + action='append', + help='Files or directories to exclude from the --path ' + 'and --input flags') + parser.add_option('-o', + '--output_mode', + dest='output_mode', + action='store', + default='list', + help='The type of output to generate from this script. ' + 'Options are "list" for a list of filenames, "script" ' + 'for a single script containing the contents of all the ' + 'file, "deps" to generate a deps.js file for all ' + 'paths, or "compiled" to produce compiled output with ' + 'the Closure compiler.') + parser.add_option('-c', + '--compiler_jar', + dest='compiler_jar', + action='store', + help='The location of the Closure compiler .jar file.') + parser.add_option('-f', + '--compiler_flag', + '--compiler_flags', # for backwards compatability + dest='compiler_flags', + action='append', + help='Additional flag to pass to the Closure compiler. ' + 'May be specified multiple times to pass multiple flags.') + parser.add_option('--output_file', + dest='output_file', + action='store', + help=('If specified, write output to this path instead of ' + 'writing to standard output.')) + + (options, args) = parser.parse_args() + + search_paths = GetPathsFromOptions(options) + + if options.output_file: + out = open(options.output_file, 'w') + else: + out = sys.stdout + + if options.output_mode == 'deps': + result = PrintDeps(search_paths, ExpandDirectories(options.deps or []), out) + if not result: + logging.error('Could not find Closure Library in the specified paths') + sys.exit(1) + + return + + inputs = GetInputsFromOptions(options) + + logging.info('Finding Closure dependencies...') + deps = CalculateDependencies(search_paths, inputs) + output_mode = options.output_mode + + if output_mode == 'script': + PrintScript(deps, out) + elif output_mode == 'list': + # Just print out a dep per line + for dep in deps: + PrintLine(dep, out) + elif output_mode == 'compiled': + # Make sure a .jar is specified. + if not options.compiler_jar: + logging.error('--compiler_jar flag must be specified if --output is ' + '"compiled"') + sys.exit(1) + + # User friendly version check. + if distutils and not (distutils.version.LooseVersion(GetJavaVersion()) > + distutils.version.LooseVersion('1.6')): + logging.error('Closure Compiler requires Java 1.6 or higher.') + logging.error('Please visit http://www.java.com/getjava') + sys.exit(1) + + Compile(options.compiler_jar, deps, out, options.compiler_flags) + + else: + logging.error('Invalid value for --output flag.') + sys.exit(1) + +if __name__ == '__main__': + main() diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/scopify.py b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/scopify.py new file mode 100755 index 00000000000..d8057efbc9f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/bin/scopify.py @@ -0,0 +1,221 @@ +#!/usr/bin/python +# +# Copyright 2010 The Closure Library Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Automatically converts codebases over to goog.scope. + +Usage: +cd path/to/my/dir; +../../../../javascript/closure/bin/scopify.py + +Scans every file in this directory, recursively. Looks for existing +goog.scope calls, and goog.require'd symbols. If it makes sense to +generate a goog.scope call for the file, then we will do so, and +try to auto-generate some aliases based on the goog.require'd symbols. + +Known Issues: + + When a file is goog.scope'd, the file contents will be indented +2. + This may put some lines over 80 chars. These will need to be fixed manually. + + We will only try to create aliases for capitalized names. We do not check + to see if those names will conflict with any existing locals. + + This creates merge conflicts for every line of every outstanding change. + If you intend to run this on your codebase, make sure your team members + know. Better yet, send them this script so that they can scopify their + outstanding changes and "accept theirs". + + When an alias is "captured", it can no longer be stubbed out for testing. + Run your tests. + +""" + +__author__ = 'nicksantos@google.com (Nick Santos)' + +import os.path +import re +import sys + +REQUIRES_RE = re.compile(r"goog.require\('([^']*)'\)") + +# Edit this manually if you want something to "always" be aliased. +# TODO(nicksantos): Add a flag for this. +DEFAULT_ALIASES = {} + +def Transform(lines): + """Converts the contents of a file into javascript that uses goog.scope. + + Arguments: + lines: A list of strings, corresponding to each line of the file. + Returns: + A new list of strings, or None if the file was not modified. + """ + requires = [] + + # Do an initial scan to be sure that this file can be processed. + for line in lines: + # Skip this file if it has already been scopified. + if line.find('goog.scope') != -1: + return None + + # If there are any global vars or functions, then we also have + # to skip the whole file. We might be able to deal with this + # more elegantly. + if line.find('var ') == 0 or line.find('function ') == 0: + return None + + for match in REQUIRES_RE.finditer(line): + requires.append(match.group(1)) + + if len(requires) == 0: + return None + + # Backwards-sort the requires, so that when one is a substring of another, + # we match the longer one first. + for val in DEFAULT_ALIASES.values(): + if requires.count(val) == 0: + requires.append(val) + + requires.sort() + requires.reverse() + + # Generate a map of requires to their aliases + aliases_to_globals = DEFAULT_ALIASES.copy() + for req in requires: + index = req.rfind('.') + if index == -1: + alias = req + else: + alias = req[(index + 1):] + + # Don't scopify lowercase namespaces, because they may conflict with + # local variables. + if alias[0].isupper(): + aliases_to_globals[alias] = req + + aliases_to_matchers = {} + globals_to_aliases = {} + for alias, symbol in aliases_to_globals.items(): + globals_to_aliases[symbol] = alias + aliases_to_matchers[alias] = re.compile('\\b%s\\b' % symbol) + + # Insert a goog.scope that aliases all required symbols. + result = [] + + START = 0 + SEEN_REQUIRES = 1 + IN_SCOPE = 2 + + mode = START + aliases_used = set() + insertion_index = None + num_blank_lines = 0 + for line in lines: + if mode == START: + result.append(line) + + if re.search(REQUIRES_RE, line): + mode = SEEN_REQUIRES + + elif mode == SEEN_REQUIRES: + if (line and + not re.search(REQUIRES_RE, line) and + not line.isspace()): + # There should be two blank lines before goog.scope + result += ['\n'] * 2 + result.append('goog.scope(function() {\n') + insertion_index = len(result) + result += ['\n'] * num_blank_lines + mode = IN_SCOPE + elif line.isspace(): + # Keep track of the number of blank lines before each block of code so + # that we can move them after the goog.scope line if necessary. + num_blank_lines += 1 + else: + # Print the blank lines we saw before this code block + result += ['\n'] * num_blank_lines + num_blank_lines = 0 + result.append(line) + + if mode == IN_SCOPE: + for symbol in requires: + if not symbol in globals_to_aliases: + continue + + alias = globals_to_aliases[symbol] + matcher = aliases_to_matchers[alias] + for match in matcher.finditer(line): + # Check to make sure we're not in a string. + # We do this by being as conservative as possible: + # if there are any quote or double quote characters + # before the symbol on this line, then bail out. + before_symbol = line[:match.start(0)] + if before_symbol.count('"') > 0 or before_symbol.count("'") > 0: + continue + + line = line.replace(match.group(0), alias) + aliases_used.add(alias) + + if line.isspace(): + # Truncate all-whitespace lines + result.append('\n') + else: + result.append(line) + + if len(aliases_used): + aliases_used = [alias for alias in aliases_used] + aliases_used.sort() + aliases_used.reverse() + for alias in aliases_used: + symbol = aliases_to_globals[alias] + result.insert(insertion_index, + 'var %s = %s;\n' % (alias, symbol)) + result.append('}); // goog.scope\n') + return result + else: + return None + +def TransformFileAt(path): + """Converts a file into javascript that uses goog.scope. + + Arguments: + path: A path to a file. + """ + f = open(path) + lines = Transform(f.readlines()) + if lines: + f = open(path, 'w') + for l in lines: + f.write(l) + f.close() + +if __name__ == '__main__': + args = sys.argv[1:] + if not len(args): + args = '.' + + for file_name in args: + if os.path.isdir(file_name): + for root, dirs, files in os.walk(file_name): + for name in files: + if name.endswith('.js') and \ + not os.path.islink(os.path.join(root, name)): + TransformFileAt(os.path.join(root, name)) + else: + if file_name.endswith('.js') and \ + not os.path.islink(file_name): + TransformFileAt(file_name) diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/goog/base.js b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/goog/base.js new file mode 100644 index 00000000000..a96333017c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/closure-library/closure/goog/base.js @@ -0,0 +1,2496 @@ +// Copyright 2006 The Closure Library Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * @fileoverview Bootstrap for the Google JS Library (Closure). + * + * In uncompiled mode base.js will write out Closure's deps file, unless the + * global CLOSURE_NO_DEPS is set to true. This allows projects to + * include their own deps file(s) from different locations. + * + * @author arv@google.com (Erik Arvidsson) + * + * @provideGoog + */ + + +/** + * @define {boolean} Overridden to true by the compiler when --closure_pass + * or --mark_as_compiled is specified. + */ +var COMPILED = false; + + +/** + * Base namespace for the Closure library. Checks to see goog is already + * defined in the current scope before assigning to prevent clobbering if + * base.js is loaded more than once. + * + * @const + */ +var goog = goog || {}; + + +/** + * Reference to the global context. In most cases this will be 'window'. + */ +goog.global = this; + + +/** + * A hook for overriding the define values in uncompiled mode. + * + * In uncompiled mode, {@code CLOSURE_UNCOMPILED_DEFINES} may be defined before + * loading base.js. If a key is defined in {@code CLOSURE_UNCOMPILED_DEFINES}, + * {@code goog.define} will use the value instead of the default value. This + * allows flags to be overwritten without compilation (this is normally + * accomplished with the compiler's "define" flag). + * + * Example: + *
+ *   var CLOSURE_UNCOMPILED_DEFINES = {'goog.DEBUG': false};
+ * 
+ * + * @type {Object|undefined} + */ +goog.global.CLOSURE_UNCOMPILED_DEFINES; + + +/** + * A hook for overriding the define values in uncompiled or compiled mode, + * like CLOSURE_UNCOMPILED_DEFINES but effective in compiled code. In + * uncompiled code CLOSURE_UNCOMPILED_DEFINES takes precedence. + * + * Also unlike CLOSURE_UNCOMPILED_DEFINES the values must be number, boolean or + * string literals or the compiler will emit an error. + * + * While any @define value may be set, only those set with goog.define will be + * effective for uncompiled code. + * + * Example: + *
+ *   var CLOSURE_DEFINES = {'goog.DEBUG': false} ;
+ * 
+ * + * @type {Object|undefined} + */ +goog.global.CLOSURE_DEFINES; + + +/** + * Returns true if the specified value is not undefined. + * WARNING: Do not use this to test if an object has a property. Use the in + * operator instead. + * + * @param {?} val Variable to test. + * @return {boolean} Whether variable is defined. + */ +goog.isDef = function(val) { + // void 0 always evaluates to undefined and hence we do not need to depend on + // the definition of the global variable named 'undefined'. + return val !== void 0; +}; + + +/** + * Builds an object structure for the provided namespace path, ensuring that + * names that already exist are not overwritten. For example: + * "a.b.c" -> a = {};a.b={};a.b.c={}; + * Used by goog.provide and goog.exportSymbol. + * @param {string} name name of the object that this file defines. + * @param {*=} opt_object the object to expose at the end of the path. + * @param {Object=} opt_objectToExportTo The object to add the path to; default + * is |goog.global|. + * @private + */ +goog.exportPath_ = function(name, opt_object, opt_objectToExportTo) { + var parts = name.split('.'); + var cur = opt_objectToExportTo || goog.global; + + // Internet Explorer exhibits strange behavior when throwing errors from + // methods externed in this manner. See the testExportSymbolExceptions in + // base_test.html for an example. + if (!(parts[0] in cur) && cur.execScript) { + cur.execScript('var ' + parts[0]); + } + + // Certain browsers cannot parse code in the form for((a in b); c;); + // This pattern is produced by the JSCompiler when it collapses the + // statement above into the conditional loop below. To prevent this from + // happening, use a for-loop and reserve the init logic as below. + + // Parentheses added to eliminate strict JS warning in Firefox. + for (var part; parts.length && (part = parts.shift());) { + if (!parts.length && goog.isDef(opt_object)) { + // last part and we have an object; use it + cur[part] = opt_object; + } else if (cur[part]) { + cur = cur[part]; + } else { + cur = cur[part] = {}; + } + } +}; + + +/** + * Defines a named value. In uncompiled mode, the value is retrieved from + * CLOSURE_DEFINES or CLOSURE_UNCOMPILED_DEFINES if the object is defined and + * has the property specified, and otherwise used the defined defaultValue. + * When compiled the default can be overridden using the compiler + * options or the value set in the CLOSURE_DEFINES object. + * + * @param {string} name The distinguished name to provide. + * @param {string|number|boolean} defaultValue + */ +goog.define = function(name, defaultValue) { + var value = defaultValue; + if (!COMPILED) { + if (goog.global.CLOSURE_UNCOMPILED_DEFINES && + Object.prototype.hasOwnProperty.call( + goog.global.CLOSURE_UNCOMPILED_DEFINES, name)) { + value = goog.global.CLOSURE_UNCOMPILED_DEFINES[name]; + } else if (goog.global.CLOSURE_DEFINES && + Object.prototype.hasOwnProperty.call( + goog.global.CLOSURE_DEFINES, name)) { + value = goog.global.CLOSURE_DEFINES[name]; + } + } + goog.exportPath_(name, value); +}; + + +/** + * @define {boolean} DEBUG is provided as a convenience so that debugging code + * that should not be included in a production js_binary can be easily stripped + * by specifying --define goog.DEBUG=false to the JSCompiler. For example, most + * toString() methods should be declared inside an "if (goog.DEBUG)" conditional + * because they are generally used for debugging purposes and it is difficult + * for the JSCompiler to statically determine whether they are used. + */ +goog.define('goog.DEBUG', true); + + +/** + * @define {string} LOCALE defines the locale being used for compilation. It is + * used to select locale specific data to be compiled in js binary. BUILD rule + * can specify this value by "--define goog.LOCALE=" as JSCompiler + * option. + * + * Take into account that the locale code format is important. You should use + * the canonical Unicode format with hyphen as a delimiter. Language must be + * lowercase, Language Script - Capitalized, Region - UPPERCASE. + * There are few examples: pt-BR, en, en-US, sr-Latin-BO, zh-Hans-CN. + * + * See more info about locale codes here: + * http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers + * + * For language codes you should use values defined by ISO 693-1. See it here + * http://www.w3.org/WAI/ER/IG/ert/iso639.htm. There is only one exception from + * this rule: the Hebrew language. For legacy reasons the old code (iw) should + * be used instead of the new code (he), see http://wiki/Main/IIISynonyms. + */ +goog.define('goog.LOCALE', 'en'); // default to en + + +/** + * @define {boolean} Whether this code is running on trusted sites. + * + * On untrusted sites, several native functions can be defined or overridden by + * external libraries like Prototype, Datejs, and JQuery and setting this flag + * to false forces closure to use its own implementations when possible. + * + * If your JavaScript can be loaded by a third party site and you are wary about + * relying on non-standard implementations, specify + * "--define goog.TRUSTED_SITE=false" to the JSCompiler. + */ +goog.define('goog.TRUSTED_SITE', true); + + +/** + * @define {boolean} Whether a project is expected to be running in strict mode. + * + * This define can be used to trigger alternate implementations compatible with + * running in EcmaScript Strict mode or warn about unavailable functionality. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode + * + */ +goog.define('goog.STRICT_MODE_COMPATIBLE', false); + + +/** + * @define {boolean} Whether code that calls {@link goog.setTestOnly} should + * be disallowed in the compilation unit. + */ +goog.define('goog.DISALLOW_TEST_ONLY_CODE', COMPILED && !goog.DEBUG); + + +/** + * Defines a namespace in Closure. + * + * A namespace may only be defined once in a codebase. It may be defined using + * goog.provide() or goog.module(). + * + * The presence of one or more goog.provide() calls in a file indicates + * that the file defines the given objects/namespaces. + * Provided symbols must not be null or undefined. + * + * In addition, goog.provide() creates the object stubs for a namespace + * (for example, goog.provide("goog.foo.bar") will create the object + * goog.foo.bar if it does not already exist). + * + * Build tools also scan for provide/require/module statements + * to discern dependencies, build dependency files (see deps.js), etc. + * + * @see goog.require + * @see goog.module + * @param {string} name Namespace provided by this file in the form + * "goog.package.part". + */ +goog.provide = function(name) { + if (!COMPILED) { + // Ensure that the same namespace isn't provided twice. + // A goog.module/goog.provide maps a goog.require to a specific file + if (goog.isProvided_(name)) { + throw Error('Namespace "' + name + '" already declared.'); + } + } + + goog.constructNamespace_(name); +}; + + +/** + * @param {string} name Namespace provided by this file in the form + * "goog.package.part". + * @param {Object=} opt_obj The object to embed in the namespace. + * @private + */ +goog.constructNamespace_ = function(name, opt_obj) { + if (!COMPILED) { + delete goog.implicitNamespaces_[name]; + + var namespace = name; + while ((namespace = namespace.substring(0, namespace.lastIndexOf('.')))) { + if (goog.getObjectByName(namespace)) { + break; + } + goog.implicitNamespaces_[namespace] = true; + } + } + + goog.exportPath_(name, opt_obj); +}; + + +/** + * Module identifier validation regexp. + * Note: This is a conservative check, it is very possible to be more lenient, + * the primary exclusion here is "/" and "\" and a leading ".", these + * restrictions are intended to leave the door open for using goog.require + * with relative file paths rather than module identifiers. + * @private + */ +goog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/; + + +/** + * Defines a module in Closure. + * + * Marks that this file must be loaded as a module and claims the namespace. + * + * A namespace may only be defined once in a codebase. It may be defined using + * goog.provide() or goog.module(). + * + * goog.module() has three requirements: + * - goog.module may not be used in the same file as goog.provide. + * - goog.module must be the first statement in the file. + * - only one goog.module is allowed per file. + * + * When a goog.module annotated file is loaded, it is enclosed in + * a strict function closure. This means that: + * - any variables declared in a goog.module file are private to the file + * (not global), though the compiler is expected to inline the module. + * - The code must obey all the rules of "strict" JavaScript. + * - the file will be marked as "use strict" + * + * NOTE: unlike goog.provide, goog.module does not declare any symbols by + * itself. If declared symbols are desired, use + * goog.module.declareLegacyNamespace(). + * + * + * See the public goog.module proposal: http://goo.gl/Va1hin + * + * @param {string} name Namespace provided by this file in the form + * "goog.package.part", is expected but not required. + */ +goog.module = function(name) { + if (!goog.isString(name) || + !name || + name.search(goog.VALID_MODULE_RE_) == -1) { + throw Error('Invalid module identifier'); + } + if (!goog.isInModuleLoader_()) { + throw Error('Module ' + name + ' has been loaded incorrectly.'); + } + if (goog.moduleLoaderState_.moduleName) { + throw Error('goog.module may only be called once per module.'); + } + + // Store the module name for the loader. + goog.moduleLoaderState_.moduleName = name; + if (!COMPILED) { + // Ensure that the same namespace isn't provided twice. + // A goog.module/goog.provide maps a goog.require to a specific file + if (goog.isProvided_(name)) { + throw Error('Namespace "' + name + '" already declared.'); + } + delete goog.implicitNamespaces_[name]; + } +}; + + +/** + * @param {string} name The module identifier. + * @return {?} The module exports for an already loaded module or null. + * + * Note: This is not an alternative to goog.require, it does not + * indicate a hard dependency, instead it is used to indicate + * an optional dependency or to access the exports of a module + * that has already been loaded. + * @suppress {missingProvide} + */ +goog.module.get = function(name) { + return goog.module.getInternal_(name); +}; + + +/** + * @param {string} name The module identifier. + * @return {?} The module exports for an already loaded module or null. + * @private + */ +goog.module.getInternal_ = function(name) { + if (!COMPILED) { + if (goog.isProvided_(name)) { + // goog.require only return a value with-in goog.module files. + return name in goog.loadedModules_ ? + goog.loadedModules_[name] : + goog.getObjectByName(name); + } else { + return null; + } + } +}; + + +/** + * @private {?{ + * moduleName: (string|undefined), + * declareTestMethods: boolean + * }} + */ +goog.moduleLoaderState_ = null; + + +/** + * @private + * @return {boolean} Whether a goog.module is currently being initialized. + */ +goog.isInModuleLoader_ = function() { + return goog.moduleLoaderState_ != null; +}; + + +/** + * Indicate that a module's exports that are known test methods should + * be copied to the global object. This makes the test methods visible to + * test runners that inspect the global object. + * + * TODO(johnlenz): Make the test framework aware of goog.module so + * that this isn't necessary. Alternately combine this with goog.setTestOnly + * to minimize boiler plate. + * @suppress {missingProvide} + */ +goog.module.declareTestMethods = function() { + if (!goog.isInModuleLoader_()) { + throw new Error('goog.module.declareTestMethods must be called from ' + + 'within a goog.module'); + } + goog.moduleLoaderState_.declareTestMethods = true; +}; + + +/** + * Provide the module's exports as a globally accessible object under the + * module's declared name. This is intended to ease migration to goog.module + * for files that have existing usages. + * @suppress {missingProvide} + */ +goog.module.declareLegacyNamespace = function() { + if (!COMPILED && !goog.isInModuleLoader_()) { + throw new Error('goog.module.declareLegacyNamespace must be called from ' + + 'within a goog.module'); + } + if (!COMPILED && !goog.moduleLoaderState_.moduleName) { + throw Error('goog.module must be called prior to ' + + 'goog.module.declareLegacyNamespace.'); + } + goog.moduleLoaderState_.declareLegacyNamespace = true; +}; + + +/** + * Marks that the current file should only be used for testing, and never for + * live code in production. + * + * In the case of unit tests, the message may optionally be an exact namespace + * for the test (e.g. 'goog.stringTest'). The linter will then ignore the extra + * provide (if not explicitly defined in the code). + * + * @param {string=} opt_message Optional message to add to the error that's + * raised when used in production code. + */ +goog.setTestOnly = function(opt_message) { + if (goog.DISALLOW_TEST_ONLY_CODE) { + opt_message = opt_message || ''; + throw Error('Importing test-only code into non-debug environment' + + (opt_message ? ': ' + opt_message : '.')); + } +}; + + +/** + * Forward declares a symbol. This is an indication to the compiler that the + * symbol may be used in the source yet is not required and may not be provided + * in compilation. + * + * The most common usage of forward declaration is code that takes a type as a + * function parameter but does not need to require it. By forward declaring + * instead of requiring, no hard dependency is made, and (if not required + * elsewhere) the namespace may never be required and thus, not be pulled + * into the JavaScript binary. If it is required elsewhere, it will be type + * checked as normal. + * + * + * @param {string} name The namespace to forward declare in the form of + * "goog.package.part". + */ +goog.forwardDeclare = function(name) {}; + + +if (!COMPILED) { + + /** + * Check if the given name has been goog.provided. This will return false for + * names that are available only as implicit namespaces. + * @param {string} name name of the object to look for. + * @return {boolean} Whether the name has been provided. + * @private + */ + goog.isProvided_ = function(name) { + return (name in goog.loadedModules_) || + (!goog.implicitNamespaces_[name] && + goog.isDefAndNotNull(goog.getObjectByName(name))); + }; + + /** + * Namespaces implicitly defined by goog.provide. For example, + * goog.provide('goog.events.Event') implicitly declares that 'goog' and + * 'goog.events' must be namespaces. + * + * @type {!Object} + * @private + */ + goog.implicitNamespaces_ = {'goog.module': true}; + + // NOTE: We add goog.module as an implicit namespace as goog.module is defined + // here and because the existing module package has not been moved yet out of + // the goog.module namespace. This satisifies both the debug loader and + // ahead-of-time dependency management. +} + + +/** + * Returns an object based on its fully qualified external name. The object + * is not found if null or undefined. If you are using a compilation pass that + * renames property names beware that using this function will not find renamed + * properties. + * + * @param {string} name The fully qualified name. + * @param {Object=} opt_obj The object within which to look; default is + * |goog.global|. + * @return {?} The value (object or primitive) or, if not found, null. + */ +goog.getObjectByName = function(name, opt_obj) { + var parts = name.split('.'); + var cur = opt_obj || goog.global; + for (var part; part = parts.shift(); ) { + if (goog.isDefAndNotNull(cur[part])) { + cur = cur[part]; + } else { + return null; + } + } + return cur; +}; + + +/** + * Globalizes a whole namespace, such as goog or goog.lang. + * + * @param {!Object} obj The namespace to globalize. + * @param {Object=} opt_global The object to add the properties to. + * @deprecated Properties may be explicitly exported to the global scope, but + * this should no longer be done in bulk. + */ +goog.globalize = function(obj, opt_global) { + var global = opt_global || goog.global; + for (var x in obj) { + global[x] = obj[x]; + } +}; + + +/** + * Adds a dependency from a file to the files it requires. + * @param {string} relPath The path to the js file. + * @param {!Array} provides An array of strings with + * the names of the objects this file provides. + * @param {!Array} requires An array of strings with + * the names of the objects this file requires. + * @param {boolean=} opt_isModule Whether this dependency must be loaded as + * a module as declared by goog.module. + */ +goog.addDependency = function(relPath, provides, requires, opt_isModule) { + if (goog.DEPENDENCIES_ENABLED) { + var provide, require; + var path = relPath.replace(/\\/g, '/'); + var deps = goog.dependencies_; + for (var i = 0; provide = provides[i]; i++) { + deps.nameToPath[provide] = path; + deps.pathIsModule[path] = !!opt_isModule; + } + for (var j = 0; require = requires[j]; j++) { + if (!(path in deps.requires)) { + deps.requires[path] = {}; + } + deps.requires[path][require] = true; + } + } +}; + + + + +// NOTE(nnaze): The debug DOM loader was included in base.js as an original way +// to do "debug-mode" development. The dependency system can sometimes be +// confusing, as can the debug DOM loader's asynchronous nature. +// +// With the DOM loader, a call to goog.require() is not blocking -- the script +// will not load until some point after the current script. If a namespace is +// needed at runtime, it needs to be defined in a previous script, or loaded via +// require() with its registered dependencies. +// User-defined namespaces may need their own deps file. See http://go/js_deps, +// http://go/genjsdeps, or, externally, DepsWriter. +// https://developers.google.com/closure/library/docs/depswriter +// +// Because of legacy clients, the DOM loader can't be easily removed from +// base.js. Work is being done to make it disableable or replaceable for +// different environments (DOM-less JavaScript interpreters like Rhino or V8, +// for example). See bootstrap/ for more information. + + +/** + * @define {boolean} Whether to enable the debug loader. + * + * If enabled, a call to goog.require() will attempt to load the namespace by + * appending a script tag to the DOM (if the namespace has been registered). + * + * If disabled, goog.require() will simply assert that the namespace has been + * provided (and depend on the fact that some outside tool correctly ordered + * the script). + */ +goog.define('goog.ENABLE_DEBUG_LOADER', true); + + +/** + * @param {string} msg + * @private + */ +goog.logToConsole_ = function(msg) { + if (goog.global.console) { + goog.global.console['error'](msg); + } +}; + + +/** + * Implements a system for the dynamic resolution of dependencies that works in + * parallel with the BUILD system. Note that all calls to goog.require will be + * stripped by the JSCompiler when the --closure_pass option is used. + * @see goog.provide + * @param {string} name Namespace to include (as was given in goog.provide()) in + * the form "goog.package.part". + * @return {?} If called within a goog.module file, the associated namespace or + * module otherwise null. + */ +goog.require = function(name) { + + // If the object already exists we do not need do do anything. + if (!COMPILED) { + if (goog.ENABLE_DEBUG_LOADER && goog.IS_OLD_IE_) { + goog.maybeProcessDeferredDep_(name); + } + + if (goog.isProvided_(name)) { + if (goog.isInModuleLoader_()) { + return goog.module.getInternal_(name); + } else { + return null; + } + } + + if (goog.ENABLE_DEBUG_LOADER) { + var path = goog.getPathFromDeps_(name); + if (path) { + goog.included_[path] = true; + goog.writeScripts_(); + return null; + } + } + + var errorMessage = 'goog.require could not find: ' + name; + goog.logToConsole_(errorMessage); + + throw Error(errorMessage); + } +}; + + +/** + * Path for included scripts. + * @type {string} + */ +goog.basePath = ''; + + +/** + * A hook for overriding the base path. + * @type {string|undefined} + */ +goog.global.CLOSURE_BASE_PATH; + + +/** + * Whether to write out Closure's deps file. By default, the deps are written. + * @type {boolean|undefined} + */ +goog.global.CLOSURE_NO_DEPS; + + +/** + * A function to import a single script. This is meant to be overridden when + * Closure is being run in non-HTML contexts, such as web workers. It's defined + * in the global scope so that it can be set before base.js is loaded, which + * allows deps.js to be imported properly. + * + * The function is passed the script source, which is a relative URI. It should + * return true if the script was imported, false otherwise. + * @type {(function(string): boolean)|undefined} + */ +goog.global.CLOSURE_IMPORT_SCRIPT; + + +/** + * Null function used for default values of callbacks, etc. + * @return {void} Nothing. + */ +goog.nullFunction = function() {}; + + +/** + * The identity function. Returns its first argument. + * + * @param {*=} opt_returnValue The single value that will be returned. + * @param {...*} var_args Optional trailing arguments. These are ignored. + * @return {?} The first argument. We can't know the type -- just pass it along + * without type. + * @deprecated Use goog.functions.identity instead. + */ +goog.identityFunction = function(opt_returnValue, var_args) { + return opt_returnValue; +}; + + +/** + * When defining a class Foo with an abstract method bar(), you can do: + * Foo.prototype.bar = goog.abstractMethod + * + * Now if a subclass of Foo fails to override bar(), an error will be thrown + * when bar() is invoked. + * + * Note: This does not take the name of the function to override as an argument + * because that would make it more difficult to obfuscate our JavaScript code. + * + * @type {!Function} + * @throws {Error} when invoked to indicate the method should be overridden. + */ +goog.abstractMethod = function() { + throw Error('unimplemented abstract method'); +}; + + +/** + * Adds a {@code getInstance} static method that always returns the same + * instance object. + * @param {!Function} ctor The constructor for the class to add the static + * method to. + */ +goog.addSingletonGetter = function(ctor) { + ctor.getInstance = function() { + if (ctor.instance_) { + return ctor.instance_; + } + if (goog.DEBUG) { + // NOTE: JSCompiler can't optimize away Array#push. + goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = ctor; + } + return ctor.instance_ = new ctor; + }; +}; + + +/** + * All singleton classes that have been instantiated, for testing. Don't read + * it directly, use the {@code goog.testing.singleton} module. The compiler + * removes this variable if unused. + * @type {!Array} + * @private + */ +goog.instantiatedSingletons_ = []; + + +/** + * @define {boolean} Whether to load goog.modules using {@code eval} when using + * the debug loader. This provides a better debugging experience as the + * source is unmodified and can be edited using Chrome Workspaces or similar. + * However in some environments the use of {@code eval} is banned + * so we provide an alternative. + */ +goog.define('goog.LOAD_MODULE_USING_EVAL', true); + + +/** + * @define {boolean} Whether the exports of goog.modules should be sealed when + * possible. + */ +goog.define('goog.SEAL_MODULE_EXPORTS', goog.DEBUG); + + +/** + * The registry of initialized modules: + * the module identifier to module exports map. + * @private @const {!Object} + */ +goog.loadedModules_ = {}; + + +/** + * True if goog.dependencies_ is available. + * @const {boolean} + */ +goog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER; + + +if (goog.DEPENDENCIES_ENABLED) { + /** + * Object used to keep track of urls that have already been added. This record + * allows the prevention of circular dependencies. + * @private {!Object} + */ + goog.included_ = {}; + + + /** + * This object is used to keep track of dependencies and other data that is + * used for loading scripts. + * @private + * @type {{ + * pathIsModule: !Object, + * nameToPath: !Object, + * requires: !Object>, + * visited: !Object, + * written: !Object, + * deferred: !Object + * }} + */ + goog.dependencies_ = { + pathIsModule: {}, // 1 to 1 + + nameToPath: {}, // 1 to 1 + + requires: {}, // 1 to many + + // Used when resolving dependencies to prevent us from visiting file twice. + visited: {}, + + written: {}, // Used to keep track of script files we have written. + + deferred: {} // Used to track deferred module evaluations in old IEs + }; + + + /** + * Tries to detect whether is in the context of an HTML document. + * @return {boolean} True if it looks like HTML document. + * @private + */ + goog.inHtmlDocument_ = function() { + var doc = goog.global.document; + return typeof doc != 'undefined' && + 'write' in doc; // XULDocument misses write. + }; + + + /** + * Tries to detect the base path of base.js script that bootstraps Closure. + * @private + */ + goog.findBasePath_ = function() { + if (goog.isDef(goog.global.CLOSURE_BASE_PATH)) { + goog.basePath = goog.global.CLOSURE_BASE_PATH; + return; + } else if (!goog.inHtmlDocument_()) { + return; + } + var doc = goog.global.document; + var scripts = doc.getElementsByTagName('SCRIPT'); + // Search backwards since the current script is in almost all cases the one + // that has base.js. + for (var i = scripts.length - 1; i >= 0; --i) { + var script = /** @type {!HTMLScriptElement} */ (scripts[i]); + var src = script.src; + var qmark = src.lastIndexOf('?'); + var l = qmark == -1 ? src.length : qmark; + if (src.substr(l - 7, 7) == 'base.js') { + goog.basePath = src.substr(0, l - 7); + return; + } + } + }; + + + /** + * Imports a script if, and only if, that script hasn't already been imported. + * (Must be called at execution time) + * @param {string} src Script source. + * @param {string=} opt_sourceText The optionally source text to evaluate + * @private + */ + goog.importScript_ = function(src, opt_sourceText) { + var importScript = goog.global.CLOSURE_IMPORT_SCRIPT || + goog.writeScriptTag_; + if (importScript(src, opt_sourceText)) { + goog.dependencies_.written[src] = true; + } + }; + + + /** @const @private {boolean} */ + goog.IS_OLD_IE_ = !!(!goog.global.atob && goog.global.document && + goog.global.document.all); + + + /** + * Given a URL initiate retrieval and execution of the module. + * @param {string} src Script source URL. + * @private + */ + goog.importModule_ = function(src) { + // In an attempt to keep browsers from timing out loading scripts using + // synchronous XHRs, put each load in its own script block. + var bootstrap = 'goog.retrieveAndExecModule_("' + src + '");'; + + if (goog.importScript_('', bootstrap)) { + goog.dependencies_.written[src] = true; + } + }; + + + /** @private {!Array} */ + goog.queuedModules_ = []; + + + /** + * Return an appropriate module text. Suitable to insert into + * a script tag (that is unescaped). + * @param {string} srcUrl + * @param {string} scriptText + * @return {string} + * @private + */ + goog.wrapModule_ = function(srcUrl, scriptText) { + if (!goog.LOAD_MODULE_USING_EVAL || !goog.isDef(goog.global.JSON)) { + return '' + + 'goog.loadModule(function(exports) {' + + '"use strict";' + + scriptText + + '\n' + // terminate any trailing single line comment. + ';return exports' + + '});' + + '\n//# sourceURL=' + srcUrl + '\n'; + } else { + return '' + + 'goog.loadModule(' + + goog.global.JSON.stringify( + scriptText + '\n//# sourceURL=' + srcUrl + '\n') + + ');'; + } + }; + + // On IE9 and earlier, it is necessary to handle + // deferred module loads. In later browsers, the + // code to be evaluated is simply inserted as a script + // block in the correct order. To eval deferred + // code at the right time, we piggy back on goog.require to call + // goog.maybeProcessDeferredDep_. + // + // The goog.requires are used both to bootstrap + // the loading process (when no deps are available) and + // declare that they should be available. + // + // Here we eval the sources, if all the deps are available + // either already eval'd or goog.require'd. This will + // be the case when all the dependencies have already + // been loaded, and the dependent module is loaded. + // + // But this alone isn't sufficient because it is also + // necessary to handle the case where there is no root + // that is not deferred. For that there we register for an event + // and trigger goog.loadQueuedModules_ handle any remaining deferred + // evaluations. + + /** + * Handle any remaining deferred goog.module evals. + * @private + */ + goog.loadQueuedModules_ = function() { + var count = goog.queuedModules_.length; + if (count > 0) { + var queue = goog.queuedModules_; + goog.queuedModules_ = []; + for (var i = 0; i < count; i++) { + var path = queue[i]; + goog.maybeProcessDeferredPath_(path); + } + } + }; + + + /** + * Eval the named module if its dependencies are + * available. + * @param {string} name The module to load. + * @private + */ + goog.maybeProcessDeferredDep_ = function(name) { + if (goog.isDeferredModule_(name) && + goog.allDepsAreAvailable_(name)) { + var path = goog.getPathFromDeps_(name); + goog.maybeProcessDeferredPath_(goog.basePath + path); + } + }; + + /** + * @param {string} name The module to check. + * @return {boolean} Whether the name represents a + * module whose evaluation has been deferred. + * @private + */ + goog.isDeferredModule_ = function(name) { + var path = goog.getPathFromDeps_(name); + if (path && goog.dependencies_.pathIsModule[path]) { + var abspath = goog.basePath + path; + return (abspath) in goog.dependencies_.deferred; + } + return false; + }; + + /** + * @param {string} name The module to check. + * @return {boolean} Whether the name represents a + * module whose declared dependencies have all been loaded + * (eval'd or a deferred module load) + * @private + */ + goog.allDepsAreAvailable_ = function(name) { + var path = goog.getPathFromDeps_(name); + if (path && (path in goog.dependencies_.requires)) { + for (var requireName in goog.dependencies_.requires[path]) { + if (!goog.isProvided_(requireName) && + !goog.isDeferredModule_(requireName)) { + return false; + } + } + } + return true; + }; + + + /** + * @param {string} abspath + * @private + */ + goog.maybeProcessDeferredPath_ = function(abspath) { + if (abspath in goog.dependencies_.deferred) { + var src = goog.dependencies_.deferred[abspath]; + delete goog.dependencies_.deferred[abspath]; + goog.globalEval(src); + } + }; + + + /** + * @param {function(?):?|string} moduleDef The module definition. + */ + goog.loadModule = function(moduleDef) { + // NOTE: we allow function definitions to be either in the from + // of a string to eval (which keeps the original source intact) or + // in a eval forbidden environment (CSP) we allow a function definition + // which in its body must call {@code goog.module}, and return the exports + // of the module. + var previousState = goog.moduleLoaderState_; + try { + goog.moduleLoaderState_ = { + moduleName: undefined, declareTestMethods: false}; + var exports; + if (goog.isFunction(moduleDef)) { + exports = moduleDef.call(goog.global, {}); + } else if (goog.isString(moduleDef)) { + exports = goog.loadModuleFromSource_.call(goog.global, moduleDef); + } else { + throw Error('Invalid module definition'); + } + + var moduleName = goog.moduleLoaderState_.moduleName; + if (!goog.isString(moduleName) || !moduleName) { + throw Error('Invalid module name \"' + moduleName + '\"'); + } + + // Don't seal legacy namespaces as they may be uses as a parent of + // another namespace + if (goog.moduleLoaderState_.declareLegacyNamespace) { + goog.constructNamespace_(moduleName, exports); + } else if (goog.SEAL_MODULE_EXPORTS && Object.seal) { + Object.seal(exports); + } + + goog.loadedModules_[moduleName] = exports; + if (goog.moduleLoaderState_.declareTestMethods) { + for (var entry in exports) { + if (entry.indexOf('test', 0) === 0 || + entry == 'tearDown' || + entry == 'setUp' || + entry == 'setUpPage' || + entry == 'tearDownPage') { + goog.global[entry] = exports[entry]; + } + } + } + } finally { + goog.moduleLoaderState_ = previousState; + } + }; + + + /** + * @param {string} source + * @return {!Object} + * @private + */ + goog.loadModuleFromSource_ = function(source) { + // NOTE: we avoid declaring parameters or local variables here to avoid + // masking globals or leaking values into the module definition. + 'use strict'; + var exports = {}; + eval(arguments[0]); + return exports; + }; + + + /** + * The default implementation of the import function. Writes a script tag to + * import the script. + * + * @param {string} src The script url. + * @param {string=} opt_sourceText The optionally source text to evaluate + * @return {boolean} True if the script was imported, false otherwise. + * @private + */ + goog.writeScriptTag_ = function(src, opt_sourceText) { + if (goog.inHtmlDocument_()) { + var doc = goog.global.document; + + // If the user tries to require a new symbol after document load, + // something has gone terribly wrong. Doing a document.write would + // wipe out the page. + if (doc.readyState == 'complete') { + // Certain test frameworks load base.js multiple times, which tries + // to write deps.js each time. If that happens, just fail silently. + // These frameworks wipe the page between each load of base.js, so this + // is OK. + var isDeps = /\bdeps.js$/.test(src); + if (isDeps) { + return false; + } else { + throw Error('Cannot write "' + src + '" after document load'); + } + } + + var isOldIE = goog.IS_OLD_IE_; + + if (opt_sourceText === undefined) { + if (!isOldIE) { + doc.write( + ' + + + +bindAttribLocation with aliasing + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-bindAttribLocation-matrix.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-bindAttribLocation-matrix.html new file mode 100644 index 00000000000..75d747171f0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-bindAttribLocation-matrix.html @@ -0,0 +1,121 @@ + + + + + + + + + + +WebGL bindAttribLocation with Matrix Attributes Conformance Test + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-bindAttribLocation-repeated.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-bindAttribLocation-repeated.html new file mode 100644 index 00000000000..3bf0a8dfed9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-bindAttribLocation-repeated.html @@ -0,0 +1,91 @@ + + + + + + +WebGL Repeated BindAttribLocation Test + + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-disabled-vertex-attrib.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-disabled-vertex-attrib.html new file mode 100644 index 00000000000..eb41b2c4043 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-disabled-vertex-attrib.html @@ -0,0 +1,102 @@ + + + + + + +WebGL Disabled Vertex Attrib Test + + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-enable-vertex-attrib.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-enable-vertex-attrib.html new file mode 100644 index 00000000000..8966a5c070f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-enable-vertex-attrib.html @@ -0,0 +1,84 @@ + + + + + + + WebGL Enable Vertex Attrib Test + + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-matrix-attributes.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-matrix-attributes.html new file mode 100644 index 00000000000..8449fdfc1bf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-matrix-attributes.html @@ -0,0 +1,159 @@ + + + + + + + + + + +WebGL Matrix Attribute Conformance Test + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertex-attrib-render.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertex-attrib-render.html new file mode 100644 index 00000000000..8789309f584 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertex-attrib-render.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertex-attrib-zero-issues.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertex-attrib-zero-issues.html new file mode 100644 index 00000000000..6404cd4b29f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertex-attrib-zero-issues.html @@ -0,0 +1,154 @@ + + + + + + +WebGL Enable Vertex Attrib Zero Test + + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertex-attrib.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertex-attrib.html new file mode 100644 index 00000000000..8a095e5bc73 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertex-attrib.html @@ -0,0 +1,51 @@ + + + + + + +WebGL vertexAttrib Conformance Tests + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertexattribpointer-offsets.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertexattribpointer-offsets.html new file mode 100644 index 00000000000..ccbc8d00515 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertexattribpointer-offsets.html @@ -0,0 +1,183 @@ + + + + + + + vertexattribpointer offsets test + + + + + + + + +There is supposed to be an example drawing here, but it's not important. + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertexattribpointer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertexattribpointer.html new file mode 100644 index 00000000000..2f97b4a6790 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/attribs/gl-vertexattribpointer.html @@ -0,0 +1,180 @@ + + + + + + +WebGL vertexAttribPointer Conformance Tests + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/00_test_list.txt new file mode 100644 index 00000000000..a13bcae9ca6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/00_test_list.txt @@ -0,0 +1,12 @@ +buffer-bind-test.html +buffer-data-and-buffer-sub-data.html +--min-version 1.0.3 buffer-data-array-buffer-delete.html +--min-version 1.0.4 buffer-uninitialized.html +--min-version 1.0.2 element-array-buffer-delete-recreate.html +index-validation-copies-indices.html +index-validation-crash-with-buffer-sub-data.html +--min-version 1.0.2 index-validation-large-buffer.html +index-validation-verifies-too-many-indices.html +index-validation-with-resized-buffer.html +index-validation.html + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-bind-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-bind-test.html new file mode 100644 index 00000000000..fed515fc133 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-bind-test.html @@ -0,0 +1,89 @@ + + + + + + + WebGL BindBuffer conformance test. + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-data-and-buffer-sub-data.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-data-and-buffer-sub-data.html new file mode 100644 index 00000000000..7bb447a696e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-data-and-buffer-sub-data.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-data-array-buffer-delete.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-data-array-buffer-delete.html new file mode 100644 index 00000000000..c2a8d35e1a9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-data-array-buffer-delete.html @@ -0,0 +1,82 @@ + + + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-uninitialized.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-uninitialized.html new file mode 100644 index 00000000000..7701189dfd5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/buffer-uninitialized.html @@ -0,0 +1,125 @@ + + + + + + + + + + + + +
+
+ + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/element-array-buffer-delete-recreate.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/element-array-buffer-delete-recreate.html new file mode 100644 index 00000000000..07df297ca22 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/element-array-buffer-delete-recreate.html @@ -0,0 +1,92 @@ + + + + + + Element Array Buffer Deletion and Recreation Test + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-copies-indices.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-copies-indices.html new file mode 100644 index 00000000000..5f0645f3dca --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-copies-indices.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-crash-with-buffer-sub-data.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-crash-with-buffer-sub-data.html new file mode 100644 index 00000000000..20704bae3fd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-crash-with-buffer-sub-data.html @@ -0,0 +1,61 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-large-buffer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-large-buffer.html new file mode 100644 index 00000000000..e15aaca94da --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-large-buffer.html @@ -0,0 +1,79 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-verifies-too-many-indices.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-verifies-too-many-indices.html new file mode 100644 index 00000000000..e2dd74df2ea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-verifies-too-many-indices.html @@ -0,0 +1,73 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-with-resized-buffer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-with-resized-buffer.html new file mode 100644 index 00000000000..0d2434f3293 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation-with-resized-buffer.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation.html new file mode 100644 index 00000000000..5cee5126344 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/buffers/index-validation.html @@ -0,0 +1,140 @@ + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/00_test_list.txt new file mode 100644 index 00000000000..b1d74fca268 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/00_test_list.txt @@ -0,0 +1,15 @@ +buffer-offscreen-test.html +buffer-preserve-test.html +canvas-test.html +canvas-zero-size.html +drawingbuffer-static-canvas-test.html +--min-version 1.0.2 drawingbuffer-hd-dpi-test.html +drawingbuffer-test.html +--min-version 1.0.3 draw-webgl-to-canvas-test.html +--min-version 1.0.3 draw-static-webgl-to-multiple-canvas-test.html +--min-version 1.0.2 framebuffer-bindings-unaffected-on-resize.html +--min-version 1.0.4 framebuffer-bindings-affected-by-to-data-url.html +--min-version 1.0.3 rapid-resizing.html +--min-version 1.0.2 texture-bindings-unaffected-on-resize.html +--min-version 1.0.2 to-data-url-test.html +viewport-unchanged-upon-resize.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/buffer-offscreen-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/buffer-offscreen-test.html new file mode 100644 index 00000000000..26c148f7d44 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/buffer-offscreen-test.html @@ -0,0 +1,101 @@ + + + + + +WebGL required buffer clear behaviour test + + + + + + + + +
+ +
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/buffer-preserve-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/buffer-preserve-test.html new file mode 100644 index 00000000000..13aad5f3da4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/buffer-preserve-test.html @@ -0,0 +1,89 @@ + + + + + +WebGL required buffer clear behaviour test + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/canvas-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/canvas-test.html new file mode 100644 index 00000000000..1f4508f8eab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/canvas-test.html @@ -0,0 +1,214 @@ + + + + + + +WebGL Canvas Conformance Tests + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/canvas-zero-size.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/canvas-zero-size.html new file mode 100644 index 00000000000..18c00176972 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/canvas-zero-size.html @@ -0,0 +1,66 @@ + + + + + + + Zero Size Canvas Test + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/draw-static-webgl-to-multiple-canvas-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/draw-static-webgl-to-multiple-canvas-test.html new file mode 100644 index 00000000000..0770cb5ffc3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/draw-static-webgl-to-multiple-canvas-test.html @@ -0,0 +1,98 @@ + + + + + + +WebGL Canvas Conformance Tests + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/draw-webgl-to-canvas-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/draw-webgl-to-canvas-test.html new file mode 100644 index 00000000000..45b79bbde40 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/draw-webgl-to-canvas-test.html @@ -0,0 +1,101 @@ + + + + + + +WebGL Canvas Conformance Tests + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/drawingbuffer-hd-dpi-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/drawingbuffer-hd-dpi-test.html new file mode 100644 index 00000000000..55a32ee0946 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/drawingbuffer-hd-dpi-test.html @@ -0,0 +1,227 @@ + + + + + + +WebGL DrawingBuffer dimensions on HD-DPI machines test + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/drawingbuffer-static-canvas-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/drawingbuffer-static-canvas-test.html new file mode 100644 index 00000000000..04f15bf6c47 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/drawingbuffer-static-canvas-test.html @@ -0,0 +1,139 @@ + + + + + + +WebGL Canvas Conformance Tests + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/drawingbuffer-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/drawingbuffer-test.html new file mode 100644 index 00000000000..938898c4caf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/drawingbuffer-test.html @@ -0,0 +1,140 @@ + + + + + + +WebGL Canvas.drawingBufferWidth,drawingBufferHeight Conformance Tests + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/framebuffer-bindings-affected-by-to-data-url.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/framebuffer-bindings-affected-by-to-data-url.html new file mode 100644 index 00000000000..9cb944a3392 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/framebuffer-bindings-affected-by-to-data-url.html @@ -0,0 +1,97 @@ + + + + + + +Verifies than GL framebuffer bindings do not change by toDataURL() + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/framebuffer-bindings-unaffected-on-resize.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/framebuffer-bindings-unaffected-on-resize.html new file mode 100644 index 00000000000..d93efb7cfed --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/framebuffer-bindings-unaffected-on-resize.html @@ -0,0 +1,108 @@ + + + + + + +Verifies that GL framebuffer bindings do not change when canvas is resized + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/rapid-resizing.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/rapid-resizing.html new file mode 100644 index 00000000000..f423e17f563 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/rapid-resizing.html @@ -0,0 +1,192 @@ + + + + + + +WebGL Rapid Resizing Test + + + + + + + +
+ + +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/texture-bindings-unaffected-on-resize.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/texture-bindings-unaffected-on-resize.html new file mode 100644 index 00000000000..b79ef920540 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/texture-bindings-unaffected-on-resize.html @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/to-data-url-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/to-data-url-test.html new file mode 100644 index 00000000000..67e26a408ea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/to-data-url-test.html @@ -0,0 +1,131 @@ + + + + + +WebGL toDataURL test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/viewport-unchanged-upon-resize.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/viewport-unchanged-upon-resize.html new file mode 100644 index 00000000000..977280beede --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/canvas/viewport-unchanged-upon-resize.html @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/00_test_list.txt new file mode 100644 index 00000000000..078cbe8f920 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/00_test_list.txt @@ -0,0 +1,19 @@ +--max-version 1.9.9 constants-and-properties.html +--min-version 1.0.2 context-attribute-preserve-drawing-buffer.html +context-attributes-alpha-depth-stencil-antialias.html +--min-version 1.0.4 context-size-change.html +--min-version 1.0.4 context-no-alpha-fbo-with-alpha.html +--min-version 1.0.2 --slow context-creation-and-destruction.html +--min-version 1.0.3 --slow context-creation.html +--min-version 1.0.3 --slow context-eviction-with-garbage-collection.html +--min-version 1.0.3 context-hidden-alpha.html +--min-version 1.0.2 context-release-upon-reload.html +--min-version 1.0.2 context-release-with-workers.html +context-lost-restored.html +context-lost.html +--max-version 1.9.9 context-type-test.html +incorrect-context-object-behaviour.html +--max-version 1.9.9 methods.html +premultiplyalpha-test.html +resource-sharing-test.html +--min-version 1.0.4 user-defined-properties-on-context.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/constants-and-properties.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/constants-and-properties.html new file mode 100644 index 00000000000..d6f093a2d81 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/constants-and-properties.html @@ -0,0 +1,568 @@ + + + + + +WebGL Constants and Properties Test + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-attribute-preserve-drawing-buffer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-attribute-preserve-drawing-buffer.html new file mode 100644 index 00000000000..2726815a7c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-attribute-preserve-drawing-buffer.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + +
+ + + +
+should look like +
+
+
+
+
+
+
+ + + +
+should look like +
+
+
+
+
+
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-attributes-alpha-depth-stencil-antialias.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-attributes-alpha-depth-stencil-antialias.html new file mode 100644 index 00000000000..703662faaa4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-attributes-alpha-depth-stencil-antialias.html @@ -0,0 +1,356 @@ + + + + + + + + + + + + + + + + + + +
+
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-creation-and-destruction.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-creation-and-destruction.html new file mode 100644 index 00000000000..a3912fcf7ea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-creation-and-destruction.html @@ -0,0 +1,58 @@ + + + + + + +Test that contexts are freed and garbage collected reasonably + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-creation.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-creation.html new file mode 100644 index 00000000000..d8685e48fcb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-creation.html @@ -0,0 +1,58 @@ + + + + + + +Test that you can create large numbers of WebGL contexts. + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-eviction-with-garbage-collection.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-eviction-with-garbage-collection.html new file mode 100644 index 00000000000..6fe89e25851 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-eviction-with-garbage-collection.html @@ -0,0 +1,80 @@ + + + + + + +Test that context eviction and garbage collection do not interfere with each other + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-hidden-alpha.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-hidden-alpha.html new file mode 100644 index 00000000000..24e4fb3c294 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-hidden-alpha.html @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + +
+
+
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-lost-restored.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-lost-restored.html new file mode 100644 index 00000000000..26407214bb7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-lost-restored.html @@ -0,0 +1,308 @@ + + + + + + + + + + + + + +
+
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-lost.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-lost.html new file mode 100644 index 00000000000..e2d587f2ce0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-lost.html @@ -0,0 +1,376 @@ + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-no-alpha-fbo-with-alpha.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-no-alpha-fbo-with-alpha.html new file mode 100644 index 00000000000..03cc15f8254 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-no-alpha-fbo-with-alpha.html @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-release-upon-reload.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-release-upon-reload.html new file mode 100644 index 00000000000..9da29719e52 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-release-upon-reload.html @@ -0,0 +1,95 @@ + + + + + + +WebGL Context Release Test + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-release-with-workers.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-release-with-workers.html new file mode 100644 index 00000000000..74127d165d3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-release-with-workers.html @@ -0,0 +1,95 @@ + + + + + + +WebGL Context Release Test + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-size-change.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-size-change.html new file mode 100644 index 00000000000..5c622c17e02 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-size-change.html @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + +
+
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-type-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-type-test.html new file mode 100644 index 00000000000..49427a0970b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/context-type-test.html @@ -0,0 +1,76 @@ + + + + + + +WebGL Canvas Conformance Tests + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/incorrect-context-object-behaviour.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/incorrect-context-object-behaviour.html new file mode 100644 index 00000000000..340c76387db --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/incorrect-context-object-behaviour.html @@ -0,0 +1,90 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/methods.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/methods.html new file mode 100644 index 00000000000..8cef4d96ea1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/methods.html @@ -0,0 +1,241 @@ + + + + + +WebGL Methods Test + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/premultiplyalpha-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/premultiplyalpha-test.html new file mode 100644 index 00000000000..4f63c2ef232 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/premultiplyalpha-test.html @@ -0,0 +1,268 @@ + + + + + + +Test the WebGL premultipliedAlpha context creation flag. + + + + + + + +
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resource-sharing-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resource-sharing-test.html new file mode 100644 index 00000000000..ca1af95f322 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resource-sharing-test.html @@ -0,0 +1,66 @@ + + + + + + +WebGL Resource Sharing. + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resources/context-release-child-with-worker.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resources/context-release-child-with-worker.html new file mode 100644 index 00000000000..31cba6acdc0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resources/context-release-child-with-worker.html @@ -0,0 +1,76 @@ + + + + + + +Simple WebGL context with Worker + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resources/context-release-upon-reload-child.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resources/context-release-upon-reload-child.html new file mode 100644 index 00000000000..87058e9fa0d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resources/context-release-upon-reload-child.html @@ -0,0 +1,75 @@ + + + + + + +Simple WebGL context + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resources/context-release-worker.js b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resources/context-release-worker.js new file mode 100644 index 00000000000..3680117c25b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/resources/context-release-worker.js @@ -0,0 +1,4 @@ +// Simple worker used to provoke WebGL context release bugs on Chrome + +postMessage("Hello World"); +close(); \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/user-defined-properties-on-context.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/user-defined-properties-on-context.html new file mode 100644 index 00000000000..23fdf6fe07f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/context/user-defined-properties-on-context.html @@ -0,0 +1,72 @@ + + + + + +WebGL User-Defined Properties Test + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/00_test_list.txt new file mode 100644 index 00000000000..dcc19fb43ec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/00_test_list.txt @@ -0,0 +1,39 @@ +--min-version 1.0.3 --max-version 1.9.9 angle-instanced-arrays.html +--min-version 1.0.3 --max-version 1.9.9 angle-instanced-arrays-out-of-bounds.html +--min-version 1.0.3 --max-version 1.9.9 ext-blend-minmax.html +--min-version 1.0.4 ext-disjoint-timer-query.html +--min-version 1.0.3 --max-version 1.9.9 ext-frag-depth.html +--min-version 1.0.3 --max-version 1.9.9 ext-shader-texture-lod.html +--min-version 1.0.3 --max-version 1.9.9 ext-sRGB.html +--min-version 1.0.2 ext-texture-filter-anisotropic.html +--min-version 1.0.2 get-extension.html +--max-version 1.9.9 oes-standard-derivatives.html +--max-version 1.9.9 oes-texture-float-with-canvas.html +--max-version 1.9.9 oes-texture-float-with-image-data.html +--max-version 1.9.9 oes-texture-float-with-image.html +--max-version 1.9.9 oes-texture-float-with-video.html +--max-version 1.9.9 oes-texture-float.html +--max-version 1.9.9 oes-vertex-array-object.html +--min-version 1.0.3 --max-version 1.9.9 oes-vertex-array-object-bufferData.html +--min-version 1.0.3 --max-version 1.9.9 oes-texture-half-float.html +--min-version 1.0.3 oes-texture-float-linear.html +--min-version 1.0.3 --max-version 1.9.9 oes-texture-half-float-linear.html +--min-version 1.0.3 --max-version 1.9.9 oes-texture-half-float-with-canvas.html +--min-version 1.0.3 --max-version 1.9.9 oes-texture-half-float-with-image-data.html +--min-version 1.0.3 --max-version 1.9.9 oes-texture-half-float-with-image.html +--min-version 1.0.3 --max-version 1.9.9 oes-texture-half-float-with-video.html +--min-version 1.0.2 --max-version 1.9.9 oes-element-index-uint.html +webgl-debug-renderer-info.html +webgl-debug-shaders.html +//--min-version 1.0.3 webgl-compressed-texture-atc.html // Removed for WebGL 2.0.0 +--min-version 1.0.4 webgl-compressed-texture-etc.html +--min-version 1.0.3 webgl-compressed-texture-pvrtc.html +--min-version 1.0.2 webgl-compressed-texture-s3tc.html +--min-version 1.0.4 webgl-compressed-texture-s3tc-srgb.html +--min-version 1.0.3 webgl-compressed-texture-size-limit.html +--min-version 1.0.2 --max-version 1.9.9 webgl-depth-texture.html +--min-version 1.0.3 --max-version 1.9.9 webgl-draw-buffers.html +--min-version 1.0.4 --max-version 1.9.9 webgl-draw-buffers-framebuffer-unsupported.html +--min-version 1.0.4 --max-version 1.9.9 webgl-draw-buffers-max-draw-buffers.html +--min-version 1.0.3 webgl-shared-resources.html + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/angle-instanced-arrays-out-of-bounds.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/angle-instanced-arrays-out-of-bounds.html new file mode 100644 index 00000000000..b2021708717 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/angle-instanced-arrays-out-of-bounds.html @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/angle-instanced-arrays.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/angle-instanced-arrays.html new file mode 100644 index 00000000000..b8d03beb1d8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/angle-instanced-arrays.html @@ -0,0 +1,654 @@ + + + + + + +WebGL ANGLE_instanced_arrays Conformance Tests + + + + + + + + +
+ +
+ + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-blend-minmax.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-blend-minmax.html new file mode 100644 index 00000000000..62ad533f5e7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-blend-minmax.html @@ -0,0 +1,248 @@ + + + + + + +WebGL EXT_blend_minmax Conformance Tests + + + + + + + +
+ +
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-disjoint-timer-query.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-disjoint-timer-query.html new file mode 100644 index 00000000000..f15b3a730a5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-disjoint-timer-query.html @@ -0,0 +1,328 @@ + + + + + + +WebGL EXT_disjoint_timer_query Conformance Tests + + + + + + + +
+ +
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-frag-depth.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-frag-depth.html new file mode 100644 index 00000000000..64630e2bec3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-frag-depth.html @@ -0,0 +1,312 @@ + + + + + + +WebGL EXT_frag_depth Conformance Tests + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-sRGB.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-sRGB.html new file mode 100644 index 00000000000..2e3b87c9083 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-sRGB.html @@ -0,0 +1,432 @@ + + + + + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-shader-texture-lod.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-shader-texture-lod.html new file mode 100644 index 00000000000..609ceffb29a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-shader-texture-lod.html @@ -0,0 +1,364 @@ + + + + + +WebGL EXT_shader_texture_lod Conformance Tests + + + + + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-texture-filter-anisotropic.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-texture-filter-anisotropic.html new file mode 100644 index 00000000000..b17bd439561 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/ext-texture-filter-anisotropic.html @@ -0,0 +1,192 @@ + + + + + + +WebGL EXT_texture_filter_anisotropic Conformance Tests + + + + + + + +
+ +
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/get-extension.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/get-extension.html new file mode 100644 index 00000000000..9922b5daec7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/get-extension.html @@ -0,0 +1,122 @@ + + + + + + +WebGL Extension Conformance Tests + + + + + + + +
+ +
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-element-index-uint.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-element-index-uint.html new file mode 100644 index 00000000000..2c0dc16051d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-element-index-uint.html @@ -0,0 +1,451 @@ + + + + + + +WebGL OES_element_index_uint Conformance Tests + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-standard-derivatives.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-standard-derivatives.html new file mode 100644 index 00000000000..190a682f83f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-standard-derivatives.html @@ -0,0 +1,423 @@ + + + + + + +WebGL OES_standard_derivatives Conformance Tests + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-linear.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-linear.html new file mode 100644 index 00000000000..2be7fb3d60e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-linear.html @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + +
+ +
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-canvas.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-canvas.html new file mode 100644 index 00000000000..18ca1a37491 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-canvas.html @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + +
+
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-image-data.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-image-data.html new file mode 100644 index 00000000000..dcea390f9a1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-image-data.html @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + +
+
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-image.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-image.html new file mode 100644 index 00000000000..376fedee8cb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-image.html @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + +
+
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-video.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-video.html new file mode 100644 index 00000000000..adbe43e577b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float-with-video.html @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float.html new file mode 100644 index 00000000000..4b0b3bfa539 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-float.html @@ -0,0 +1,293 @@ + + + + + + +WebGL OES_texture_float Conformance Tests + + + + + + + +
+ +
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-linear.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-linear.html new file mode 100644 index 00000000000..022facfc29b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-linear.html @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + +
+ +
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-canvas.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-canvas.html new file mode 100644 index 00000000000..437b2149fd9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-canvas.html @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + +
+
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-image-data.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-image-data.html new file mode 100644 index 00000000000..04a11b0783f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-image-data.html @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + +
+
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-image.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-image.html new file mode 100644 index 00000000000..9effa28b368 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-image.html @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + +
+
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-video.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-video.html new file mode 100644 index 00000000000..378e863ef74 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float-with-video.html @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float.html new file mode 100644 index 00000000000..e33fa2f175d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-texture-half-float.html @@ -0,0 +1,498 @@ + + + + + + +WebGL OES_texture_half_float Conformance Tests + + + + + + + +
+ + +
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-vertex-array-object-bufferData.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-vertex-array-object-bufferData.html new file mode 100644 index 00000000000..088337ae77a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-vertex-array-object-bufferData.html @@ -0,0 +1,217 @@ + + + + + + +WebGL OES_vertex_array_object_bufferData Conformance Tests + + + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-vertex-array-object.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-vertex-array-object.html new file mode 100644 index 00000000000..8496e280ac3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/oes-vertex-array-object.html @@ -0,0 +1,659 @@ + + + + + + +WebGL OES_vertex_array_object Conformance Tests + + + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-etc.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-etc.html new file mode 100644 index 00000000000..59d88f33a6f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-etc.html @@ -0,0 +1,167 @@ + + + + + + +WebGL WEBGL_compressed_texture_etc Conformance Tests + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-pvrtc.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-pvrtc.html new file mode 100644 index 00000000000..0ef2be639f7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-pvrtc.html @@ -0,0 +1,394 @@ + + + + + + + + + + + +WebGL WEBGL_compressed_texture_pvrtc Conformance Tests + + + +
+ +
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-s3tc-srgb.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-s3tc-srgb.html new file mode 100644 index 00000000000..69793ad8421 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-s3tc-srgb.html @@ -0,0 +1,713 @@ + + + + + + + + + + + +WebGL WEBGL_compressed_texture_s3tc_srgb Conformance Tests + + + +
+ +
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-s3tc.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-s3tc.html new file mode 100644 index 00000000000..28e3cfc5628 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-s3tc.html @@ -0,0 +1,738 @@ + + + + + + + + + + + +WebGL WEBGL_compressed_texture_s3tc Conformance Tests + + + +
+ +
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-size-limit.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-size-limit.html new file mode 100644 index 00000000000..45aab804726 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-compressed-texture-size-limit.html @@ -0,0 +1,263 @@ + + + + + + +WebGL compressed texture size limit conformance test + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-debug-renderer-info.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-debug-renderer-info.html new file mode 100644 index 00000000000..5e6e87a9c41 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-debug-renderer-info.html @@ -0,0 +1,127 @@ + + + + + + +WebGL WebGL_debug_renderer_info Conformance Tests + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-debug-shaders.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-debug-shaders.html new file mode 100644 index 00000000000..3a04174261a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-debug-shaders.html @@ -0,0 +1,167 @@ + + + + + + +WebGL WebGL_debug_shaders Conformance Tests + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-depth-texture.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-depth-texture.html new file mode 100644 index 00000000000..68d7efa8e16 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-depth-texture.html @@ -0,0 +1,354 @@ + + + + + + + + + + +WebGL WEBGL_depth_texture Conformance Tests + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-draw-buffers-framebuffer-unsupported.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-draw-buffers-framebuffer-unsupported.html new file mode 100644 index 00000000000..8f2e134f8cd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-draw-buffers-framebuffer-unsupported.html @@ -0,0 +1,149 @@ + + + + + + +WebGL WEBGL_draw_buffers FRAMEBUFFER_UNSUPPORTED Test + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-draw-buffers-max-draw-buffers.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-draw-buffers-max-draw-buffers.html new file mode 100644 index 00000000000..7209152bf8f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-draw-buffers-max-draw-buffers.html @@ -0,0 +1,141 @@ + + + + + + +WebGL WEBGL_draw_buffers gl_FragData[gl_MaxDrawBuffers] Conformance Test + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-draw-buffers.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-draw-buffers.html new file mode 100644 index 00000000000..925b08c90e5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-draw-buffers.html @@ -0,0 +1,846 @@ + + + + + + +WebGL WEBGL_draw_buffers Conformance Tests + + + + + + + +
+ +
+ + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-shared-resources.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-shared-resources.html new file mode 100644 index 00000000000..2dffe001e63 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/extensions/webgl-shared-resources.html @@ -0,0 +1,863 @@ + + + + + + +WebGL WEBGL_Shared_Resources Conformance Test + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/00_test_list.txt new file mode 100644 index 00000000000..a2ee6edb1f6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/00_test_list.txt @@ -0,0 +1,11 @@ +bugs/00_test_list.txt +--min-version 1.0.3 constructors/00_test_list.txt +functions/00_test_list.txt +implicit/00_test_list.txt +--min-version 1.0.2 literals/00_test_list.txt +--min-version 1.0.2 matrices/00_test_list.txt +misc/00_test_list.txt +reserved/00_test_list.txt +--min-version 1.0.2 samplers/00_test_list.txt +variables/00_test_list.txt + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/00_test_list.txt new file mode 100644 index 00000000000..26f268448bc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/00_test_list.txt @@ -0,0 +1,39 @@ +--min-version 1.0.4 angle-ambiguous-function-call.html +--min-version 1.0.4 angle-constructor-invalid-parameters.html +--min-version 1.0.3 angle-d3d11-compiler-error.html +--min-version 1.0.3 angle-dx-variable-bug.html +--min-version 1.0.3 array-of-struct-with-int-first-position.html +--min-version 1.0.4 bool-type-cast-bug-int-float.html +--min-version 1.0.3 compare-loop-index-to-uniform.html +--min-version 1.0.3 complex-glsl-does-not-crash.html +--min-version 1.0.4 compound-assignment-type-combination.html +--min-version 1.0.3 conditional-discard-in-loop.html +--min-version 1.0.3 conditional-discard-optimization.html +--min-version 1.0.3 constant-precision-qualifier.html +--min-version 1.0.3 --max-version 1.99 essl3-shaders-with-webgl1.html +--min-version 1.0.4 floor-div-cos-should-not-truncate.html +--min-version 1.0.3 floored-division-accuracy.html +--min-version 1.0.3 fragcoord-linking-bug.html +--min-version 1.0.4 gl-fragcoord-multisampling-bug.html +--min-version 1.0.4 global-invariant-does-not-leak-across-shaders.html +--min-version 1.0.4 invariant-does-not-leak-across-shaders.html +--min-version 1.0.4 logic-inside-block-without-braces.html +--min-version 1.0.3 long-expressions-should-not-crash.html +--min-version 1.0.4 loop-if-loop-gradient.html +--min-version 1.0.3 modulo-arithmetic-accuracy.html +--min-version 1.0.3 multiplication-assignment.html +--min-version 1.0.3 nested-functions-should-not-crash.html +--min-version 1.0.4 nested-loops-with-break-and-continue.html +--min-version 1.0.4 nested-sequence-operator.html +--min-version 1.0.4 pow-of-small-constant-in-user-defined-function.html +--min-version 1.0.4 pow-with-constant-exponent-should-not-crash.html +--min-version 1.0.4 qualcomm-crash.html +--min-version 1.0.4 qualcomm-loop-with-continue-crash.html +--min-version 1.0.3 sampler-array-using-loop-index.html +--min-version 1.0.4 sampler-struct-function-arg.html +--min-version 1.0.4 sequence-operator-evaluation-order.html +--min-version 1.0.4 sketchfab-lighting-shader-crash.html +--min-version 1.0.4 struct-constructor-highp-bug.html +--min-version 1.0.3 temp-expressions-should-not-crash.html +--min-version 1.0.4 undefined-index-should-not-crash.html +--min-version 1.0.3 uniforms-should-not-lose-values.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/README.md b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/README.md new file mode 100644 index 00000000000..d917f6d7410 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/README.md @@ -0,0 +1,18 @@ +BUGS +==== + +This folder is for GLSL tests that test driver specific bugs. + +Most tests in other folders are fairly generic. While they might +only fail on specific drivers the tests themselves are designed +to test something in a generic way. + +Tests in this folder on the otherhand are very targeted. They may +have very specific shaders that only fail under specific circumstances +on specific drivers. + +An example might be if there was a driver that failed only when +and identifier was named "ABC". It makes no sense to have a generic +test that says "must allow ABC". A generic test would test some +subset of all possible identifiers not just one. + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-ambiguous-function-call.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-ambiguous-function-call.html new file mode 100644 index 00000000000..5edbc4cb8b7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-ambiguous-function-call.html @@ -0,0 +1,72 @@ + + + + + + +ANGLE ambiguous function call test + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-constructor-invalid-parameters.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-constructor-invalid-parameters.html new file mode 100644 index 00000000000..87f5781ca72 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-constructor-invalid-parameters.html @@ -0,0 +1,79 @@ + + + + + + +ANGLE constructor bugs test + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-d3d11-compiler-error.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-d3d11-compiler-error.html new file mode 100644 index 00000000000..193e8595bc8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-d3d11-compiler-error.html @@ -0,0 +1,119 @@ + + + + + + +ANGLE D3D11 Bug - Shader compilation error + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-dx-variable-bug.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-dx-variable-bug.html new file mode 100644 index 00000000000..555d6c21d82 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/angle-dx-variable-bug.html @@ -0,0 +1,119 @@ + + + + + + +ANGLE D3D11 Bug - Variables beginning with "dx_" + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/array-of-struct-with-int-first-position.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/array-of-struct-with-int-first-position.html new file mode 100644 index 00000000000..7674153a753 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/array-of-struct-with-int-first-position.html @@ -0,0 +1,164 @@ + + + + + + +Driver Bug - Array of structs with int or bool in first position + + + + + + + + + +
+
+ + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/bool-type-cast-bug-int-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/bool-type-cast-bug-int-float.html new file mode 100644 index 00000000000..6c29934c545 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/bool-type-cast-bug-int-float.html @@ -0,0 +1,335 @@ + + + + + + +Verify int(bool) and float(bool) work correctly (Mac AMD driver bug) + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/compare-loop-index-to-uniform.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/compare-loop-index-to-uniform.html new file mode 100644 index 00000000000..0e8e0decea5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/compare-loop-index-to-uniform.html @@ -0,0 +1,89 @@ + + + + + + +Driver bug - Comparing loop index against uniform in a fragment shader should work + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/complex-glsl-does-not-crash.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/complex-glsl-does-not-crash.html new file mode 100644 index 00000000000..8d65482d46c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/complex-glsl-does-not-crash.html @@ -0,0 +1,214 @@ + + + + + + +Driver Bug - complex glsl should not crash + + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/compound-assignment-type-combination.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/compound-assignment-type-combination.html new file mode 100644 index 00000000000..1a88ad6b1ec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/compound-assignment-type-combination.html @@ -0,0 +1,49 @@ + + + + + + +Result type should match the l-value type in compound assignment + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/conditional-discard-in-loop.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/conditional-discard-in-loop.html new file mode 100644 index 00000000000..deb2052e46d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/conditional-discard-in-loop.html @@ -0,0 +1,163 @@ + + + + + + + +Conditional discard in loop issue + + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/conditional-discard-optimization.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/conditional-discard-optimization.html new file mode 100644 index 00000000000..4a1e9627826 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/conditional-discard-optimization.html @@ -0,0 +1,140 @@ + + + + + + + + +ANGLE WebGL Shader Conditionals Repro + + + + + + + + + +
+
+ + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/constant-precision-qualifier.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/constant-precision-qualifier.html new file mode 100644 index 00000000000..e8ceac7e509 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/constant-precision-qualifier.html @@ -0,0 +1,146 @@ + + + + + + +Bug - the precision qualifier of a constant variable should affect the precision of a consuming operation + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/essl3-shaders-with-webgl1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/essl3-shaders-with-webgl1.html new file mode 100644 index 00000000000..85560d1c790 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/essl3-shaders-with-webgl1.html @@ -0,0 +1,161 @@ + + + + + + +Browser bug - WebGL 1 context should not accept OpenGL ES 3 shading language shaders + + + + + + + + + +
+
+ + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/floor-div-cos-should-not-truncate.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/floor-div-cos-should-not-truncate.html new file mode 100644 index 00000000000..1cacbf33fe9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/floor-div-cos-should-not-truncate.html @@ -0,0 +1,82 @@ + + + + +Floor + divide + cosine should not truncate intermediate results. + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/floored-division-accuracy.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/floored-division-accuracy.html new file mode 100644 index 00000000000..20affafd19e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/floored-division-accuracy.html @@ -0,0 +1,97 @@ + + + + + + + + +Floored Division Accuracy Bug + + + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/fragcoord-linking-bug.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/fragcoord-linking-bug.html new file mode 100644 index 00000000000..ba354b36c15 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/fragcoord-linking-bug.html @@ -0,0 +1,116 @@ + + + + + + +GLSL compiler bug referencing gl_FragCoord + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/gl-fragcoord-multisampling-bug.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/gl-fragcoord-multisampling-bug.html new file mode 100644 index 00000000000..754d7b78cd8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/gl-fragcoord-multisampling-bug.html @@ -0,0 +1,68 @@ + + + + +gl_FragCoord multisampling bug + + + + + + + +
+
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/global-invariant-does-not-leak-across-shaders.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/global-invariant-does-not-leak-across-shaders.html new file mode 100644 index 00000000000..05eed8bebbd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/global-invariant-does-not-leak-across-shaders.html @@ -0,0 +1,100 @@ + + + + + + +Global invariant does not leak across shaders + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/invariant-does-not-leak-across-shaders.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/invariant-does-not-leak-across-shaders.html new file mode 100644 index 00000000000..9a27637f32a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/invariant-does-not-leak-across-shaders.html @@ -0,0 +1,97 @@ + + + + + + +Invariant does not leak across shaders + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/logic-inside-block-without-braces.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/logic-inside-block-without-braces.html new file mode 100644 index 00000000000..a7ea95a5b12 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/logic-inside-block-without-braces.html @@ -0,0 +1,127 @@ + + + + + + +Short-circuiting logic operator with side effects inside if statement without braces should work + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/long-expressions-should-not-crash.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/long-expressions-should-not-crash.html new file mode 100644 index 00000000000..229f0486e99 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/long-expressions-should-not-crash.html @@ -0,0 +1,159 @@ + + + + + + +Driver Bug - long experssions should not crash + + + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/loop-if-loop-gradient.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/loop-if-loop-gradient.html new file mode 100644 index 00000000000..5e8cd41d8f6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/loop-if-loop-gradient.html @@ -0,0 +1,98 @@ + + + + + + +Gradient loop in if in loop crash + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/modulo-arithmetic-accuracy.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/modulo-arithmetic-accuracy.html new file mode 100644 index 00000000000..a2d4d81b5db --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/modulo-arithmetic-accuracy.html @@ -0,0 +1,97 @@ + + + + + + + + +Modulo Arithmetic Accuracy Bug + + + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/multiplication-assignment.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/multiplication-assignment.html new file mode 100644 index 00000000000..b2be4abc0c8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/multiplication-assignment.html @@ -0,0 +1,82 @@ + + + + + + +Multiplication assignment operator compilation bug + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/nested-functions-should-not-crash.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/nested-functions-should-not-crash.html new file mode 100644 index 00000000000..6232560db47 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/nested-functions-should-not-crash.html @@ -0,0 +1,112 @@ + + + + + + +Driver Bug - nested functions should not crash + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/nested-loops-with-break-and-continue.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/nested-loops-with-break-and-continue.html new file mode 100644 index 00000000000..cc3506ac8bb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/nested-loops-with-break-and-continue.html @@ -0,0 +1,106 @@ + + + + + + +Using nested loops with break and/or continue statements in a fragment shader should work + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/nested-sequence-operator.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/nested-sequence-operator.html new file mode 100644 index 00000000000..e92a53b93dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/nested-sequence-operator.html @@ -0,0 +1,70 @@ + + + + + + +Nested sequence operator + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/pow-of-small-constant-in-user-defined-function.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/pow-of-small-constant-in-user-defined-function.html new file mode 100644 index 00000000000..2affa88c110 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/pow-of-small-constant-in-user-defined-function.html @@ -0,0 +1,97 @@ + + + + + + +Bug - calculating powers of constants smaller than 1.0e-5 in user-defined functions should work + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/pow-with-constant-exponent-should-not-crash.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/pow-with-constant-exponent-should-not-crash.html new file mode 100644 index 00000000000..15fdadaffc7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/pow-with-constant-exponent-should-not-crash.html @@ -0,0 +1,88 @@ + + + + + + +Bug - pow() with constant vector exponent should not crash + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/qualcomm-crash.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/qualcomm-crash.html new file mode 100644 index 00000000000..ad984b77f8a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/qualcomm-crash.html @@ -0,0 +1,159 @@ + + + + + + +Qualcomm program link crash Tests + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/qualcomm-loop-with-continue-crash.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/qualcomm-loop-with-continue-crash.html new file mode 100644 index 00000000000..2480246fa01 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/qualcomm-loop-with-continue-crash.html @@ -0,0 +1,94 @@ + + + + + + +Qualcomm loop with continue crash test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sampler-array-using-loop-index.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sampler-array-using-loop-index.html new file mode 100644 index 00000000000..4ea81d71d33 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sampler-array-using-loop-index.html @@ -0,0 +1,104 @@ + + + + + + +Sampler arrays using loop index should compile fine. + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sampler-struct-function-arg.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sampler-struct-function-arg.html new file mode 100644 index 00000000000..be4ea0328cc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sampler-struct-function-arg.html @@ -0,0 +1,124 @@ + + + + + + + +Passing a struct containing a sampler to a function. + + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sequence-operator-evaluation-order.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sequence-operator-evaluation-order.html new file mode 100644 index 00000000000..57d213315dd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sequence-operator-evaluation-order.html @@ -0,0 +1,144 @@ + + + + + + +GLSL short-circuiting operators should be evaluated after previous operands in a sequence + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sketchfab-lighting-shader-crash.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sketchfab-lighting-shader-crash.html new file mode 100644 index 00000000000..d9b3cbee09e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/sketchfab-lighting-shader-crash.html @@ -0,0 +1,107 @@ + + + + + + +Sketchfab Lighting Shader Crash + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/struct-constructor-highp-bug.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/struct-constructor-highp-bug.html new file mode 100644 index 00000000000..7cf7bee2a03 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/struct-constructor-highp-bug.html @@ -0,0 +1,65 @@ + + + + +Struct constructor highp bug. + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/temp-expressions-should-not-crash.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/temp-expressions-should-not-crash.html new file mode 100644 index 00000000000..535739ff7b1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/temp-expressions-should-not-crash.html @@ -0,0 +1,123 @@ + + + + + + +Driver Bug - temp experssions should not crash + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/undefined-index-should-not-crash.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/undefined-index-should-not-crash.html new file mode 100644 index 00000000000..61975e2bd95 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/undefined-index-should-not-crash.html @@ -0,0 +1,87 @@ + + + + + + +Bug - indexing with 'int()' should not crash + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/uniforms-should-not-lose-values.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/uniforms-should-not-lose-values.html new file mode 100644 index 00000000000..d7dadb5d6cc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/bugs/uniforms-should-not-lose-values.html @@ -0,0 +1,104 @@ + + + + + + +Driver Bug - Uniforms should no lose values + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/00_test_list.txt new file mode 100644 index 00000000000..6758bea8e8d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/00_test_list.txt @@ -0,0 +1,14 @@ +glsl-construct-vec2.html +glsl-construct-vec3.html +glsl-construct-vec4.html +glsl-construct-ivec2.html +glsl-construct-ivec3.html +glsl-construct-ivec4.html +glsl-construct-bvec2.html +glsl-construct-bvec3.html +glsl-construct-bvec4.html +glsl-construct-mat2.html +glsl-construct-mat3.html +glsl-construct-mat4.html +--min-version 1.0.3 glsl-construct-vec-mat-corner-cases.html +--min-version 1.0.3 glsl-construct-vec-mat-index.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-bvec2.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-bvec2.html new file mode 100644 index 00000000000..9e1c7cb25e9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-bvec2.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-bvec3.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-bvec3.html new file mode 100644 index 00000000000..f420da22760 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-bvec3.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-bvec4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-bvec4.html new file mode 100644 index 00000000000..5614fbc3b9d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-bvec4.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-ivec2.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-ivec2.html new file mode 100644 index 00000000000..14dab516c81 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-ivec2.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-ivec3.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-ivec3.html new file mode 100644 index 00000000000..7330e6dd1a0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-ivec3.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-ivec4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-ivec4.html new file mode 100644 index 00000000000..6314c5dd6d0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-ivec4.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-mat2.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-mat2.html new file mode 100644 index 00000000000..8e1318bc320 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-mat2.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-mat3.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-mat3.html new file mode 100644 index 00000000000..d613a092c1b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-mat3.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-mat4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-mat4.html new file mode 100644 index 00000000000..04823dcfe1c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-mat4.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec-mat-corner-cases.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec-mat-corner-cases.html new file mode 100644 index 00000000000..39b88aefadb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec-mat-corner-cases.html @@ -0,0 +1,218 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec-mat-index.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec-mat-index.html new file mode 100644 index 00000000000..6d3f0615995 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec-mat-index.html @@ -0,0 +1,77 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec2.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec2.html new file mode 100644 index 00000000000..6148a270af0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec2.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec3.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec3.html new file mode 100644 index 00000000000..f9ee2d94f20 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec3.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec4.html new file mode 100644 index 00000000000..6ee0fbdf89a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/constructors/glsl-construct-vec4.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/00_test_list.txt new file mode 100644 index 00000000000..dd06ea05206 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/00_test_list.txt @@ -0,0 +1,36 @@ +glsl-function.html +glsl-function-abs.html +glsl-function-acos.html +glsl-function-asin.html +glsl-function-atan.html +glsl-function-atan-xy.html +glsl-function-ceil.html +glsl-function-clamp-float.html +glsl-function-clamp-gentype.html +glsl-function-cos.html +glsl-function-cross.html +glsl-function-distance.html +glsl-function-dot.html +glsl-function-faceforward.html +glsl-function-floor.html +glsl-function-fract.html +glsl-function-length.html +#glsl-function-lessThan.html +glsl-function-max-float.html +glsl-function-max-gentype.html +glsl-function-min-float.html +glsl-function-min-gentype.html +glsl-function-mix-float.html +glsl-function-mix-gentype.html +glsl-function-mod-float.html +glsl-function-mod-gentype.html +glsl-function-normalize.html +glsl-function-reflect.html +#glsl-function-refract.html +glsl-function-sign.html +glsl-function-sin.html +glsl-function-step-float.html +glsl-function-step-gentype.html +glsl-function-smoothstep-float.html +glsl-function-smoothstep-gentype.html + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-abs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-abs.html new file mode 100644 index 00000000000..177162e9022 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-abs.html @@ -0,0 +1,68 @@ + + + + + + +GLSL abs function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-acos.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-acos.html new file mode 100644 index 00000000000..28534ef0212 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-acos.html @@ -0,0 +1,118 @@ + + + + + + +GLSL acos function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-asin.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-asin.html new file mode 100644 index 00000000000..46e959ceb3b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-asin.html @@ -0,0 +1,118 @@ + + + + + + +GLSL asin function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-atan-xy.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-atan-xy.html new file mode 100644 index 00000000000..abb7a8299e1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-atan-xy.html @@ -0,0 +1,121 @@ + + + + + + +GLSL atan-xy function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-atan.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-atan.html new file mode 100644 index 00000000000..7b6a4103f66 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-atan.html @@ -0,0 +1,118 @@ + + + + + + +GLSL atan function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-ceil.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-ceil.html new file mode 100644 index 00000000000..65990488400 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-ceil.html @@ -0,0 +1,76 @@ + + + + + + +GLSL ceil function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-clamp-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-clamp-float.html new file mode 100644 index 00000000000..57ed8b9fcde --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-clamp-float.html @@ -0,0 +1,79 @@ + + + + + + +GLSL clamp-gentype function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-clamp-gentype.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-clamp-gentype.html new file mode 100644 index 00000000000..75588f7bacc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-clamp-gentype.html @@ -0,0 +1,82 @@ + + + + + + +GLSL clamp-gentype function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-cos.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-cos.html new file mode 100644 index 00000000000..6124010a442 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-cos.html @@ -0,0 +1,122 @@ + + + + + + +GLSL cos function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-cross.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-cross.html new file mode 100644 index 00000000000..fd02cef1cd7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-cross.html @@ -0,0 +1,76 @@ + + + + + + +GLSL cross function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-distance.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-distance.html new file mode 100644 index 00000000000..d24d6a4a055 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-distance.html @@ -0,0 +1,111 @@ + + + + + + +GLSL distance function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-dot.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-dot.html new file mode 100644 index 00000000000..823d8c6aa79 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-dot.html @@ -0,0 +1,113 @@ + + + + + + +GLSL dot function test + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-faceforward.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-faceforward.html new file mode 100644 index 00000000000..4f05e6eac5f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-faceforward.html @@ -0,0 +1,89 @@ + + + + + + +GLSL faceforward function test + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-floor.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-floor.html new file mode 100644 index 00000000000..3f8a58ee36f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-floor.html @@ -0,0 +1,75 @@ + + + + + + +GLSL floor function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-fract.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-fract.html new file mode 100644 index 00000000000..be0f0995b64 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-fract.html @@ -0,0 +1,73 @@ + + + + + + +GLSL fract function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-length.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-length.html new file mode 100644 index 00000000000..e6ab3a9153f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-length.html @@ -0,0 +1,110 @@ + + + + + + +GLSL length function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-max-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-max-float.html new file mode 100644 index 00000000000..99764ce695f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-max-float.html @@ -0,0 +1,75 @@ + + + + + + +GLSL max-float function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-max-gentype.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-max-gentype.html new file mode 100644 index 00000000000..07eb78cd5e7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-max-gentype.html @@ -0,0 +1,75 @@ + + + + + + +GLSL max-gentype function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-min-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-min-float.html new file mode 100644 index 00000000000..5ac49b9a403 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-min-float.html @@ -0,0 +1,75 @@ + + + + + + +GLSL min-float function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-min-gentype.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-min-gentype.html new file mode 100644 index 00000000000..b2cf136808e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-min-gentype.html @@ -0,0 +1,75 @@ + + + + + + +GLSL min-gentype function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mix-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mix-float.html new file mode 100644 index 00000000000..7b8990aa491 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mix-float.html @@ -0,0 +1,77 @@ + + + + + + +GLSL mix-float function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mix-gentype.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mix-gentype.html new file mode 100644 index 00000000000..41eadb628fb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mix-gentype.html @@ -0,0 +1,77 @@ + + + + + + +GLSL mix-gentype function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mod-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mod-float.html new file mode 100644 index 00000000000..718cccbed7c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mod-float.html @@ -0,0 +1,76 @@ + + + + + + +GLSL mod-float function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mod-gentype.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mod-gentype.html new file mode 100644 index 00000000000..1d4f89eae8b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-mod-gentype.html @@ -0,0 +1,79 @@ + + + + + + +GLSL mod-gentype function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-normalize.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-normalize.html new file mode 100644 index 00000000000..32b7443c9ff --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-normalize.html @@ -0,0 +1,82 @@ + + + + + + +GLSL normalize function test + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-reflect.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-reflect.html new file mode 100644 index 00000000000..beed9433429 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-reflect.html @@ -0,0 +1,84 @@ + + + + + + +GLSL reflect function test + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-sign.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-sign.html new file mode 100644 index 00000000000..d46d229e5dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-sign.html @@ -0,0 +1,75 @@ + + + + + + +GLSL sign function test + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-sin.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-sin.html new file mode 100644 index 00000000000..5a64d6f1a1b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-sin.html @@ -0,0 +1,119 @@ + + + + + + +GLSL sin function test + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-smoothstep-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-smoothstep-float.html new file mode 100644 index 00000000000..b49028913e5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-smoothstep-float.html @@ -0,0 +1,120 @@ + + + + + + +GLSL smoothstep-float function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-smoothstep-gentype.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-smoothstep-gentype.html new file mode 100644 index 00000000000..fa9c37dc734 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-smoothstep-gentype.html @@ -0,0 +1,79 @@ + + + + + + +GLSL smoothstep-gentype function test + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-step-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-step-float.html new file mode 100644 index 00000000000..8bbf4069250 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-step-float.html @@ -0,0 +1,75 @@ + + + + + + +GLSL step-float function test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-step-gentype.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-step-gentype.html new file mode 100644 index 00000000000..ed31d3d3f83 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function-step-gentype.html @@ -0,0 +1,74 @@ + + + + + + +GLSL step-gentype function test + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function.html new file mode 100644 index 00000000000..7b09cdff611 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/functions/glsl-function.html @@ -0,0 +1,62 @@ + + + + + + +GLSL function test test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/00_test_list.txt new file mode 100644 index 00000000000..d700b29a563 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/00_test_list.txt @@ -0,0 +1,65 @@ +add_int_float.vert.html +add_int_mat2.vert.html +add_int_mat3.vert.html +add_int_mat4.vert.html +add_int_vec2.vert.html +add_int_vec3.vert.html +add_int_vec4.vert.html +add_ivec2_vec2.vert.html +add_ivec3_vec3.vert.html +add_ivec4_vec4.vert.html +assign_int_to_float.vert.html +assign_ivec2_to_vec2.vert.html +assign_ivec3_to_vec3.vert.html +assign_ivec4_to_vec4.vert.html +construct_struct.vert.html +divide_int_float.vert.html +divide_int_mat2.vert.html +divide_int_mat3.vert.html +divide_int_mat4.vert.html +divide_int_vec2.vert.html +divide_int_vec3.vert.html +divide_int_vec4.vert.html +divide_ivec2_vec2.vert.html +divide_ivec3_vec3.vert.html +divide_ivec4_vec4.vert.html +equal_int_float.vert.html +equal_ivec2_vec2.vert.html +equal_ivec3_vec3.vert.html +equal_ivec4_vec4.vert.html +function_int_float.vert.html +function_ivec2_vec2.vert.html +function_ivec3_vec3.vert.html +function_ivec4_vec4.vert.html +greater_than.vert.html +greater_than_equal.vert.html +less_than.vert.html +less_than_equal.vert.html +multiply_int_float.vert.html +multiply_int_mat2.vert.html +multiply_int_mat3.vert.html +multiply_int_mat4.vert.html +multiply_int_vec2.vert.html +multiply_int_vec3.vert.html +multiply_int_vec4.vert.html +multiply_ivec2_vec2.vert.html +multiply_ivec3_vec3.vert.html +multiply_ivec4_vec4.vert.html +not_equal_int_float.vert.html +not_equal_ivec2_vec2.vert.html +not_equal_ivec3_vec3.vert.html +not_equal_ivec4_vec4.vert.html +subtract_int_float.vert.html +subtract_int_mat2.vert.html +subtract_int_mat3.vert.html +subtract_int_mat4.vert.html +subtract_int_vec2.vert.html +subtract_int_vec3.vert.html +subtract_int_vec4.vert.html +subtract_ivec2_vec2.vert.html +subtract_ivec3_vec3.vert.html +subtract_ivec4_vec4.vert.html +ternary_int_float.vert.html +ternary_ivec2_vec2.vert.html +ternary_ivec3_vec3.vert.html +ternary_ivec4_vec4.vert.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_float.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_float.vert.html new file mode 100644 index 00000000000..f0af8512298 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_float.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_mat2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_mat2.vert.html new file mode 100644 index 00000000000..1790fbf6a9a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_mat2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_mat3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_mat3.vert.html new file mode 100644 index 00000000000..28c74538515 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_mat3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_mat4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_mat4.vert.html new file mode 100644 index 00000000000..cff3d33353c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_mat4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_vec2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_vec2.vert.html new file mode 100644 index 00000000000..068b2ac5954 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_vec2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_vec3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_vec3.vert.html new file mode 100644 index 00000000000..77ff19daafb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_vec3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_vec4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_vec4.vert.html new file mode 100644 index 00000000000..84793a0be12 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_int_vec4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_ivec2_vec2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_ivec2_vec2.vert.html new file mode 100644 index 00000000000..3eebaf46bb7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_ivec2_vec2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_ivec3_vec3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_ivec3_vec3.vert.html new file mode 100644 index 00000000000..1c4056d7980 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_ivec3_vec3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_ivec4_vec4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_ivec4_vec4.vert.html new file mode 100644 index 00000000000..fce94c5e069 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/add_ivec4_vec4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_int_to_float.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_int_to_float.vert.html new file mode 100644 index 00000000000..fab68cf0a85 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_int_to_float.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_ivec2_to_vec2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_ivec2_to_vec2.vert.html new file mode 100644 index 00000000000..880e12895ec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_ivec2_to_vec2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_ivec3_to_vec3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_ivec3_to_vec3.vert.html new file mode 100644 index 00000000000..84a9c8eab90 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_ivec3_to_vec3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_ivec4_to_vec4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_ivec4_to_vec4.vert.html new file mode 100644 index 00000000000..d6e952fb101 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/assign_ivec4_to_vec4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/construct_struct.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/construct_struct.vert.html new file mode 100644 index 00000000000..7ed9e6f839d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/construct_struct.vert.html @@ -0,0 +1,63 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_float.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_float.vert.html new file mode 100644 index 00000000000..95e8044d7be --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_float.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_mat2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_mat2.vert.html new file mode 100644 index 00000000000..6b0a1a8e9a3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_mat2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_mat3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_mat3.vert.html new file mode 100644 index 00000000000..dbcd8a53a39 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_mat3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_mat4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_mat4.vert.html new file mode 100644 index 00000000000..24a53629919 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_mat4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_vec2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_vec2.vert.html new file mode 100644 index 00000000000..636a1128056 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_vec2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_vec3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_vec3.vert.html new file mode 100644 index 00000000000..e7e536454ff --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_vec3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_vec4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_vec4.vert.html new file mode 100644 index 00000000000..99916ecafbb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_int_vec4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_ivec2_vec2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_ivec2_vec2.vert.html new file mode 100644 index 00000000000..4feec0c7017 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_ivec2_vec2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_ivec3_vec3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_ivec3_vec3.vert.html new file mode 100644 index 00000000000..ced62add91e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_ivec3_vec3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_ivec4_vec4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_ivec4_vec4.vert.html new file mode 100644 index 00000000000..49c406703b4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/divide_ivec4_vec4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_int_float.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_int_float.vert.html new file mode 100644 index 00000000000..e4146b98655 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_int_float.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_ivec2_vec2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_ivec2_vec2.vert.html new file mode 100644 index 00000000000..ae0d7206c06 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_ivec2_vec2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_ivec3_vec3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_ivec3_vec3.vert.html new file mode 100644 index 00000000000..52edff051e1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_ivec3_vec3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_ivec4_vec4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_ivec4_vec4.vert.html new file mode 100644 index 00000000000..e6eb4eed357 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/equal_ivec4_vec4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_int_float.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_int_float.vert.html new file mode 100644 index 00000000000..52f368b0d9a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_int_float.vert.html @@ -0,0 +1,63 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_ivec2_vec2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_ivec2_vec2.vert.html new file mode 100644 index 00000000000..838e09bc5a6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_ivec2_vec2.vert.html @@ -0,0 +1,63 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_ivec3_vec3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_ivec3_vec3.vert.html new file mode 100644 index 00000000000..8477e61640e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_ivec3_vec3.vert.html @@ -0,0 +1,63 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_ivec4_vec4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_ivec4_vec4.vert.html new file mode 100644 index 00000000000..57408c56f01 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/function_ivec4_vec4.vert.html @@ -0,0 +1,63 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/greater_than.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/greater_than.vert.html new file mode 100644 index 00000000000..595a59efa26 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/greater_than.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/greater_than_equal.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/greater_than_equal.vert.html new file mode 100644 index 00000000000..e6e6c9c659e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/greater_than_equal.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/less_than.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/less_than.vert.html new file mode 100644 index 00000000000..d7e786185c2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/less_than.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/less_than_equal.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/less_than_equal.vert.html new file mode 100644 index 00000000000..981a7c27da3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/less_than_equal.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_float.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_float.vert.html new file mode 100644 index 00000000000..1db98dc0fad --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_float.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_mat2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_mat2.vert.html new file mode 100644 index 00000000000..40dbd4df318 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_mat2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_mat3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_mat3.vert.html new file mode 100644 index 00000000000..4bb178c5542 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_mat3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_mat4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_mat4.vert.html new file mode 100644 index 00000000000..0afd03d879b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_mat4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_vec2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_vec2.vert.html new file mode 100644 index 00000000000..16cf52c6a11 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_vec2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_vec3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_vec3.vert.html new file mode 100644 index 00000000000..bf938a2f9df --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_vec3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_vec4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_vec4.vert.html new file mode 100644 index 00000000000..98bf20d0fa9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_int_vec4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_ivec2_vec2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_ivec2_vec2.vert.html new file mode 100644 index 00000000000..047374c4304 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_ivec2_vec2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_ivec3_vec3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_ivec3_vec3.vert.html new file mode 100644 index 00000000000..3729397a18a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_ivec3_vec3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_ivec4_vec4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_ivec4_vec4.vert.html new file mode 100644 index 00000000000..71a84e7f774 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/multiply_ivec4_vec4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_int_float.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_int_float.vert.html new file mode 100644 index 00000000000..d5901afceef --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_int_float.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_ivec2_vec2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_ivec2_vec2.vert.html new file mode 100644 index 00000000000..06a5b7c35f9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_ivec2_vec2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_ivec3_vec3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_ivec3_vec3.vert.html new file mode 100644 index 00000000000..868a20a79ec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_ivec3_vec3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_ivec4_vec4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_ivec4_vec4.vert.html new file mode 100644 index 00000000000..e4b96a59b63 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/not_equal_ivec4_vec4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_float.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_float.vert.html new file mode 100644 index 00000000000..95796eb93b9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_float.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_mat2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_mat2.vert.html new file mode 100644 index 00000000000..6a6c080a23f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_mat2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_mat3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_mat3.vert.html new file mode 100644 index 00000000000..8b030ec8e45 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_mat3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_mat4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_mat4.vert.html new file mode 100644 index 00000000000..e6d9b6078c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_mat4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_vec2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_vec2.vert.html new file mode 100644 index 00000000000..6eed413a84e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_vec2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_vec3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_vec3.vert.html new file mode 100644 index 00000000000..c7ab5908031 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_vec3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_vec4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_vec4.vert.html new file mode 100644 index 00000000000..f87ffa0a967 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_int_vec4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_ivec2_vec2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_ivec2_vec2.vert.html new file mode 100644 index 00000000000..03becaa86bb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_ivec2_vec2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_ivec3_vec3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_ivec3_vec3.vert.html new file mode 100644 index 00000000000..323e054fb94 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_ivec3_vec3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_ivec4_vec4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_ivec4_vec4.vert.html new file mode 100644 index 00000000000..2f98e0517c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/subtract_ivec4_vec4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_int_float.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_int_float.vert.html new file mode 100644 index 00000000000..4027e7cd5fa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_int_float.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_ivec2_vec2.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_ivec2_vec2.vert.html new file mode 100644 index 00000000000..83db281b89a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_ivec2_vec2.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_ivec3_vec3.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_ivec3_vec3.vert.html new file mode 100644 index 00000000000..1256bc35284 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_ivec3_vec3.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_ivec4_vec4.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_ivec4_vec4.vert.html new file mode 100644 index 00000000000..8e9a1e54297 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/implicit/ternary_ivec4_vec4.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/00_test_list.txt new file mode 100644 index 00000000000..50802bf3464 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/00_test_list.txt @@ -0,0 +1,3 @@ +float_literal.vert.html +--min-version 1.0.3 literal_precision.html +overflow_leak.vert.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/float_literal.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/float_literal.vert.html new file mode 100644 index 00000000000..948e8426ae2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/float_literal.vert.html @@ -0,0 +1,74 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/literal_precision.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/literal_precision.html new file mode 100644 index 00000000000..7a211bdfe89 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/literal_precision.html @@ -0,0 +1,58 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/overflow_leak.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/overflow_leak.vert.html new file mode 100644 index 00000000000..97ff7535725 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/literals/overflow_leak.vert.html @@ -0,0 +1,84 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/00_test_list.txt new file mode 100644 index 00000000000..74693de0eae --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/00_test_list.txt @@ -0,0 +1,3 @@ +glsl-mat4-to-mat3.html +--min-version 1.0.3 glsl-mat3-construction.html +--min-version 1.0.4 matrix-compound-multiply.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/glsl-mat3-construction.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/glsl-mat3-construction.html new file mode 100644 index 00000000000..d22042210b7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/glsl-mat3-construction.html @@ -0,0 +1,95 @@ + + + + + + +GLSL mat3 construction test + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/glsl-mat4-to-mat3.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/glsl-mat4-to-mat3.html new file mode 100644 index 00000000000..5a0c1d14d52 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/glsl-mat4-to-mat3.html @@ -0,0 +1,93 @@ + + + + + + +GLSL mat4 to mat3 test + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/matrix-compound-multiply.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/matrix-compound-multiply.html new file mode 100644 index 00000000000..81c79c35a29 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/matrices/matrix-compound-multiply.html @@ -0,0 +1,94 @@ + + + + + + +Matrix compound multiplication test + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/00_test_list.txt new file mode 100644 index 00000000000..672b3d54deb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/00_test_list.txt @@ -0,0 +1,114 @@ +--max-version 1.9.9 attrib-location-length-limits.html +--min-version 1.0.3 boolean_precision.html +--min-version 1.0.4 const-variable-initialization.html +embedded-struct-definitions-forbidden.html +--min-version 1.0.4 empty-declaration.html +empty_main.vert.html +--min-version 1.0.3 expression-list-in-declarator-initializer.html +gl_position_unset.vert.html +--min-version 1.0.4 global-variable-init.html +# this test is intentionally disabled as it is too strict and to hard to simulate +# glsl-2types-of-textures-on-same-unit.html +glsl-function-nodes.html +--min-version 1.0.2 glsl-vertex-branch.html +glsl-long-variable-names.html +non-ascii-comments.vert.html +non-ascii.vert.html +--min-version 1.0.2 re-compile-re-link.html +--min-version 1.0.4 sequence-operator-returns-constant.html +--min-version 1.0.3 shader-precision-format-obeyed.html +--min-version 1.0.3 shader-struct-scope.html +--min-version 1.0.2 shader-uniform-packing-restrictions.html +--min-version 1.0.2 shader-varying-packing-restrictions.html +--min-version 1.0.2 shader-with-256-character-define.html +shader-with-256-character-identifier.frag.html +--min-version 1.0.2 --max-version 1.9.9 shader-with-257-character-define.html +--max-version 1.9.9 shader-with-257-character-identifier.frag.html +shader-with-_webgl-identifier.vert.html +shader-with-arbitrary-indexing.frag.html +shader-with-arbitrary-indexing.vert.html +--min-version 1.0.2 shader-with-array-of-structs-containing-arrays.html +--min-version 1.0.2 shader-with-array-of-structs-uniform.html +shader-with-attrib-array.vert.html +shader-with-attrib-struct.vert.html +shader-with-clipvertex.vert.html +--min-version 1.0.2 shader-with-conditional-scoping.html +--min-version 1.0.2 shader-with-conditional-scoping-negative.html +shader-with-default-precision.frag.html +shader-with-default-precision.vert.html +--max-version 1.9.9 shader-with-define-line-continuation.frag.html +shader-with-dfdx-no-ext.frag.html +shader-with-dfdx.frag.html +--min-version 1.0.2 shader-with-do-loop.html +shader-with-error-directive.html +shader-with-explicit-int-cast.vert.html +shader-with-float-return-value.frag.html +--min-version 1.0.2 shader-with-for-scoping.html +--min-version 1.0.2 shader-with-for-loop.html +shader-with-frag-depth.frag.html +shader-with-function-recursion.frag.html +--min-version 1.0.2 shader-with-function-scoped-struct.html +--min-version 1.0.2 shader-with-functional-scoping.html +--min-version 1.0.2 shader-with-comma-assignment.html +--min-version 1.0.2 shader-with-comma-conditional-assignment.html +--min-version 1.0.4 shader-with-comma-separated-variable-declarations.html +shader-with-glcolor.vert.html +shader-with-gles-1.frag.html +shader-with-gles-symbol.frag.html +shader-with-glprojectionmatrix.vert.html +shader-with-implicit-vec3-to-vec4-cast.vert.html +shader-with-include.vert.html +shader-with-int-return-value.frag.html +shader-with-invalid-identifier.frag.html +shader-with-ivec2-return-value.frag.html +shader-with-ivec3-return-value.frag.html +shader-with-ivec4-return-value.frag.html +shader-with-limited-indexing.frag.html +--min-version 1.0.2 shader-with-hex-int-constant-macro.html +shader-with-long-line.html +shader-with-non-ascii-error.frag.html +--min-version 1.0.2 shader-with-non-reserved-words.html +shader-with-precision.frag.html +--min-version 1.0.3 shader-with-preprocessor-whitespace.html +shader-with-quoted-error.frag.html +--min-version 1.0.2 shader-with-reserved-words.html +--min-version 1.0.2 shader-with-similar-uniform-array-names.html +--min-version 1.0.2 shader-with-too-many-uniforms.html +--min-version 1.0.4 shader-with-two-initializer-types.html +shader-with-undefined-preprocessor-symbol.frag.html +shader-with-uniform-in-loop-condition.vert.html +shader-with-vec2-return-value.frag.html +shader-with-vec3-return-value.frag.html +shader-with-vec4-return-value.frag.html +--min-version 1.0.2 shader-with-vec4-vec3-vec4-conditional.html +shader-with-version-100.frag.html +shader-with-version-100.vert.html +shader-with-version-120.vert.html +shader-with-version-130.vert.html +shader-with-webgl-identifier.vert.html +--min-version 1.0.2 shader-with-while-loop.html +shader-without-precision.frag.html +--min-version 1.0.3 shaders-with-constant-expression-loop-conditions.html +--min-version 1.0.3 shaders-with-invariance.html +--min-version 1.0.3 shaders-with-name-conflicts.html +--min-version 1.0.2 shaders-with-mis-matching-uniforms.html +--min-version 1.0.2 shaders-with-mis-matching-varyings.html +--min-version 1.0.2 shaders-with-missing-varyings.html +--min-version 1.0.3 shaders-with-uniform-structs.html +--min-version 1.0.2 shaders-with-varyings.html +shared.html +struct-nesting-exceeds-maximum.html +struct-nesting-under-maximum.html +--max-version 1.9.9 uniform-location-length-limits.html +--min-version 1.0.2 shader-with-short-circuiting-operators.html +--min-version 1.0.2 shader-with-global-variable-precision-mismatch.html +--min-version 1.0.2 large-loop-compile.html +--min-version 1.0.3 struct-equals.html +--min-version 1.0.4 struct-assign.html +--min-version 1.0.3 struct-mixed-array-declarators.html +--min-version 1.0.3 struct-nesting-of-variable-names.html +--min-version 1.0.3 struct-specifiers-in-uniforms.html +--min-version 1.0.3 struct-unary-operators.html +--min-version 1.0.4 ternary-operator-on-arrays.html +--min-version 1.0.3 ternary-operators-in-global-initializers.html +--min-version 1.0.3 ternary-operators-in-initializers.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/attrib-location-length-limits.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/attrib-location-length-limits.html new file mode 100644 index 00000000000..2f8ce81cfce --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/attrib-location-length-limits.html @@ -0,0 +1,112 @@ + + + + + +WebGL attrib location length tests + + + + + + + + + +There is supposed to be an example drawing here, but it's not important. + +
Verify limits on the lengths of attribute locations per WebGL spec, "Maximum Uniform and Attribute Location Lengths".
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/boolean_precision.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/boolean_precision.html new file mode 100644 index 00000000000..27caaf72581 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/boolean_precision.html @@ -0,0 +1,95 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/const-variable-initialization.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/const-variable-initialization.html new file mode 100644 index 00000000000..21198cd0494 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/const-variable-initialization.html @@ -0,0 +1,267 @@ + + + + + + +All valid constant expressions should be allowed in the initialization of const variables + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/embedded-struct-definitions-forbidden.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/embedded-struct-definitions-forbidden.html new file mode 100644 index 00000000000..2c3f9537701 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/embedded-struct-definitions-forbidden.html @@ -0,0 +1,64 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/empty-declaration.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/empty-declaration.html new file mode 100644 index 00000000000..dc1dac4e178 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/empty-declaration.html @@ -0,0 +1,134 @@ + + + + + + +WebGL GLSL Conformance Tests - empty declarations + + + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/empty_main.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/empty_main.vert.html new file mode 100644 index 00000000000..9aeb1457a12 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/empty_main.vert.html @@ -0,0 +1,56 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/expression-list-in-declarator-initializer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/expression-list-in-declarator-initializer.html new file mode 100644 index 00000000000..49715f55cb0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/expression-list-in-declarator-initializer.html @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/gl_position_unset.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/gl_position_unset.vert.html new file mode 100644 index 00000000000..655c21532ae --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/gl_position_unset.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/global-variable-init.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/global-variable-init.html new file mode 100644 index 00000000000..73088fc5a37 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/global-variable-init.html @@ -0,0 +1,316 @@ + + + + + + +Global variable initializer restrictions + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/glsl-function-nodes.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/glsl-function-nodes.html new file mode 100644 index 00000000000..d16de7b6180 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/glsl-function-nodes.html @@ -0,0 +1,157 @@ + + + + + + +GLSL function nodes Test + + + + + + + + + + + + + + + + +
This tests against a Mac driver bug related to function calls.
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/glsl-long-variable-names.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/glsl-long-variable-names.html new file mode 100644 index 00000000000..b874970a095 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/glsl-long-variable-names.html @@ -0,0 +1,250 @@ + + + + + + +glsl long variable name mapping tests + + + + + + + + +There is supposed to be an example drawing here, but it's not important. + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/glsl-vertex-branch.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/glsl-vertex-branch.html new file mode 100644 index 00000000000..478a94ed31f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/glsl-vertex-branch.html @@ -0,0 +1,151 @@ + + + + + + +GLSL function nodes Test + + + + + + + + + + + + + + + + +
This tests against a Mac driver bug related to branches + inside of Vertex Shaders.
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/include.vs b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/include.vs new file mode 100644 index 00000000000..50970e6ccfe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/include.vs @@ -0,0 +1,4 @@ +// Do not delete! +// Needed to help glsl-conformance tests. + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/large-loop-compile.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/large-loop-compile.html new file mode 100644 index 00000000000..5a9c4dc773c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/large-loop-compile.html @@ -0,0 +1,195 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/non-ascii-comments.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/non-ascii-comments.vert.html new file mode 100644 index 00000000000..eb059d8e0fa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/non-ascii-comments.vert.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/non-ascii.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/non-ascii.vert.html new file mode 100644 index 00000000000..2bba4c2432e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/non-ascii.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/re-compile-re-link.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/re-compile-re-link.html new file mode 100644 index 00000000000..327a1c0df83 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/re-compile-re-link.html @@ -0,0 +1,173 @@ + + + + + + +WebGL Re-Compile and Re-link Shader conformance test. + + + + + + + + +
+
+ + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/sequence-operator-returns-constant.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/sequence-operator-returns-constant.html new file mode 100644 index 00000000000..ecc6aae2ad9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/sequence-operator-returns-constant.html @@ -0,0 +1,83 @@ + + + + + + +Sequence operator returns constant test + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-precision-format-obeyed.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-precision-format-obeyed.html new file mode 100644 index 00000000000..784f324e34b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-precision-format-obeyed.html @@ -0,0 +1,106 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-struct-scope.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-struct-scope.html new file mode 100644 index 00000000000..40493eae88c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-struct-scope.html @@ -0,0 +1,254 @@ + + + + + + + + +Struct Scope Test + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-uniform-packing-restrictions.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-uniform-packing-restrictions.html new file mode 100644 index 00000000000..f6b879a8d8c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-uniform-packing-restrictions.html @@ -0,0 +1,274 @@ + + + + + + +WebGL uniform packing restrctions Conformance Test + + + + + + + + + +
+
+ + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-varying-packing-restrictions.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-varying-packing-restrictions.html new file mode 100644 index 00000000000..8a7fd1a4201 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-varying-packing-restrictions.html @@ -0,0 +1,211 @@ + + + + + + +WebGL varying packing restrictions Conformance Test + + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-256-character-define.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-256-character-define.html new file mode 100644 index 00000000000..e58ba91906f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-256-character-define.html @@ -0,0 +1,59 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-256-character-identifier.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-256-character-identifier.frag.html new file mode 100644 index 00000000000..84dfd899fe1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-256-character-identifier.frag.html @@ -0,0 +1,128 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-257-character-define.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-257-character-define.html new file mode 100644 index 00000000000..bdf2a35bf7e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-257-character-define.html @@ -0,0 +1,59 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-257-character-identifier.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-257-character-identifier.frag.html new file mode 100644 index 00000000000..1ffe9885eea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-257-character-identifier.frag.html @@ -0,0 +1,59 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-_webgl-identifier.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-_webgl-identifier.vert.html new file mode 100644 index 00000000000..4c4f9aae194 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-_webgl-identifier.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-arbitrary-indexing.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-arbitrary-indexing.frag.html new file mode 100644 index 00000000000..b6c7d99e97c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-arbitrary-indexing.frag.html @@ -0,0 +1,64 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-arbitrary-indexing.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-arbitrary-indexing.vert.html new file mode 100644 index 00000000000..2339be18e30 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-arbitrary-indexing.vert.html @@ -0,0 +1,63 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-array-of-structs-containing-arrays.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-array-of-structs-containing-arrays.html new file mode 100644 index 00000000000..0b2033b35ca --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-array-of-structs-containing-arrays.html @@ -0,0 +1,156 @@ + + + + + + +GLSL Array of Structs Containing Arrays + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-array-of-structs-uniform.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-array-of-structs-uniform.html new file mode 100644 index 00000000000..e0ac18f096b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-array-of-structs-uniform.html @@ -0,0 +1,168 @@ + + + + + + + +GLSL Array of Structs Uniform + + + + + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-attrib-array.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-attrib-array.vert.html new file mode 100644 index 00000000000..fe8a28273f3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-attrib-array.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-attrib-struct.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-attrib-struct.vert.html new file mode 100644 index 00000000000..8d4f5ba8814 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-attrib-struct.vert.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-clipvertex.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-clipvertex.vert.html new file mode 100644 index 00000000000..69d98b37333 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-clipvertex.vert.html @@ -0,0 +1,59 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-comma-assignment.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-comma-assignment.html new file mode 100644 index 00000000000..94c6bed9bfb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-comma-assignment.html @@ -0,0 +1,64 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-comma-conditional-assignment.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-comma-conditional-assignment.html new file mode 100644 index 00000000000..25dce6e6793 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-comma-conditional-assignment.html @@ -0,0 +1,215 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-comma-separated-variable-declarations.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-comma-separated-variable-declarations.html new file mode 100644 index 00000000000..58594e1403e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-comma-separated-variable-declarations.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-conditional-scoping-negative.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-conditional-scoping-negative.html new file mode 100644 index 00000000000..89c89f7032d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-conditional-scoping-negative.html @@ -0,0 +1,65 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-conditional-scoping.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-conditional-scoping.html new file mode 100644 index 00000000000..2719efd259d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-conditional-scoping.html @@ -0,0 +1,68 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-default-precision.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-default-precision.frag.html new file mode 100644 index 00000000000..0fa286ebe61 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-default-precision.frag.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-default-precision.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-default-precision.vert.html new file mode 100644 index 00000000000..61e09607e42 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-default-precision.vert.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-define-line-continuation.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-define-line-continuation.frag.html new file mode 100644 index 00000000000..e6e1fab21d9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-define-line-continuation.frag.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-dfdx-no-ext.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-dfdx-no-ext.frag.html new file mode 100644 index 00000000000..08f02cd26b4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-dfdx-no-ext.frag.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-dfdx.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-dfdx.frag.html new file mode 100644 index 00000000000..17a55596744 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-dfdx.frag.html @@ -0,0 +1,59 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-do-loop.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-do-loop.html new file mode 100644 index 00000000000..6daf76f130b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-do-loop.html @@ -0,0 +1,63 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-error-directive.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-error-directive.html new file mode 100644 index 00000000000..84461bff262 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-error-directive.html @@ -0,0 +1,74 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-explicit-int-cast.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-explicit-int-cast.vert.html new file mode 100644 index 00000000000..37942402e40 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-explicit-int-cast.vert.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-float-return-value.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-float-return-value.frag.html new file mode 100644 index 00000000000..ab1181911d4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-float-return-value.frag.html @@ -0,0 +1,69 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-for-loop.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-for-loop.html new file mode 100644 index 00000000000..5347affb3fb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-for-loop.html @@ -0,0 +1,106 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-for-scoping.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-for-scoping.html new file mode 100644 index 00000000000..04b1fbd771c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-for-scoping.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-frag-depth.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-frag-depth.frag.html new file mode 100644 index 00000000000..07809a79f1c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-frag-depth.frag.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-function-recursion.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-function-recursion.frag.html new file mode 100644 index 00000000000..d410bb69590 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-function-recursion.frag.html @@ -0,0 +1,68 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-function-scoped-struct.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-function-scoped-struct.html new file mode 100644 index 00000000000..90edc5ed35d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-function-scoped-struct.html @@ -0,0 +1,65 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-functional-scoping.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-functional-scoping.html new file mode 100644 index 00000000000..25f68e2e998 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-functional-scoping.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-glcolor.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-glcolor.vert.html new file mode 100644 index 00000000000..f06c8f085fa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-glcolor.vert.html @@ -0,0 +1,58 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-gles-1.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-gles-1.frag.html new file mode 100644 index 00000000000..9148afba6a2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-gles-1.frag.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-gles-symbol.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-gles-symbol.frag.html new file mode 100644 index 00000000000..3d510ed361d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-gles-symbol.frag.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-global-variable-precision-mismatch.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-global-variable-precision-mismatch.html new file mode 100644 index 00000000000..8a3eb1ca190 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-global-variable-precision-mismatch.html @@ -0,0 +1,151 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-glprojectionmatrix.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-glprojectionmatrix.vert.html new file mode 100644 index 00000000000..d596ad6f4b7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-glprojectionmatrix.vert.html @@ -0,0 +1,58 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-hex-int-constant-macro.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-hex-int-constant-macro.html new file mode 100644 index 00000000000..c8d76d083dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-hex-int-constant-macro.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-implicit-vec3-to-vec4-cast.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-implicit-vec3-to-vec4-cast.vert.html new file mode 100644 index 00000000000..1fdd6ba7f97 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-implicit-vec3-to-vec4-cast.vert.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-include.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-include.vert.html new file mode 100644 index 00000000000..3a58760cd3c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-include.vert.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-int-return-value.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-int-return-value.frag.html new file mode 100644 index 00000000000..ca2618bac44 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-int-return-value.frag.html @@ -0,0 +1,65 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-invalid-identifier.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-invalid-identifier.frag.html new file mode 100644 index 00000000000..e06a78676aa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-invalid-identifier.frag.html @@ -0,0 +1,59 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-ivec2-return-value.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-ivec2-return-value.frag.html new file mode 100644 index 00000000000..2d6a57e6860 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-ivec2-return-value.frag.html @@ -0,0 +1,65 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-ivec3-return-value.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-ivec3-return-value.frag.html new file mode 100644 index 00000000000..3efb3838abc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-ivec3-return-value.frag.html @@ -0,0 +1,65 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-ivec4-return-value.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-ivec4-return-value.frag.html new file mode 100644 index 00000000000..6a2a2c358f7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-ivec4-return-value.frag.html @@ -0,0 +1,65 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-limited-indexing.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-limited-indexing.frag.html new file mode 100644 index 00000000000..a36b17983ed --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-limited-indexing.frag.html @@ -0,0 +1,77 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-long-line.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-long-line.html new file mode 100644 index 00000000000..3197cfc10f6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-long-line.html @@ -0,0 +1,90 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-non-ascii-error.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-non-ascii-error.frag.html new file mode 100644 index 00000000000..ef17f0221e8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-non-ascii-error.frag.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-non-reserved-words.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-non-reserved-words.html new file mode 100644 index 00000000000..6aee7c6eba6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-non-reserved-words.html @@ -0,0 +1,718 @@ + + + + + + +WebGL GLSL Conformance Tests - Non Reserved Words + + + + + + + + +
+
+ + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-precision.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-precision.frag.html new file mode 100644 index 00000000000..4c06f0274ed --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-precision.frag.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-preprocessor-whitespace.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-preprocessor-whitespace.html new file mode 100644 index 00000000000..3026fed38b4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-preprocessor-whitespace.html @@ -0,0 +1,85 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-quoted-error.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-quoted-error.frag.html new file mode 100644 index 00000000000..1af0d598149 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-quoted-error.frag.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-reserved-words.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-reserved-words.html new file mode 100644 index 00000000000..a2166e9df78 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-reserved-words.html @@ -0,0 +1,286 @@ + + + + + + +WebGL GLSL Conformance Tests - Reserved Words + + + + + + + + +
+
+ + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-short-circuiting-operators.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-short-circuiting-operators.html new file mode 100644 index 00000000000..a94be1fc006 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-short-circuiting-operators.html @@ -0,0 +1,179 @@ + + + + + + +WebGL short-circuit evaluation + + + + + + + +
+
+ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-similar-uniform-array-names.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-similar-uniform-array-names.html new file mode 100644 index 00000000000..1d9abf4d4cb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-similar-uniform-array-names.html @@ -0,0 +1,132 @@ + + + + + + +GLSL similar names issue + + + + + + + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-too-many-uniforms.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-too-many-uniforms.html new file mode 100644 index 00000000000..68f6c620d15 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-too-many-uniforms.html @@ -0,0 +1,146 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-two-initializer-types.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-two-initializer-types.html new file mode 100644 index 00000000000..65c961c3ef1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-two-initializer-types.html @@ -0,0 +1,59 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-undefined-preprocessor-symbol.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-undefined-preprocessor-symbol.frag.html new file mode 100644 index 00000000000..d8ffa2823db --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-undefined-preprocessor-symbol.frag.html @@ -0,0 +1,62 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-uniform-in-loop-condition.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-uniform-in-loop-condition.vert.html new file mode 100644 index 00000000000..5839d23ca75 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-uniform-in-loop-condition.vert.html @@ -0,0 +1,65 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec2-return-value.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec2-return-value.frag.html new file mode 100644 index 00000000000..a696b8f0d76 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec2-return-value.frag.html @@ -0,0 +1,67 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec3-return-value.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec3-return-value.frag.html new file mode 100644 index 00000000000..c666994b5b6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec3-return-value.frag.html @@ -0,0 +1,67 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec4-return-value.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec4-return-value.frag.html new file mode 100644 index 00000000000..da2ab2892a6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec4-return-value.frag.html @@ -0,0 +1,67 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec4-vec3-vec4-conditional.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec4-vec3-vec4-conditional.html new file mode 100644 index 00000000000..6d0d4a17db0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-vec4-vec3-vec4-conditional.html @@ -0,0 +1,59 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-100.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-100.frag.html new file mode 100644 index 00000000000..9880db624e9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-100.frag.html @@ -0,0 +1,64 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-100.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-100.vert.html new file mode 100644 index 00000000000..8239f4bc660 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-100.vert.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-120.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-120.vert.html new file mode 100644 index 00000000000..f946d928308 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-120.vert.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-130.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-130.vert.html new file mode 100644 index 00000000000..e3aa164e5f2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-version-130.vert.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-webgl-identifier.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-webgl-identifier.vert.html new file mode 100644 index 00000000000..8883972bf10 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-webgl-identifier.vert.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-while-loop.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-while-loop.html new file mode 100644 index 00000000000..9c31db5c3de --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-with-while-loop.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-without-precision.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-without-precision.frag.html new file mode 100644 index 00000000000..c7c443895ed --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shader-without-precision.frag.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-constant-expression-loop-conditions.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-constant-expression-loop-conditions.html new file mode 100644 index 00000000000..5e6f5f920ec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-constant-expression-loop-conditions.html @@ -0,0 +1,138 @@ + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-invariance.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-invariance.html new file mode 100644 index 00000000000..be8af4dc503 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-invariance.html @@ -0,0 +1,355 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-mis-matching-uniforms.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-mis-matching-uniforms.html new file mode 100644 index 00000000000..79a303cc09e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-mis-matching-uniforms.html @@ -0,0 +1,110 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-mis-matching-varyings.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-mis-matching-varyings.html new file mode 100644 index 00000000000..4446025c31c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-mis-matching-varyings.html @@ -0,0 +1,103 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-missing-varyings.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-missing-varyings.html new file mode 100644 index 00000000000..5df921cdd48 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-missing-varyings.html @@ -0,0 +1,97 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-name-conflicts.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-name-conflicts.html new file mode 100644 index 00000000000..7e449f1dc4e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-name-conflicts.html @@ -0,0 +1,106 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-uniform-structs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-uniform-structs.html new file mode 100644 index 00000000000..69a8e98cfd3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-uniform-structs.html @@ -0,0 +1,312 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-varyings.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-varyings.html new file mode 100644 index 00000000000..4b59b146161 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shaders-with-varyings.html @@ -0,0 +1,126 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shared.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shared.html new file mode 100644 index 00000000000..e683a7af930 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/shared.html @@ -0,0 +1,174 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-assign.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-assign.html new file mode 100644 index 00000000000..8060585f082 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-assign.html @@ -0,0 +1,235 @@ + + + + + + +GLSL Structure Assignment Test + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-equals.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-equals.html new file mode 100644 index 00000000000..8ce8e31d60a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-equals.html @@ -0,0 +1,240 @@ + + + + + + +GLSL Structure Equals Test + + + + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-mixed-array-declarators.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-mixed-array-declarators.html new file mode 100644 index 00000000000..3327a2e657d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-mixed-array-declarators.html @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-nesting-exceeds-maximum.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-nesting-exceeds-maximum.html new file mode 100644 index 00000000000..01568074dec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-nesting-exceeds-maximum.html @@ -0,0 +1,78 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-nesting-of-variable-names.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-nesting-of-variable-names.html new file mode 100644 index 00000000000..2596aaaacf4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-nesting-of-variable-names.html @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-nesting-under-maximum.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-nesting-under-maximum.html new file mode 100644 index 00000000000..22b14ec1f56 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-nesting-under-maximum.html @@ -0,0 +1,74 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-specifiers-in-uniforms.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-specifiers-in-uniforms.html new file mode 100644 index 00000000000..4b73b39c97a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-specifiers-in-uniforms.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-unary-operators.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-unary-operators.html new file mode 100644 index 00000000000..259f1604008 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/struct-unary-operators.html @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/ternary-operator-on-arrays.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/ternary-operator-on-arrays.html new file mode 100644 index 00000000000..ac944ce3841 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/ternary-operator-on-arrays.html @@ -0,0 +1,87 @@ + + + + + + +WebGL GLSL Conformance Tests - Ternary operator on arrays + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/ternary-operators-in-global-initializers.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/ternary-operators-in-global-initializers.html new file mode 100644 index 00000000000..f6360ef6505 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/ternary-operators-in-global-initializers.html @@ -0,0 +1,88 @@ + + + + + + + + + + + + +Ternary Operators in Global Initializers + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/ternary-operators-in-initializers.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/ternary-operators-in-initializers.html new file mode 100644 index 00000000000..a8cba50ad74 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/ternary-operators-in-initializers.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/uniform-location-length-limits.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/uniform-location-length-limits.html new file mode 100644 index 00000000000..6d9fc38f864 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/misc/uniform-location-length-limits.html @@ -0,0 +1,109 @@ + + + + + +WebGL uniform location length tests + + + + + + + + + +There is supposed to be an example drawing here, but it's not important. + +
Verify limits on the lengths of uniform locations per WebGL spec, "Maximum Uniform and Attribute Location Lengths".
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/00_test_list.txt new file mode 100644 index 00000000000..7c2da3e8f5c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/00_test_list.txt @@ -0,0 +1,8 @@ +_webgl_field.vert.html +_webgl_function.vert.html +_webgl_struct.vert.html +_webgl_variable.vert.html +webgl_field.vert.html +webgl_function.vert.html +webgl_struct.vert.html +webgl_variable.vert.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_field.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_field.vert.html new file mode 100644 index 00000000000..1c98b6a7620 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_field.vert.html @@ -0,0 +1,63 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_function.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_function.vert.html new file mode 100644 index 00000000000..4498d02a432 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_function.vert.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_struct.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_struct.vert.html new file mode 100644 index 00000000000..97d5e94dd97 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_struct.vert.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_variable.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_variable.vert.html new file mode 100644 index 00000000000..2b45f807da1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/_webgl_variable.vert.html @@ -0,0 +1,57 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_field.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_field.vert.html new file mode 100644 index 00000000000..1c6a28fde42 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_field.vert.html @@ -0,0 +1,63 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_function.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_function.vert.html new file mode 100644 index 00000000000..b215cbcea8e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_function.vert.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_struct.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_struct.vert.html new file mode 100644 index 00000000000..16a38949d5e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_struct.vert.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_variable.vert.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_variable.vert.html new file mode 100644 index 00000000000..bccb5513db1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/reserved/webgl_variable.vert.html @@ -0,0 +1,57 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/00_test_list.txt new file mode 100644 index 00000000000..c0f612d81d6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/00_test_list.txt @@ -0,0 +1,4 @@ +glsl-function-texture2d-bias.html +glsl-function-texture2dlod.html +glsl-function-texture2dproj.html +--min-version 1.0.3 glsl-function-texture2dprojlod.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2d-bias.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2d-bias.html new file mode 100644 index 00000000000..a3b01685f2b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2d-bias.html @@ -0,0 +1,124 @@ + + + + + + +WebGL texture2D GLSL conformance test. + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2dlod.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2dlod.html new file mode 100644 index 00000000000..c50e5964636 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2dlod.html @@ -0,0 +1,132 @@ + + + + + + +WebGL texture2D GLSL conformance test. + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2dproj.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2dproj.html new file mode 100644 index 00000000000..cfaba534608 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2dproj.html @@ -0,0 +1,139 @@ + + + + + + +WebGL texture2D GLSL conformance test. + + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2dprojlod.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2dprojlod.html new file mode 100644 index 00000000000..beb07f5076d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/samplers/glsl-function-texture2dprojlod.html @@ -0,0 +1,163 @@ + + + + + + +WebGL texture2D GLSL conformance test. + + + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/00_test_list.txt new file mode 100644 index 00000000000..31fe0f8f20c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/00_test_list.txt @@ -0,0 +1,6 @@ +gl-fragcoord.html +gl-frontfacing.html +gl-pointcoord.html +--min-version 1.0.2 glsl-built-ins.html +--min-version 1.0.3 gl-fragcoord-xy-values.html +--min-version 1.0.3 gl-fragdata-and-fragcolor.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-fragcoord-xy-values.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-fragcoord-xy-values.html new file mode 100644 index 00000000000..76629f0fb34 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-fragcoord-xy-values.html @@ -0,0 +1,208 @@ + + + + + + +gl-fragcoord Test + + + + + + + + + +
+
+ + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-fragcoord.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-fragcoord.html new file mode 100644 index 00000000000..7d9bdbbbfdd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-fragcoord.html @@ -0,0 +1,107 @@ + + + + + + +gl-fragcoord Test + + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-fragdata-and-fragcolor.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-fragdata-and-fragcolor.html new file mode 100644 index 00000000000..a3eeed37245 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-fragdata-and-fragcolor.html @@ -0,0 +1,61 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-frontfacing.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-frontfacing.html new file mode 100644 index 00000000000..902d65f8cb6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-frontfacing.html @@ -0,0 +1,109 @@ + + + + + + +gl-fragcoord Test + + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-pointcoord.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-pointcoord.html new file mode 100644 index 00000000000..ebfa41993f7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/gl-pointcoord.html @@ -0,0 +1,164 @@ + + + + + + +gl-pointcoord Test + + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/glsl-built-ins.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/glsl-built-ins.html new file mode 100644 index 00000000000..75310782b78 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/glsl/variables/glsl-built-ins.html @@ -0,0 +1,129 @@ + + + + + + +WebGL GLSL built in variables Conformance Test + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/00_test_list.txt new file mode 100644 index 00000000000..79eb84a48e6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/00_test_list.txt @@ -0,0 +1,6 @@ +--min-version 1.0.4 gl-line-width.html +gl-min-attribs.html +gl-max-texture-dimensions.html +gl-min-textures.html +gl-min-uniforms.html + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-line-width.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-line-width.html new file mode 100644 index 00000000000..b6b114bf8d7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-line-width.html @@ -0,0 +1,95 @@ + + + + + + +Verify that line width limits are enforced. + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-max-texture-dimensions.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-max-texture-dimensions.html new file mode 100644 index 00000000000..aef6db69831 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-max-texture-dimensions.html @@ -0,0 +1,132 @@ + + + + + + +WebGL the max advertized texture size is supported. + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-min-attribs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-min-attribs.html new file mode 100644 index 00000000000..e71f4497aaf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-min-attribs.html @@ -0,0 +1,109 @@ + + + + + + +WebGL the minimum number of attributes are supported. + + + + + + + + +
+
+ + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-min-textures.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-min-textures.html new file mode 100644 index 00000000000..0d765e0953e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-min-textures.html @@ -0,0 +1,104 @@ + + + + + + +WebGL the minimum number of uniforms are supported. + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-min-uniforms.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-min-uniforms.html new file mode 100644 index 00000000000..58046256222 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/limits/gl-min-uniforms.html @@ -0,0 +1,128 @@ + + + + + + +WebGL the minimum number of uniforms are supported. + + + + + + + + +
+
+ + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/00_test_list.txt new file mode 100644 index 00000000000..224b8f63b5f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/00_test_list.txt @@ -0,0 +1,15 @@ +bad-arguments-test.html +--min-version 1.0.2 boolean-argument-conversion.html +--min-version 1.0.2 delayed-drawing.html +error-reporting.html +--min-version 1.0.4 expando-loss.html +functions-returning-strings.html +--max-version 1.9.9 instanceof-test.html +invalid-passed-params.html +is-object.html +null-object-behaviour.html +object-deletion-behaviour.html +shader-precision-format.html +type-conversion-test.html +uninitialized-test.html +webgl-specific.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/bad-arguments-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/bad-arguments-test.html new file mode 100644 index 00000000000..233f5a1c748 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/bad-arguments-test.html @@ -0,0 +1,123 @@ + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/boolean-argument-conversion.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/boolean-argument-conversion.html new file mode 100644 index 00000000000..8419cf66b3d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/boolean-argument-conversion.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/delayed-drawing.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/delayed-drawing.html new file mode 100644 index 00000000000..eaf1aafe699 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/delayed-drawing.html @@ -0,0 +1,87 @@ + + + + + + +WebGL Delayed Drawing test. + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/error-reporting.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/error-reporting.html new file mode 100644 index 00000000000..14ccd55cb49 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/error-reporting.html @@ -0,0 +1,96 @@ + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/expando-loss.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/expando-loss.html new file mode 100644 index 00000000000..ead5dc143ee --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/expando-loss.html @@ -0,0 +1,245 @@ + + + + + + + + + + +WebGL Object Expandos Conformance Test + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/functions-returning-strings.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/functions-returning-strings.html new file mode 100644 index 00000000000..5373ab3c473 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/functions-returning-strings.html @@ -0,0 +1,127 @@ + + + + + +WebGL Conformance Tests + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/instanceof-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/instanceof-test.html new file mode 100644 index 00000000000..ebca7c3e091 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/instanceof-test.html @@ -0,0 +1,67 @@ + + + + + + +WebGL instanceof test. + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/invalid-passed-params.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/invalid-passed-params.html new file mode 100644 index 00000000000..20dd73ac29c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/invalid-passed-params.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/is-object.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/is-object.html new file mode 100644 index 00000000000..0d93bb9c740 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/is-object.html @@ -0,0 +1,101 @@ + + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/null-object-behaviour.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/null-object-behaviour.html new file mode 100644 index 00000000000..f7e2fdafd42 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/null-object-behaviour.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/object-deletion-behaviour.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/object-deletion-behaviour.html new file mode 100644 index 00000000000..447d1ecf5ea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/object-deletion-behaviour.html @@ -0,0 +1,466 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/shader-precision-format.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/shader-precision-format.html new file mode 100644 index 00000000000..7d5995b3ed6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/shader-precision-format.html @@ -0,0 +1,160 @@ + + + + + +WebGL shader precision format test. + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/type-conversion-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/type-conversion-test.html new file mode 100644 index 00000000000..afe666a8d33 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/type-conversion-test.html @@ -0,0 +1,174 @@ + + + + + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/uninitialized-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/uninitialized-test.html new file mode 100644 index 00000000000..23fc73af70f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/uninitialized-test.html @@ -0,0 +1,216 @@ + + + + + +WebGL Uninitialized GL Resources Tests + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/webgl-specific.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/webgl-specific.html new file mode 100644 index 00000000000..803287b84af --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/misc/webgl-specific.html @@ -0,0 +1,134 @@ + + + + + + +WebGL GLES2 difference test. + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/00_test_list.txt new file mode 100644 index 00000000000..aeee7cd1889 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/00_test_list.txt @@ -0,0 +1,57 @@ +conformance/constants.html +conformance/getContext.html +conformance/methods.html +conformance/quickCheckAPI-A.html +conformance/quickCheckAPI-B1.html +conformance/quickCheckAPI-B2.html +conformance/quickCheckAPI-B3.html +conformance/quickCheckAPI-B4.html +conformance/quickCheckAPI-C.html +conformance/quickCheckAPI-D_G.html +conformance/quickCheckAPI-G_I.html +conformance/quickCheckAPI-L_S.html +conformance/quickCheckAPI-S_V.html +conformance/webGLArrays.html +functions/bindBuffer.html +functions/bindBufferBadArgs.html +functions/bindFramebufferLeaveNonZero.html +functions/bufferData.html +functions/bufferDataBadArgs.html +functions/bufferSubData.html +functions/bufferSubDataBadArgs.html +functions/copyTexImage2D.html +functions/copyTexImage2DBadArgs.html +functions/copyTexSubImage2D.html +functions/copyTexSubImage2DBadArgs.html +functions/deleteBufferBadArgs.html +functions/drawArrays.html +functions/drawArraysOutOfBounds.html +functions/drawElements.html +functions/isTests.html +--min-version 1.0.2 functions/isTestsBadArgs.html +functions/readPixels.html +functions/readPixelsBadArgs.html +functions/texImage2D.html +functions/texImage2DBadArgs.html +functions/texImage2DHTML.html +functions/texImage2DHTMLBadArgs.html +functions/texSubImage2D.html +functions/texSubImage2DBadArgs.html +functions/texSubImage2DHTML.html +functions/texSubImage2DHTMLBadArgs.html +functions/uniformf.html +functions/uniformfBadArgs.html +functions/uniformfArrayLen1.html +functions/uniformi.html +functions/uniformiBadArgs.html +functions/uniformMatrix.html +functions/uniformMatrixBadArgs.html +functions/vertexAttrib.html +functions/vertexAttribBadArgs.html +functions/vertexAttribPointer.html +functions/vertexAttribPointerBadArgs.html +glsl/arrayOutOfBounds.html +#glsl/longLoops.html // No interactive tests. +glsl/uniformOutOfBounds.html +#glsl/unusedAttribsUniforms.html // No interactive tests. + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/README.md b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/README.md new file mode 100644 index 00000000000..01937147f69 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/README.md @@ -0,0 +1,53 @@ +Tests for the WebGL canvas context +================================== + +These tests are intended to serve the following purposes: + + * Assert spec conformance + * Check the safety of the GL binding (bounds checking, same origin policy) + * Provide performance numbers for developers + + +Running the tests +----------------- + + 1. Install a browser with WebGL support + 2. Run ruby gen_tests.rb if you have modified the tests. + 3. Run ruby test_server.rb if you want to get test run output to test_server's stdout (especially useful for finding out which test crashed your browser.) + 4. Open all_tests.html in your browser. + + +Want to contribute? +------------------- + + 1. Fork this repo + 2. Run gen_tests.rb + 3. Look into templates/ to see which functions lack tests (also see methods.txt and nsICanvasRenderingContextWebGL.idl): + 1. copy methodName.html to functions/methodName.html and write tests that test the results of valid inputs. + 2. copy methodNameBadArgs.html to functions/methodNameBadArgs.html and write tests to assert that invalid inputs throw exceptions. + 3. If your test causes a segfault, add the following to the top of the script tag: Tests.autorun = false; Tests.message = "Caution: this may crash your browser"; + 4. For each performance test: + 1. Write a performance/myTestName.html and set Tests.autorun = false; + 5. If you have a test that you would like to run over the whole API or want to generate tests programmatically, add them to gen_tests.rb or write your own script. + 6. Create a commit for each file. (E.g. for f in $(git status | grep -e "^#\\s*functions/\\S*$" | sed "s/^#\s*//"); do git add $f; git commit -m $f; done) + 7. Send me a pull request. + 8. Congratulations, you're now a contributor! + + +For more information on WebGL: + + * Planet WebGL + * Learning WebGL + * WebGL on Khronos Message Boards + +Developer links: + + * WebGL on Mozilla Bugzilla + * WebGL on WebKit Bugzilla + * WebGL on Chromium Bugzilla + +What's the stuff in apigen? + + There are some Python scripts in the apigen/ directory that generate C++ based on the API definition files (gl2.h, api_modifications.txt, valid_args.txt.) The generated code is Mozilla XPCOM functions that check their args against the valid GLES 2.0 constants (as they were written on the man pages.) There's also some wackier stuff for checking copyTexImage2D and copyTexSubImage2D image dimensions against viewport dimensions. + + If you can use it to generate code for your WebGL implementation, it might save you 1500 lines of typing and testing. The last time I used it was summer 2009 to generate a patch for Canvas 3D, so it's likely somewhat out of date. diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-A.js b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-A.js new file mode 100644 index 00000000000..31039b5968f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-A.js @@ -0,0 +1,86 @@ +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +// ArgGenerators contains argument generators for WebGL functions. +// The argument generators are used for running random tests against the WebGL +// functions. +// +// ArgGenerators is an object consisting of functionName : argGen -properties. +// +// functionName is a WebGL context function name and the argGen is an argument +// generator object that encapsulates the requirements to run +// randomly generated tests on the WebGL function. +// +// An argGen object has the following methods: +// - setup -- set up state for testing the GL function, returns values +// that need cleanup in teardown. Run once before entering a +// test loop. +// - teardown -- do cleanup on setup's return values after testing is complete +// - generate -- generate a valid set of random arguments for the GL function +// - returnValueCleanup -- do cleanup on value returned by the tested GL function +// - cleanup -- do cleanup on generated arguments from generate +// - checkArgValidity -- check if passed args are valid. Has a call signature +// that matches generate's return value. Returns true +// if args are valid, false if not. +// +// Example test loop that demonstrates how the function args and return +// values flow together: +// +// var setupArgs = argGen.setup(); +// for (var i=0; i 0.5 ? null : GL.createFramebuffer()]; + }, + checkArgValidity : function(target, fbo) { + if (target != GL.FRAMEBUFFER) + return false; + if (fbo != null) + GL.bindFramebuffer(target, fbo); + return (fbo == null || GL.isFramebuffer(fbo)); + }, + cleanup : function(target, fbo) { + GL.bindFramebuffer(target, null); + if (fbo) + GL.deleteFramebuffer(fbo); + } + }, + bindRenderbuffer : { + generate : function() { + return [GL.RENDERBUFFER, Math.random() > 0.5 ? null : GL.createRenderbuffer()]; + }, + checkArgValidity : function(target, rbo) { + if (target != GL.RENDERBUFFER) + return false; + if (rbo != null) + GL.bindRenderbuffer(target, rbo); + return (rbo == null || GL.isRenderbuffer(rbo)); + }, + cleanup : function(target, rbo) { + GL.bindRenderbuffer(target, null); + if (rbo) + GL.deleteRenderbuffer(rbo); + } + }, + bindTexture : { + generate : function() { + return [bindTextureTarget.random(), Math.random() > 0.5 ? null : GL.createTexture()]; + }, + checkArgValidity : function(target, o) { + if (!bindTextureTarget.has(target)) + return false; + if (o != null) + GL.bindTexture(target, o); + return (o == null || GL.isTexture(o)); + }, + cleanup : function(target, o) { + GL.bindTexture(target, null); + if (o) + GL.deleteTexture(o); + } + }, + blendColor : { + generate : function() { return randomColor(); }, + teardown : function() { GL.blendColor(0,0,0,0); } + }, + blendEquation : { + generate : function() { return [blendEquationMode.random()]; }, + checkArgValidity : function(o) { return blendEquationMode.has(o); }, + teardown : function() { GL.blendEquation(GL.FUNC_ADD); } + }, + blendEquationSeparate : { + generate : function() { + return [blendEquationMode.random(), blendEquationMode.random()]; + }, + checkArgValidity : function(o,p) { + return blendEquationMode.has(o) && blendEquationMode.has(p); + }, + teardown : function() { GL.blendEquationSeparate(GL.FUNC_ADD, GL.FUNC_ADD); } + }, + blendFunc : { + generate : function() { + return [blendFuncSfactor.random(), blendFuncDfactor.random()]; + }, + checkArgValidity : function(s,d) { + return blendFuncSfactor.has(s) && blendFuncDfactor.has(d); + }, + teardown : function() { GL.blendFunc(GL.ONE, GL.ZERO); } + }, + blendFuncSeparate : { + generate : function() { + return [blendFuncSfactor.random(), blendFuncDfactor.random(), + blendFuncSfactor.random(), blendFuncDfactor.random()]; + }, + checkArgValidity : function(s,d,as,ad) { + return blendFuncSfactor.has(s) && blendFuncDfactor.has(d) && + blendFuncSfactor.has(as) && blendFuncDfactor.has(ad) ; + }, + teardown : function() { + GL.blendFuncSeparate(GL.ONE, GL.ZERO, GL.ONE, GL.ZERO); + } + } + +}; diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-B3.js b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-B3.js new file mode 100644 index 00000000000..7b7f46c4614 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-B3.js @@ -0,0 +1,85 @@ +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +// ArgGenerators contains argument generators for WebGL functions. +// The argument generators are used for running random tests against the WebGL +// functions. +// +// ArgGenerators is an object consisting of functionName : argGen -properties. +// +// functionName is a WebGL context function name and the argGen is an argument +// generator object that encapsulates the requirements to run +// randomly generated tests on the WebGL function. +// +// An argGen object has the following methods: +// - setup -- set up state for testing the GL function, returns values +// that need cleanup in teardown. Run once before entering a +// test loop. +// - teardown -- do cleanup on setup's return values after testing is complete +// - generate -- generate a valid set of random arguments for the GL function +// - returnValueCleanup -- do cleanup on value returned by the tested GL function +// - cleanup -- do cleanup on generated arguments from generate +// - checkArgValidity -- check if passed args are valid. Has a call signature +// that matches generate's return value. Returns true +// if args are valid, false if not. +// +// Example test loop that demonstrates how the function args and return +// values flow together: +// +// var setupArgs = argGen.setup(); +// for (var i=0; i= 0 && data.byteLength >= 0 && offset + data.byteLength <= 256; + }, + teardown : function(buf, ebuf) { + GL.deleteBuffer(buf); + GL.deleteBuffer(ebuf); + }, + } + +}; diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-C.js b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-C.js new file mode 100644 index 00000000000..974ff745532 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-C.js @@ -0,0 +1,136 @@ +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +// ArgGenerators contains argument generators for WebGL functions. +// The argument generators are used for running random tests against the WebGL +// functions. +// +// ArgGenerators is an object consisting of functionName : argGen -properties. +// +// functionName is a WebGL context function name and the argGen is an argument +// generator object that encapsulates the requirements to run +// randomly generated tests on the WebGL function. +// +// An argGen object has the following methods: +// - setup -- set up state for testing the GL function, returns values +// that need cleanup in teardown. Run once before entering a +// test loop. +// - teardown -- do cleanup on setup's return values after testing is complete +// - generate -- generate a valid set of random arguments for the GL function +// - returnValueCleanup -- do cleanup on value returned by the tested GL function +// - cleanup -- do cleanup on generated arguments from generate +// - checkArgValidity -- check if passed args are valid. Has a call signature +// that matches generate's return value. Returns true +// if args are valid, false if not. +// +// Example test loop that demonstrates how the function args and return +// values flow together: +// +// var setupArgs = argGen.setup(); +// for (var i=0; i 0.5 ? null : GL.createFramebuffer()]; + }, + checkArgValidity : function(fbo) { + if (fbo != null) + GL.bindFramebuffer(GL.FRAMEBUFFER, fbo); + return fbo == null || GL.isFramebuffer(fbo); + }, + cleanup : function(fbo){ + GL.bindFramebuffer(GL.FRAMEBUFFER, null); + if (fbo != null) + try{ GL.deleteFramebuffer(fbo); } catch(e) {} + } + }, + clear : { + generate : function() { return [clearMask.random()]; }, + checkArgValidity : function(mask) { return clearMask.has(mask); } + }, + clearColor : { + generate : function() { return randomColor(); }, + teardown : function() { GL.clearColor(0,0,0,0); } + }, + clearDepth : { + generate : function() { return [Math.random()]; }, + teardown : function() { GL.clearDepth(1); } + }, + clearStencil : { + generate : function() { return [randomStencil()]; }, + teardown : function() { GL.clearStencil(0); } + }, + colorMask : { + generate : function() { + return [randomBool(), randomBool(), randomBool(), randomBool()]; + }, + teardown : function() { GL.colorMask(true, true, true, true); } + }, + compileShader : {}, // FIXME + copyTexImage2D : {}, // FIXME + copyTexSubImage2D : {}, // FIXME + createBuffer : { + generate : function() { return []; }, + returnValueCleanup : function(o) { GL.deleteBuffer(o); } + }, + createFramebuffer : { + generate : function() { return []; }, + returnValueCleanup : function(o) { GL.deleteFramebuffer(o); } + }, + createProgram : { + generate : function() { return []; }, + returnValueCleanup : function(o) { GL.deleteProgram(o); } + }, + createRenderbuffer : { + generate : function() { return []; }, + returnValueCleanup : function(o) { GL.deleteRenderbuffer(o); } + }, + createShader : { + generate : function() { return [shaderType.random()]; }, + checkArgValidity : function(t) { return shaderType.has(t); }, + returnValueCleanup : function(o) { GL.deleteShader(o); } + }, + createTexture : { + generate : function() { return []; }, + returnValueCleanup : function(o) { GL.deleteTexture(o); } + }, + cullFace : { + generate : function() { return [cullFace.random()]; }, + checkArgValidity : function(f) { return cullFace.has(f); }, + teardown : function() { GL.cullFace(GL.BACK); } + } + +}; diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-D_G.js b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-D_G.js new file mode 100644 index 00000000000..7d218519dff --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-D_G.js @@ -0,0 +1,252 @@ +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +// ArgGenerators contains argument generators for WebGL functions. +// The argument generators are used for running random tests against the WebGL +// functions. +// +// ArgGenerators is an object consisting of functionName : argGen -properties. +// +// functionName is a WebGL context function name and the argGen is an argument +// generator object that encapsulates the requirements to run +// randomly generated tests on the WebGL function. +// +// An argGen object has the following methods: +// - setup -- set up state for testing the GL function, returns values +// that need cleanup in teardown. Run once before entering a +// test loop. +// - teardown -- do cleanup on setup's return values after testing is complete +// - generate -- generate a valid set of random arguments for the GL function +// - returnValueCleanup -- do cleanup on value returned by the tested GL function +// - cleanup -- do cleanup on generated arguments from generate +// - checkArgValidity -- check if passed args are valid. Has a call signature +// that matches generate's return value. Returns true +// if args are valid, false if not. +// +// Example test loop that demonstrates how the function args and return +// values flow together: +// +// var setupArgs = argGen.setup(); +// for (var i=0; i= 0 && castToInt(h) >= 0; + }, + teardown : function() { + GL.scissor(0,0,GL.canvas.width, GL.canvas.height); + } + }, + shaderSource : {}, // FIXME + stencilFunc : { + generate : function(){ + return [stencilFuncFunc.random(), randomInt(MaxStencilValue), randomInt(0xffffffff)]; + }, + checkArgValidity : function(func, ref, mask) { + return stencilFuncFunc.has(func) && castToInt(ref) >= 0 && castToInt(ref) < MaxStencilValue; + }, + teardown : function() { + GL.stencilFunc(GL.ALWAYS, 0, 0xffffffff); + } + }, + stencilFuncSeparate : { + generate : function(){ + return [cullFace.random(), stencilFuncFunc.random(), randomInt(MaxStencilValue), randomInt(0xffffffff)]; + }, + checkArgValidity : function(face, func, ref, mask) { + return cullFace.has(face) && stencilFuncFunc.has(func) && castToInt(ref) >= 0 && castToInt(ref) < MaxStencilValue; + }, + teardown : function() { + GL.stencilFunc(GL.ALWAYS, 0, 0xffffffff); + } + }, + stencilMask : { + generate : function() { return [randomInt(0xffffffff)]; }, + teardown : function() { GL.stencilMask(0xffffffff); } + } + +}; diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-S_V.js b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-S_V.js new file mode 100644 index 00000000000..726f6ef0521 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/argGenerators-S_V.js @@ -0,0 +1,229 @@ +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +// ArgGenerators contains argument generators for WebGL functions. +// The argument generators are used for running random tests against the WebGL +// functions. +// +// ArgGenerators is an object consisting of functionName : argGen -properties. +// +// functionName is a WebGL context function name and the argGen is an argument +// generator object that encapsulates the requirements to run +// randomly generated tests on the WebGL function. +// +// An argGen object has the following methods: +// - setup -- set up state for testing the GL function, returns values +// that need cleanup in teardown. Run once before entering a +// test loop. +// - teardown -- do cleanup on setup's return values after testing is complete +// - generate -- generate a valid set of random arguments for the GL function +// - returnValueCleanup -- do cleanup on value returned by the tested GL function +// - cleanup -- do cleanup on generated arguments from generate +// - checkArgValidity -- check if passed args are valid. Has a call signature +// that matches generate's return value. Returns true +// if args are valid, false if not. +// +// Example test loop that demonstrates how the function args and return +// values flow together: +// +// var setupArgs = argGen.setup(); +// for (var i=0; i 0.5) { + pix = new Uint8Array(16*16*4); + } + return [ + texImageTarget.random(), 0, + format, 16, 16, 0, + format, GL.UNSIGNED_BYTE, pix + ]; + } + }, + checkArgValidity : function(target, level, internalformat, width, height, border, format, type, data) { + // or : function(target, level, internalformat, format, type, image) + if (!texImageTarget.has(target) || castToInt(level) < 0) + return false; + if (arguments.length <= 6) { + var xformat = width; + var xtype = height; + var ximage = border; + if ((ximage instanceof HTMLImageElement || + ximage instanceof HTMLVideoElement || + ximage instanceof HTMLCanvasElement || + ximage instanceof ImageData) && + texImageInternalFormat.has(internalformat) && + texImageFormat.has(xformat) && + texImageType.has(xtype) && + internalformat == xformat) + return true; + return false; + } + var w = castToInt(width), h = castToInt(height), b = castToInt(border); + return texImageInternalFormat.has(internalformat) && w >= 0 && h >= 0 && + b == 0 && (data == null || data.byteLength == w*h*4) && + texImageFormat.has(format) && texImageType.has(type) + && internalformat == format; + }, + teardown : function(tex, tex2) { + GL.bindTexture(GL.TEXTURE_2D, null); + GL.bindTexture(GL.TEXTURE_CUBE_MAP, null); + GL.deleteTexture(tex); + GL.deleteTexture(tex2); + } + }, + texParameterf : { + generate : function() { + var pname = texParameterPname.random(); + var param = texParameterParam[pname].random(); + return [bindTextureTarget.random(), pname, param]; + }, + checkArgValidity : function(target, pname, param) { + if (!bindTextureTarget.has(target)) + return false; + if (!texParameterPname.has(pname)) + return false; + return texParameterParam[pname].has(param); + } + }, + texParameteri : { + generate : function() { + var pname = texParameterPname.random(); + var param = texParameterParam[pname].random(); + return [bindTextureTarget.random(), pname, param]; + }, + checkArgValidity : function(target, pname, param) { + if (!bindTextureTarget.has(target)) + return false; + if (!texParameterPname.has(pname)) + return false; + return texParameterParam[pname].has(param); + } + }, + texSubImage2D : {}, // FIXME + +// U + + uniform1f : {}, // FIXME + uniform1fv : {}, // FIXME + uniform1i : {}, // FIXME + uniform1iv : {}, // FIXME + uniform2f : {}, // FIXME + uniform2fv : {}, // FIXME + uniform2i : {}, // FIXME + uniform2iv : {}, // FIXME + uniform3f : {}, // FIXME + uniform3fv : {}, // FIXME + uniform3i : {}, // FIXME + uniform3iv : {}, // FIXME + uniform4f : {}, // FIXME + uniform4fv : {}, // FIXME + uniform4i : {}, // FIXME + uniform4iv : {}, // FIXME + uniformMatrix2fv : {}, // FIXME + uniformMatrix3fv : {}, // FIXME + uniformMatrix4fv : {}, // FIXME + useProgram : {}, // FIXME + +// V + + validateProgram : {}, // FIXME + vertexAttrib1f : {}, // FIXME + vertexAttrib1fv : {}, // FIXME + vertexAttrib2f : {}, // FIXME + vertexAttrib2fv : {}, // FIXME + vertexAttrib3f : {}, // FIXME + vertexAttrib3fv : {}, // FIXME + vertexAttrib4f : {}, // FIXME + vertexAttrib4fv : {}, // FIXME + vertexAttribPointer : {}, // FIXME + viewport : { + generate : function() { + return [randomInt(3000)-1500, randomInt(3000)-1500, randomIntFromRange(0,3000), randomIntFromRange(0,3000)]; + }, + checkArgValidity : function(x,y,w,h) { + return castToInt(w) >= 0 && castToInt(h) >= 0; + }, + teardown : function() { + GL.viewport(0,0,GL.canvas.width, GL.canvas.height); + } + } + +}; diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/constants.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/constants.html new file mode 100644 index 00000000000..b414cfcfbe4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/constants.html @@ -0,0 +1,374 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/getContext.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/getContext.html new file mode 100644 index 00000000000..1a976374066 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/getContext.html @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/methods.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/methods.html new file mode 100644 index 00000000000..654a367275f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/methods.html @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-A.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-A.html new file mode 100644 index 00000000000..2f7db5168f8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-A.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B1.html new file mode 100644 index 00000000000..412735279b6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B1.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B2.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B2.html new file mode 100644 index 00000000000..37db6be3f3a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B2.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B3.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B3.html new file mode 100644 index 00000000000..50ef3d9b176 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B3.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B4.html new file mode 100644 index 00000000000..f48349678ae --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-B4.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-C.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-C.html new file mode 100644 index 00000000000..86f6e231e02 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-C.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-D_G.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-D_G.html new file mode 100644 index 00000000000..46f33a5f8ec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-D_G.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-G_I.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-G_I.html new file mode 100644 index 00000000000..3bd578b7e6c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-G_I.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-L_S.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-L_S.html new file mode 100644 index 00000000000..7da6351190f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-L_S.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-S_V.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-S_V.html new file mode 100644 index 00000000000..51c1488975f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI-S_V.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI.js b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI.js new file mode 100644 index 00000000000..b39feca144c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/quickCheckAPI.js @@ -0,0 +1,430 @@ +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* + QuickCheck tests for WebGL: + + 1. Write a valid arg generator for each function + 1.1. Write valid arg predicates to use with random generator: + if value passes generator, accept it as valid. + 1.2. Often needs initializing and cleanup: + setup - generate - cleanup + gl.createBuffer - test(bindBufferGenerator) - gl.deleteBuffer + + 2. Write an invalid arg generator + 2.1. Take valid args, modify an arg until the args no longer pass + checkArgValidity. + 2.2. Repeat for all args. + + 3. Test functions using the generators + 3.1. Args generated with the valid arg generator should pass + assertOk(f(args)) + 3.2. Args generated with the invalid arg generator should pass + assertFail(f(args)) +*/ +var GLcanvas = document.createElement('canvas'); +var canvas2D = document.createElement('canvas'); +GLcanvas.width = GLcanvas.height = 256; +GL = getGLContext(GLcanvas); +Array.from = function(o) { + var a = []; + for (var i=0; i= 0; + if (bufData instanceof ArrayBuffer) + return true; + return WebGLArrayTypes.some(function(t) { + return bufData instanceof t; + }); +}; + +isVertexAttribute = function(idx) { + if (typeof idx != 'number') return false; + return idx >= 0 && idx < MaxVertexAttribs; +}; + +isValidName = function(name) { + if (typeof name != 'string') return false; + for (var i=0; i 0.5; }; + +randomStencil = function() { + return randomInt(MaxStencilValue); +}; + +randomLineWidth = function() { + var lo = LineWidthRange[0], + hi = LineWidthRange[1]; + return randomFloatFromRange(lo, hi); +}; + +randomImage = function(w,h) { + var img; + var r = Math.random(); + if (r < 0.25) { + img = document.createElement('canvas'); + img.width = w; img.height = h; + img.getContext('2d').fillRect(0,0,w,h); + } else if (r < 0.5) { + img = document.createElement('video'); + img.width = w; img.height = h; + } else if (r < 0.75) { + img = document.createElement('img'); + img.width = w; img.height = h; + } else { + img = canvas2D.getContext('2d').createImageData(w,h); + } + return img +}; + +mutateArgs = function(args) { + var mutateCount = randomIntFromRange(1, args.length); + var newArgs = Array.from(args); + for (var i=0; i 31 && c < 128) ? str[ii] : "?"); + } + return newStr.join(''); +}; + +argsToString = function(args) { + return sanitize(args.map(function(a){return Object.toSource(a)}).join(",")); +}; diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/webGLArrays.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/webGLArrays.html new file mode 100644 index 00000000000..1d9c498f8f1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/conformance/webGLArrays.html @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bindBuffer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bindBuffer.html new file mode 100644 index 00000000000..6e2c916b59d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bindBuffer.html @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bindBufferBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bindBufferBadArgs.html new file mode 100644 index 00000000000..b4d2aed5806 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bindBufferBadArgs.html @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bindFramebufferLeaveNonZero.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bindFramebufferLeaveNonZero.html new file mode 100644 index 00000000000..a474ef3149b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bindFramebufferLeaveNonZero.html @@ -0,0 +1,52 @@ + + + + + +OpenGL for the web + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferData.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferData.html new file mode 100644 index 00000000000..d8d1ecb6354 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferData.html @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferDataBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferDataBadArgs.html new file mode 100644 index 00000000000..778c79fccec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferDataBadArgs.html @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferSubData.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferSubData.html new file mode 100644 index 00000000000..c17e2462034 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferSubData.html @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferSubDataBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferSubDataBadArgs.html new file mode 100644 index 00000000000..7468522537c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/bufferSubDataBadArgs.html @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexImage2D.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexImage2D.html new file mode 100644 index 00000000000..36dc975f9ca --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexImage2D.html @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexImage2DBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexImage2DBadArgs.html new file mode 100644 index 00000000000..f20bd75da6e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexImage2DBadArgs.html @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexSubImage2D.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexSubImage2D.html new file mode 100644 index 00000000000..e1643b68745 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexSubImage2D.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexSubImage2DBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexSubImage2DBadArgs.html new file mode 100644 index 00000000000..f4a2513160e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/copyTexSubImage2DBadArgs.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/deleteBufferBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/deleteBufferBadArgs.html new file mode 100644 index 00000000000..ff4e6761bf3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/deleteBufferBadArgs.html @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/drawArrays.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/drawArrays.html new file mode 100644 index 00000000000..215398db2cd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/drawArrays.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/drawArraysOutOfBounds.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/drawArraysOutOfBounds.html new file mode 100644 index 00000000000..4227bfca054 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/drawArraysOutOfBounds.html @@ -0,0 +1,307 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/drawElements.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/drawElements.html new file mode 100644 index 00000000000..3735616476f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/drawElements.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/isTests.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/isTests.html new file mode 100644 index 00000000000..4464a0301f3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/isTests.html @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/isTestsBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/isTestsBadArgs.html new file mode 100644 index 00000000000..de736db6d82 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/isTestsBadArgs.html @@ -0,0 +1,110 @@ + + + + + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/readPixels.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/readPixels.html new file mode 100644 index 00000000000..a15a9d9adf9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/readPixels.html @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/readPixelsBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/readPixelsBadArgs.html new file mode 100644 index 00000000000..e6b612ae4dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/readPixelsBadArgs.html @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2D.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2D.html new file mode 100644 index 00000000000..20a5388d7e4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2D.html @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2DBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2DBadArgs.html new file mode 100644 index 00000000000..4e2ba0aa3a1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2DBadArgs.html @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2DHTML.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2DHTML.html new file mode 100644 index 00000000000..f8153f8d0fd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2DHTML.html @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2DHTMLBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2DHTMLBadArgs.html new file mode 100644 index 00000000000..9f407c79c2e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texImage2DHTMLBadArgs.html @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2D.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2D.html new file mode 100644 index 00000000000..d9ad9c19162 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2D.html @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2DBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2DBadArgs.html new file mode 100644 index 00000000000..a050d87dd1a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2DBadArgs.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2DHTML.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2DHTML.html new file mode 100644 index 00000000000..52a6b275018 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2DHTML.html @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2DHTMLBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2DHTMLBadArgs.html new file mode 100644 index 00000000000..ed1c000e323 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/texSubImage2DHTMLBadArgs.html @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformMatrix.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformMatrix.html new file mode 100644 index 00000000000..4f925452713 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformMatrix.html @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformMatrixBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformMatrixBadArgs.html new file mode 100644 index 00000000000..47851ed9674 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformMatrixBadArgs.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformf.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformf.html new file mode 100644 index 00000000000..570e1ff329c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformf.html @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformfArrayLen1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformfArrayLen1.html new file mode 100644 index 00000000000..af8b260c8bd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformfArrayLen1.html @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformfBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformfBadArgs.html new file mode 100644 index 00000000000..d7a41f486d5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformfBadArgs.html @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformi.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformi.html new file mode 100644 index 00000000000..d6335764a40 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformi.html @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformiBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformiBadArgs.html new file mode 100644 index 00000000000..1cacbf8eca6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/uniformiBadArgs.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttrib.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttrib.html new file mode 100644 index 00000000000..cbcf0b4f6f0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttrib.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttribBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttribBadArgs.html new file mode 100644 index 00000000000..410c9edd8fb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttribBadArgs.html @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttribPointer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttribPointer.html new file mode 100644 index 00000000000..f45a68e6714 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttribPointer.html @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttribPointerBadArgs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttribPointerBadArgs.html new file mode 100644 index 00000000000..20ce6974e93 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/functions/vertexAttribPointerBadArgs.html @@ -0,0 +1,94 @@ + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/glsl/arrayOutOfBounds.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/glsl/arrayOutOfBounds.html new file mode 100644 index 00000000000..1a3bd552ab1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/glsl/arrayOutOfBounds.html @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/glsl/uniformOutOfBounds.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/glsl/uniformOutOfBounds.html new file mode 100644 index 00000000000..b9375b380ae --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/glsl/uniformOutOfBounds.html @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/unit.css b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/unit.css new file mode 100644 index 00000000000..0758b43bd9d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/unit.css @@ -0,0 +1,66 @@ +/* +Tests for the OpenGL ES 2.0 HTML Canvas context + +Copyright (C) 2009 Ilmari Heikkinen + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +*/ +.ok { + color: green; +} +.fail { + color: red; +} +canvas { + display: none; +} +#test-status { + font-size: large; +} + +#test-log { + padding-left: 0.5em; + padding-right: 0.5em; + background: white; + color: black; +} +#test-log > div { + padding-bottom: 0.5em; +} +#test-log h2 { + font-size: 1em; + margin-bottom: 0em; + padding-top: 0.5em; +} +#test-log h3 { + font-size: small; + margin-left: 1.5em; + margin-bottom: 0em; + margin-top: 0.5em; +} +#test-log p { + margin-left: 4em; + font-size: small; + margin-top: 0em; + margin-bottom: 0.2em; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/unit.js b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/unit.js new file mode 100644 index 00000000000..a0614128f0a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/more/unit.js @@ -0,0 +1,993 @@ +/* +Unit testing library for the OpenGL ES 2.0 HTML Canvas context +*/ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* -- plaform specific code -- */ + +// WebKit +if (window.testRunner && !window.layoutTestController) { + window.layoutTestController = window.testRunner; +} + +if (window.layoutTestController) { + layoutTestController.overridePreference("WebKitWebGLEnabled", "1"); + layoutTestController.dumpAsText(); + layoutTestController.waitUntilDone(); + + // The WebKit testing system compares console output. + // Because the output of the WebGL Tests is GPU dependent + // we turn off console messages. + window.console.log = function() { }; + window.console.error = function() { }; + + // RAF doesn't work in LayoutTests. Disable it so the tests will + // use setTimeout instead. + window.requestAnimationFrame = undefined; + window.webkitRequestAnimationFrame = undefined; +} + +if (window.internals) { + window.internals.settings.setWebGLErrorsToConsoleEnabled(false); +} + +/* -- end platform specific code --*/ +Tests = { + autorun : true, + message : null, + delay : 0, + autoinit: true, + + startUnit : function(){ return []; }, + setup : function() { return arguments; }, + teardown : function() {}, + endUnit : function() {} +} + +var __testSuccess__ = true; +var __testFailCount__ = 0; +var __testLog__; +var __backlog__ = []; + +var getUrlOptions = (function() { + var _urlOptionsParsed = false; + var _urlOptions = {}; + return function() { + if (!_urlOptionsParsed) { + var s = window.location.href; + var q = s.indexOf("?"); + var e = s.indexOf("#"); + if (e < 0) { + e = s.length; + } + var query = s.substring(q + 1, e); + var pairs = query.split("&"); + for (var ii = 0; ii < pairs.length; ++ii) { + var keyValue = pairs[ii].split("="); + var key = keyValue[0]; + var value = decodeURIComponent(keyValue[1]); + _urlOptions[key] = value; + } + _urlOptionsParsed = true; + } + + return _urlOptions; + } +})(); + +if (typeof quietMode == 'undefined') { + var quietMode = (function() { + var _quietModeChecked = false; + var _isQuiet = false; + return function() { + if (!_quietModeChecked) { + _isQuiet = (getUrlOptions().quiet == 1); + _quietModeChecked = true; + } + return _isQuiet; + } + })(); +} + +Object.toSource = function(a, seen){ + if (a == null) return "null"; + if (typeof a == 'boolean') return a ? "true" : "false"; + if (typeof a == 'string') return '"' + a.replace(/"/g, '\\"') + '"'; + if (a instanceof HTMLElement) return a.toString(); + if (a.width && a.height && a.data) return "[ImageData]"; + if (a instanceof Array) { + if (!seen) seen = []; + var idx = seen.indexOf(a); + if (idx != -1) return '#'+(idx+1)+'#'; + seen.unshift(a); + var srcs = a.map(function(o){ return Object.toSource(o,seen) }); + var prefix = ''; + idx = seen.indexOf(a); + if (idx != -1) prefix = '#'+(idx+1)+'='; + return prefix + '[' + srcs.join(", ") + ']'; + } + if (typeof a == 'object') { + if (!seen) seen = []; + var idx = seen.indexOf(a); + if (idx != -1) return '#'+(idx+1)+'#'; + seen.unshift(a); + var members = []; + var name; + try { + for (var i in a) { + if (i.search(/^[a-zA-Z0-9]+$/) != -1) + name = i; + else + name = '"' + i.replace(/"/g, '\\"') + '"'; + var ai; + try { ai = a[i]; } + catch(e) { ai = 'null /*ERROR_ACCESSING*/'; } + var s = name + ':' + Object.toSource(ai, seen); + members.push(s); + } + } catch (e) {} + var prefix = ''; + idx = seen.indexOf(a); + if (idx != -1) prefix = '#'+(idx+1)+'='; + return prefix + '{' + members.join(", ") + '}' + } + if (typeof a == 'function') + return '('+a.toString().replace(/\n/g, " ").replace(/\s+/g, " ")+')'; + return a.toString(); +} + +function formatError(e) { + if (window.console) console.log(e); + var pathSegs = location.href.toString().split("/"); + var currentDoc = e.lineNumber != null ? pathSegs[pathSegs.length - 1] : null; + var trace = (e.filename || currentDoc) + ":" + e.lineNumber + (e.trace ? "\n"+e.trace : ""); + return e.message + "\n" + trace; +} + +function runTests() { + var h = document.getElementById('test-status'); + if (h == null) { + h = document.createElement('h1'); + h.id = 'test-status'; + document.body.appendChild(h); + } + h.textContent = ""; + var log = document.getElementById('test-log'); + if (log == null) { + log = document.createElement('div'); + log.id = 'test-log'; + document.body.appendChild(log); + } + while (log.childNodes.length > 0) + log.removeChild(log.firstChild); + + var setup_args = []; + + if (Tests.startUnit != null) { + __testLog__ = document.createElement('div'); + try { + setup_args = Tests.startUnit(); + if (__testLog__.childNodes.length > 0) + log.appendChild(__testLog__); + } catch(e) { + testFailed("startUnit", formatError(e)); + log.appendChild(__testLog__); + printTestStatus(); + return; + } + } + + var testsRun = false; + var allTestsSuccessful = true; + + for (var i in Tests) { + if (i.substring(0,4) != "test") continue; + __testLog__ = document.createElement('div'); + __testSuccess__ = true; + try { + doTestNotify (i); + var args = setup_args; + if (Tests.setup != null) + args = Tests.setup.apply(Tests, setup_args); + Tests[i].apply(Tests, args); + if (Tests.teardown != null) + Tests.teardown.apply(Tests, args); + } + catch (e) { + testFailed(i, e.name, formatError(e)); + } + if (__testSuccess__ == false) { + ++__testFailCount__; + } + var h = document.createElement('h2'); + h.textContent = i; + __testLog__.insertBefore(h, __testLog__.firstChild); + log.appendChild(__testLog__); + allTestsSuccessful = allTestsSuccessful && __testSuccess__ == true; + reportTestResultsToHarness(__testSuccess__, i); + doTestNotify (i+"--"+(__testSuccess__?"OK":"FAIL")); + testsRun = true; + } + + printTestStatus(testsRun); + if (Tests.endUnit != null) { + __testLog__ = document.createElement('div'); + try { + Tests.endUnit.apply(Tests, setup_args); + if (__testLog__.childNodes.length > 0) + log.appendChild(__testLog__); + } catch(e) { + testFailed("endUnit", e.name, formatError(e)); + log.appendChild(__testLog__); + } + } + notifyFinishedToHarness(allTestsSuccessful, "finished tests"); +} + +function doTestNotify(name) { + //try { + // var xhr = new XMLHttpRequest(); + // xhr.open("GET", "http://localhost:8888/"+name, true); + // xhr.send(null); + //} catch(e) {} +} + +function testFailed(assertName, name) { + var d = document.createElement('div'); + var h = document.createElement('h3'); + var d1 = document.createElement("span"); + h.appendChild(d1); + d1.appendChild(document.createTextNode("FAIL: ")); + d1.style.color = "red"; + h.appendChild(document.createTextNode( + name==null ? assertName : name + " (in " + assertName + ")")); + d.appendChild(h); + var args = [] + for (var i=2; il[ii]) { + testFailed("assertArrayEqualsWithEpsilon", name, v, p, l); + return false; + } + } + testPassed("assertArrayEqualsWithEpsilon", name, v, p, l); + return true; +} + +function assertNotEquals(name, v, p) { + if (p == null) { p = v; v = name; name = null; } + if (compare(v, p)) { + testFailed("assertNotEquals", name, v, p) + return false; + } else { + testPassed("assertNotEquals", name, v, p) + return true; + } +} + +function time(elementId, f) { + var s = document.getElementById(elementId); + var t0 = new Date().getTime(); + f(); + var t1 = new Date().getTime(); + s.textContent = 'Elapsed: '+(t1-t0)+' ms'; +} + +function randomFloat () { + // note that in fuzz-testing, this can used as the size of a buffer to allocate. + // so it shouldn't return astronomic values. The maximum value 10000000 is already quite big. + var fac = 1.0; + var r = Math.random(); + if (r < 0.25) + fac = 10; + else if (r < 0.4) + fac = 100; + else if (r < 0.5) + fac = 1000; + else if (r < 0.6) + fac = 100000; + else if (r < 0.7) + fac = 10000000; + else if (r < 0.8) + fac = NaN; + return -0.5*fac + Math.random() * fac; +} +function randomFloatFromRange(lo, hi) { + var r = Math.random(); + if (r < 0.05) + return lo; + else if (r > 0.95) + return hi; + else + return lo + Math.random()*(hi-lo); +} +function randomInt (sz) { + if (sz != null) + return Math.floor(Math.random()*sz); + else + return Math.floor(randomFloat()); +} +function randomIntFromRange(lo, hi) { + return Math.floor(randomFloatFromRange(lo, hi)); +} +function randomLength () { + var l = Math.floor(Math.random() * 256); + if (Math.random < 0.5) l = l / 10; + if (Math.random < 0.3) l = l / 10; + return l; +} +function randomSmallIntArray () { + var l = randomLength(); + var s = new Array(l); + for (var i=0; i + + + + +WebGL GLSL conformance test: abs_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_frag_xvary.frag new file mode 100644 index 00000000000..6bea689383e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 2.0 * (color.r - 0.5); + gl_FragColor = vec4(abs(c), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..af41608172b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_frag_xvary_ref.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 2.0 * (color.r - 0.5); + if(c < 0.0) c *= -1.0; + + gl_FragColor = vec4(c, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_vert_xvary.vert new file mode 100644 index 00000000000..ab995eeb539 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 2.0 * (gtf_Color.r - 0.5); + color = vec4(abs(c), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..b6cd22e5060 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_float_vert_xvary_ref.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 2.0 * (gtf_Color.r - 0.5); + if(c < 0.0) c *= -1.0; + + color = vec4(c, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_frag_xvary.frag new file mode 100644 index 00000000000..5dd0df27b0b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 2.0 * (color.rg - 0.5); + gl_FragColor = vec4(abs(c), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..043273bca43 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_frag_xvary_ref.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 2.0 * (color.rg - 0.5); + if((c[0] < 0.0)) c[0] *= -1.0; + if((c[1] < 0.0)) c[1] *= -1.0; + + gl_FragColor = vec4(c, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_vert_xvary.vert new file mode 100644 index 00000000000..391b243348b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 2.0 * (gtf_Color.rg - 0.5); + color = vec4(abs(c), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..0e0cf0076eb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec2_vert_xvary_ref.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 2.0 * (gtf_Color.rg - 0.5); + if((c[0] < 0.0)) c[0] *= -1.0; + if((c[1] < 0.0)) c[1] *= -1.0; + + color = vec4(c, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_frag_xvary.frag new file mode 100644 index 00000000000..3c61c301c94 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4(abs(c), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..91ea0ccf027 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_frag_xvary_ref.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 2.0 * (color.rgb - 0.5); + if((c[0] < 0.0)) c[0] *= -1.0; + if((c[1] < 0.0)) c[1] *= -1.0; + if((c[2] < 0.0)) c[2] *= -1.0; + + + gl_FragColor = vec4(c, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_vert_xvary.vert new file mode 100644 index 00000000000..7b0098d09ac --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 2.0 * (gtf_Color.rgb - 0.5); + color = vec4(abs(c), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..29798b28afd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/abs_vec3_vert_xvary_ref.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 2.0 * (gtf_Color.rgb - 0.5); + if((c[0] < 0.0)) c[0] *= -1.0; + if((c[1] < 0.0)) c[1] *= -1.0; + if((c[2] < 0.0)) c[2] *= -1.0; + + color = vec4(c, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/input.run.txt new file mode 100644 index 00000000000..ebf5dc91f19 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/abs/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +abs_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_001_to_006.html new file mode 100644 index 00000000000..abb63b7d453 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: acos_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_frag_xvary.frag new file mode 100644 index 00000000000..a1a2dc79376 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 2.0 * (color.r - 0.5); + gl_FragColor = vec4(acos(c) / M_PI, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..c4079a51f31 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_frag_xvary_ref.frag @@ -0,0 +1,111 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +/* The following files are direct copies of each other: + * + * GL/acos/acos_float_frag_xvary_ref.frag + * GL/asin/asin_float_frag_xvary_ref.frag + * + * Care should be taken to apply any changes to both. Only the last + * line where gl_FragColor is assigned should be different. + */ + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +float lerp(float a, float b, float s) +{ + return a + (b - a) * s; +} + +void main (void) +{ + float asinValues[17]; + asinValues[0] = -1.5708; + asinValues[1] = -1.06544; + asinValues[2] = -0.848062; + asinValues[3] = -0.675132; + asinValues[4] = -0.523599; + asinValues[5] = -0.384397; + asinValues[6] = -0.25268; + asinValues[7] = -0.125328; + asinValues[8] = 0.0; + asinValues[9] = 0.125328; + asinValues[10] = 0.25268; + asinValues[11] = 0.384397; + asinValues[12] = 0.523599; + asinValues[13] = 0.675132; + asinValues[14] = 0.848062; + asinValues[15] = 1.06544; + asinValues[16] = 1.5708; + + const float M_PI = 3.14159265358979323846; + float c = 2.0 * (color.r - 0.5); + + float arrVal = (c + 1.0) * 8.0; + int arr0 = int(floor(arrVal)); + float weight = arrVal - floor(arrVal); + float asin_c = 0.0; + + if (arr0 == 0) + asin_c = lerp(asinValues[0], asinValues[1], weight); + else if (arr0 == 1) + asin_c = lerp(asinValues[1], asinValues[2], weight); + else if (arr0 == 2) + asin_c = lerp(asinValues[2], asinValues[3], weight); + else if (arr0 == 3) + asin_c = lerp(asinValues[3], asinValues[4], weight); + else if (arr0 == 4) + asin_c = lerp(asinValues[4], asinValues[5], weight); + else if (arr0 == 5) + asin_c = lerp(asinValues[5], asinValues[6], weight); + else if (arr0 == 6) + asin_c = lerp(asinValues[6], asinValues[7], weight); + else if (arr0 == 7) + asin_c = lerp(asinValues[7], asinValues[8], weight); + else if (arr0 == 8) + asin_c = lerp(asinValues[8], asinValues[9], weight); + else if (arr0 == 9) + asin_c = lerp(asinValues[9], asinValues[10], weight); + else if (arr0 == 10) + asin_c = lerp(asinValues[10], asinValues[11], weight); + else if (arr0 == 11) + asin_c = lerp(asinValues[11], asinValues[12], weight); + else if (arr0 == 12) + asin_c = lerp(asinValues[12], asinValues[13], weight); + else if (arr0 == 13) + asin_c = lerp(asinValues[13], asinValues[14], weight); + else if (arr0 == 14) + asin_c = lerp(asinValues[14], asinValues[15], weight); + else if (arr0 == 15) + asin_c = lerp(asinValues[15], asinValues[16], weight); + else if (arr0 == 16) + asin_c = asinValues[16]; + + // acos(x) = PI/2 - asin(x) + gl_FragColor = vec4(0.5 - asin_c / M_PI, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_vert_xvary.vert new file mode 100644 index 00000000000..79269d10e26 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 2.0 * (gtf_Color.r - 0.5); + color = vec4(acos(c) / M_PI, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..8e05e26cf45 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_float_vert_xvary_ref.vert @@ -0,0 +1,58 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 2.0 * (gtf_Color.r - 0.5); + + float acos_c = 0.0; + float scale = 1.0; + float sign = 1.0; + + // pow can't handle negative numbers so take advantage of symmetry + if(c < 0.0) + { + sign = -1.0; + c *= -1.0; + } + + // Taylors series expansion for acos + // 1000/2 iterations necessary to get the accuracy with this method + for(int i = 1; i < 1000; i += 2) + { + acos_c += scale * pow(c, float(i)) / float(i); + scale *= float(i) / float(i + 1); + } + acos_c = M_PI / 2.0 - sign * acos_c; + + color = vec4(acos_c / M_PI, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_frag_xvary.frag new file mode 100644 index 00000000000..e2204d1f786 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * (color.rg - 0.5); + gl_FragColor = vec4(acos(c) / M_PI, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..d48846ed34f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_frag_xvary_ref.frag @@ -0,0 +1,147 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +/* The following files are direct copies of each other: + * + * GL/acos/acos_vec2_frag_xvary_ref.frag + * GL/asin/asin_vec2_frag_xvary_ref.frag + * + * Care should be taken to apply any changes to both. Only the last + * line where gl_FragColor is assigned should be different. + */ + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +float lerp(float a, float b, float s) +{ + return a + (b - a) * s; +} + +void main (void) +{ + float asinValues[17]; + asinValues[0] = -1.5708; + asinValues[1] = -1.06544; + asinValues[2] = -0.848062; + asinValues[3] = -0.675132; + asinValues[4] = -0.523599; + asinValues[5] = -0.384397; + asinValues[6] = -0.25268; + asinValues[7] = -0.125328; + asinValues[8] = 0.0; + asinValues[9] = 0.125328; + asinValues[10] = 0.25268; + asinValues[11] = 0.384397; + asinValues[12] = 0.523599; + asinValues[13] = 0.675132; + asinValues[14] = 0.848062; + asinValues[15] = 1.06544; + asinValues[16] = 1.5708; + + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * (color.rg - 0.5); + + vec2 arrVal = (c + vec2(1.0, 1.0)) * 8.0; + int arr0x = int(floor(arrVal.x)); + int arr0y = int(floor(arrVal.y)); + vec2 weight = arrVal - floor(arrVal); + vec2 asin_c = vec2(0.0); + + if (arr0x == 0) + asin_c.x = lerp(asinValues[0], asinValues[1], weight.x); + else if (arr0x == 1) + asin_c.x = lerp(asinValues[1], asinValues[2], weight.x); + else if (arr0x == 2) + asin_c.x = lerp(asinValues[2], asinValues[3], weight.x); + else if (arr0x == 3) + asin_c.x = lerp(asinValues[3], asinValues[4], weight.x); + else if (arr0x == 4) + asin_c.x = lerp(asinValues[4], asinValues[5], weight.x); + else if (arr0x == 5) + asin_c.x = lerp(asinValues[5], asinValues[6], weight.x); + else if (arr0x == 6) + asin_c.x = lerp(asinValues[6], asinValues[7], weight.x); + else if (arr0x == 7) + asin_c.x = lerp(asinValues[7], asinValues[8], weight.x); + else if (arr0x == 8) + asin_c.x = lerp(asinValues[8], asinValues[9], weight.x); + else if (arr0x == 9) + asin_c.x = lerp(asinValues[9], asinValues[10], weight.x); + else if (arr0x == 10) + asin_c.x = lerp(asinValues[10], asinValues[11], weight.x); + else if (arr0x == 11) + asin_c.x = lerp(asinValues[11], asinValues[12], weight.x); + else if (arr0x == 12) + asin_c.x = lerp(asinValues[12], asinValues[13], weight.x); + else if (arr0x == 13) + asin_c.x = lerp(asinValues[13], asinValues[14], weight.x); + else if (arr0x == 14) + asin_c.x = lerp(asinValues[14], asinValues[15], weight.x); + else if (arr0x == 15) + asin_c.x = lerp(asinValues[15], asinValues[16], weight.x); + else if (arr0x == 16) + asin_c.x = asinValues[16]; + + if (arr0y == 0) + asin_c.y = lerp(asinValues[0], asinValues[1], weight.y); + else if (arr0y == 1) + asin_c.y = lerp(asinValues[1], asinValues[2], weight.y); + else if (arr0y == 2) + asin_c.y = lerp(asinValues[2], asinValues[3], weight.y); + else if (arr0y == 3) + asin_c.y = lerp(asinValues[3], asinValues[4], weight.y); + else if (arr0y == 4) + asin_c.y = lerp(asinValues[4], asinValues[5], weight.y); + else if (arr0y == 5) + asin_c.y = lerp(asinValues[5], asinValues[6], weight.y); + else if (arr0y == 6) + asin_c.y = lerp(asinValues[6], asinValues[7], weight.y); + else if (arr0y == 7) + asin_c.y = lerp(asinValues[7], asinValues[8], weight.y); + else if (arr0y == 8) + asin_c.y = lerp(asinValues[8], asinValues[9], weight.y); + else if (arr0y == 9) + asin_c.y = lerp(asinValues[9], asinValues[10], weight.y); + else if (arr0y == 10) + asin_c.y = lerp(asinValues[10], asinValues[11], weight.y); + else if (arr0y == 11) + asin_c.y = lerp(asinValues[11], asinValues[12], weight.y); + else if (arr0y == 12) + asin_c.y = lerp(asinValues[12], asinValues[13], weight.y); + else if (arr0y == 13) + asin_c.y = lerp(asinValues[13], asinValues[14], weight.y); + else if (arr0y == 14) + asin_c.y = lerp(asinValues[14], asinValues[15], weight.y); + else if (arr0y == 15) + asin_c.y = lerp(asinValues[15], asinValues[16], weight.y); + else if (arr0y == 16) + asin_c.y = asinValues[16]; + + // acos(x) = PI/2 - asin(x) + gl_FragColor = vec4(0.5 - asin_c / M_PI, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_vert_xvary.vert new file mode 100644 index 00000000000..c3751ecebb8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * (gtf_Color.rg - 0.5); + color = vec4(acos(c) / M_PI, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..eb6bb5d9692 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec2_vert_xvary_ref.vert @@ -0,0 +1,73 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * (gtf_Color.rg - 0.5); + vec2 acos_c = vec2(0.0); + vec2 scale = vec2(1.0); + vec2 sign = vec2(1.0); + + // pow can't handle negative numbers so take advantage of symmetry + if(c.r < 0.0) + { + sign.r = -1.0; + c.r *= -1.0; + } + + // Taylors series expansion for acos + // 1000/2 iterations necessary to get the accuracy with this method + for(int i = 1; i < 1000; i += 2) + { + acos_c.r += scale.r * pow(c.r, float(i)) / float(i); + scale.r *= float(i) / float(i + 1); + } + acos_c.r = M_PI / 2.0 - sign.r * acos_c.r; + + // pow can't handle negative numbers so take advantage of symmetry + if(c.g < 0.0) + { + sign.g = -1.0; + c.g *= -1.0; + } + + // Taylors series expansion for acos + // 1000/2 iterations necessary to get the accuracy with this method + for(int i = 1; i < 1000; i += 2) + { + acos_c.g += scale.g * pow(c.g, float(i)) / float(i); + scale.g *= float(i) / float(i + 1); + } + acos_c.g = M_PI / 2.0 - sign.g * acos_c.g; + + color = vec4(acos_c / M_PI, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_frag_xvary.frag new file mode 100644 index 00000000000..0c3f1a97627 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4(acos(c) / M_PI, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..b0cac4a471d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_frag_xvary_ref.frag @@ -0,0 +1,183 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +/* The following files are direct copies of each other: + * + * GL/acos/acos_vec3_frag_xvary_ref.frag + * GL/asin/asin_vec3_frag_xvary_ref.frag + * + * Care should be taken to apply any changes to both. Only the last + * line where gl_FragColor is assigned should be different. + */ + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +float lerp(float a, float b, float s) +{ + return a + (b - a) * s; +} + +void main (void) +{ + float asinValues[17]; + asinValues[0] = -1.5708; + asinValues[1] = -1.06544; + asinValues[2] = -0.848062; + asinValues[3] = -0.675132; + asinValues[4] = -0.523599; + asinValues[5] = -0.384397; + asinValues[6] = -0.25268; + asinValues[7] = -0.125328; + asinValues[8] = 0.0; + asinValues[9] = 0.125328; + asinValues[10] = 0.25268; + asinValues[11] = 0.384397; + asinValues[12] = 0.523599; + asinValues[13] = 0.675132; + asinValues[14] = 0.848062; + asinValues[15] = 1.06544; + asinValues[16] = 1.5708; + + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * (color.rgb - 0.5); + + vec3 arrVal = (c + vec3(1.0, 1.0, 1.0)) * 8.0; + int arr0x = int(floor(arrVal.x)); + int arr0y = int(floor(arrVal.y)); + int arr0z = int(floor(arrVal.z)); + vec3 weight = arrVal - floor(arrVal); + vec3 asin_c = vec3(0.0); + + if (arr0x == 0) + asin_c.x = lerp(asinValues[0], asinValues[1], weight.x); + else if (arr0x == 1) + asin_c.x = lerp(asinValues[1], asinValues[2], weight.x); + else if (arr0x == 2) + asin_c.x = lerp(asinValues[2], asinValues[3], weight.x); + else if (arr0x == 3) + asin_c.x = lerp(asinValues[3], asinValues[4], weight.x); + else if (arr0x == 4) + asin_c.x = lerp(asinValues[4], asinValues[5], weight.x); + else if (arr0x == 5) + asin_c.x = lerp(asinValues[5], asinValues[6], weight.x); + else if (arr0x == 6) + asin_c.x = lerp(asinValues[6], asinValues[7], weight.x); + else if (arr0x == 7) + asin_c.x = lerp(asinValues[7], asinValues[8], weight.x); + else if (arr0x == 8) + asin_c.x = lerp(asinValues[8], asinValues[9], weight.x); + else if (arr0x == 9) + asin_c.x = lerp(asinValues[9], asinValues[10], weight.x); + else if (arr0x == 10) + asin_c.x = lerp(asinValues[10], asinValues[11], weight.x); + else if (arr0x == 11) + asin_c.x = lerp(asinValues[11], asinValues[12], weight.x); + else if (arr0x == 12) + asin_c.x = lerp(asinValues[12], asinValues[13], weight.x); + else if (arr0x == 13) + asin_c.x = lerp(asinValues[13], asinValues[14], weight.x); + else if (arr0x == 14) + asin_c.x = lerp(asinValues[14], asinValues[15], weight.x); + else if (arr0x == 15) + asin_c.x = lerp(asinValues[15], asinValues[16], weight.x); + else if (arr0x == 16) + asin_c.x = asinValues[16]; + + if (arr0y == 0) + asin_c.y = lerp(asinValues[0], asinValues[1], weight.y); + else if (arr0y == 1) + asin_c.y = lerp(asinValues[1], asinValues[2], weight.y); + else if (arr0y == 2) + asin_c.y = lerp(asinValues[2], asinValues[3], weight.y); + else if (arr0y == 3) + asin_c.y = lerp(asinValues[3], asinValues[4], weight.y); + else if (arr0y == 4) + asin_c.y = lerp(asinValues[4], asinValues[5], weight.y); + else if (arr0y == 5) + asin_c.y = lerp(asinValues[5], asinValues[6], weight.y); + else if (arr0y == 6) + asin_c.y = lerp(asinValues[6], asinValues[7], weight.y); + else if (arr0y == 7) + asin_c.y = lerp(asinValues[7], asinValues[8], weight.y); + else if (arr0y == 8) + asin_c.y = lerp(asinValues[8], asinValues[9], weight.y); + else if (arr0y == 9) + asin_c.y = lerp(asinValues[9], asinValues[10], weight.y); + else if (arr0y == 10) + asin_c.y = lerp(asinValues[10], asinValues[11], weight.y); + else if (arr0y == 11) + asin_c.y = lerp(asinValues[11], asinValues[12], weight.y); + else if (arr0y == 12) + asin_c.y = lerp(asinValues[12], asinValues[13], weight.y); + else if (arr0y == 13) + asin_c.y = lerp(asinValues[13], asinValues[14], weight.y); + else if (arr0y == 14) + asin_c.y = lerp(asinValues[14], asinValues[15], weight.y); + else if (arr0y == 15) + asin_c.y = lerp(asinValues[15], asinValues[16], weight.y); + else if (arr0y == 16) + asin_c.y = asinValues[16]; + + if (arr0z == 0) + asin_c.z = lerp(asinValues[0], asinValues[1], weight.z); + else if (arr0z == 1) + asin_c.z = lerp(asinValues[1], asinValues[2], weight.z); + else if (arr0z == 2) + asin_c.z = lerp(asinValues[2], asinValues[3], weight.z); + else if (arr0z == 3) + asin_c.z = lerp(asinValues[3], asinValues[4], weight.z); + else if (arr0z == 4) + asin_c.z = lerp(asinValues[4], asinValues[5], weight.z); + else if (arr0z == 5) + asin_c.z = lerp(asinValues[5], asinValues[6], weight.z); + else if (arr0z == 6) + asin_c.z = lerp(asinValues[6], asinValues[7], weight.z); + else if (arr0z == 7) + asin_c.z = lerp(asinValues[7], asinValues[8], weight.z); + else if (arr0z == 8) + asin_c.z = lerp(asinValues[8], asinValues[9], weight.z); + else if (arr0z == 9) + asin_c.z = lerp(asinValues[9], asinValues[10], weight.z); + else if (arr0z == 10) + asin_c.z = lerp(asinValues[10], asinValues[11], weight.z); + else if (arr0z == 11) + asin_c.z = lerp(asinValues[11], asinValues[12], weight.z); + else if (arr0z == 12) + asin_c.z = lerp(asinValues[12], asinValues[13], weight.z); + else if (arr0z == 13) + asin_c.z = lerp(asinValues[13], asinValues[14], weight.z); + else if (arr0z == 14) + asin_c.z = lerp(asinValues[14], asinValues[15], weight.z); + else if (arr0z == 15) + asin_c.z = lerp(asinValues[15], asinValues[16], weight.z); + else if (arr0z == 16) + asin_c.z = asinValues[16]; + + // acos(x) = PI/2 - asin(x) + gl_FragColor = vec4(0.5 - asin_c / M_PI, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_vert_xvary.vert new file mode 100644 index 00000000000..5bc077388ec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * (gtf_Color.rgb - 0.5); + color = vec4(acos(c) / M_PI, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..a382a457359 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/acos_vec3_vert_xvary_ref.vert @@ -0,0 +1,89 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * (gtf_Color.rgb - 0.5); + vec3 acos_c = vec3(0.0); + vec3 scale = vec3(1.0); + vec3 sign = vec3(1.0); + + // pow can't handle negative numbers so take advantage of symmetry + if(c.r < 0.0) + { + sign.r = -1.0; + c.r *= -1.0; + } + + // Taylors series expansion for acos + // 1000/2 iterations necessary to get the accuracy with this method + for(int i = 1; i < 1000; i += 2) + { + acos_c.r += scale.r * pow(c.r, float(i)) / float(i); + scale.r *= float(i) / float(i + 1); + } + acos_c.r = M_PI / 2.0 - sign.r * acos_c.r; + + // pow can't handle negative numbers so take advantage of symmetry + if(c.g < 0.0) + { + sign.g = -1.0; + c.g *= -1.0; + } + + // Taylors series expansion for acos + // 1000/2 iterations necessary to get the accuracy with this method + for(int i = 1; i < 1000; i += 2) + { + acos_c.g += scale.g * pow(c.g, float(i)) / float(i); + scale.g *= float(i) / float(i + 1); + } + acos_c.g = M_PI / 2.0 - sign.g * acos_c.g; + + // pow can't handle negative numbers so take advantage of symmetry + if(c.b < 0.0) + { + sign.b = -1.0; + c.b *= -1.0; + } + + // Taylors series expansion for acos + // 1000/2 iterations necessary to get the accuracy with this method + for(int i = 1; i < 1000; i += 2) + { + acos_c.b += scale.b * pow(c.b, float(i)) / float(i); + scale.b *= float(i) / float(i + 1); + } + acos_c.b = M_PI / 2.0 - sign.b * acos_c.b; + + color = vec4(acos_c / M_PI, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/input.run.txt new file mode 100644 index 00000000000..fc7eedaa08b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/acos/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +acos_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_001_to_004.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_001_to_004.html new file mode 100644 index 00000000000..226d9c0825b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_001_to_004.html @@ -0,0 +1,105 @@ + + + + + +WebGL GLSL conformance test: all_001_to_004.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_frag.frag new file mode 100644 index 00000000000..0e3071418a8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(4.0 * color.rg); // 3/4 true, 1/4 false + gl_FragColor = vec4(vec3(all(bvec2(c))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_frag_ref.frag new file mode 100644 index 00000000000..7e760e76a9e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_frag_ref.frag @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bool _all(in bvec2 a) +{ + bool temp = true; + + if(!a[0]) temp = false; + if(!a[1]) temp = false; + + return temp; +} + +void main (void) +{ + vec2 c = floor(4.0 * color.rg); // 3/4 true, 1/4 false + gl_FragColor = vec4(vec3(_all(bvec2(c))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_vert.vert new file mode 100644 index 00000000000..6beab14c591 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_vert.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(4.0 * gtf_Color.rg); // 3/4 true, 1/4 false + color = vec4(vec3(all(bvec2(c))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_vert_ref.vert new file mode 100644 index 00000000000..e4f5071b120 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec2_vert_ref.vert @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bool _all(in bvec2 a) +{ + bool temp = true; + + if(!a[0]) temp = false; + if(!a[1]) temp = false; + + return temp; +} + +void main (void) +{ + vec2 c = floor(4.0 * gtf_Color.rg); // 3/4 true, 1/4 false + color = vec4(vec3(_all(bvec2(c))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_frag.frag new file mode 100644 index 00000000000..bab07bbbc4e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(4.0 * color.rgb); // 3/4 true, 1/4 false + gl_FragColor = vec4(vec3(all(bvec3(c))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_frag_ref.frag new file mode 100644 index 00000000000..a4e5a568cc6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_frag_ref.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bool _all(in bvec3 a) +{ + bool temp = true; + + if(!a[0]) temp = false; + if(!a[1]) temp = false; + if(!a[2]) temp = false; + + return temp; +} + +void main (void) +{ + vec3 c = floor(4.0 * color.rgb); // 3/4 true, 1/4 false + gl_FragColor = vec4(vec3(_all(bvec3(c))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_vert.vert new file mode 100644 index 00000000000..657970df4b7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_vert.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(4.0 * gtf_Color.rgb); // 3/4 true, 1/4 false + color = vec4(vec3(all(bvec3(c))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_vert_ref.vert new file mode 100644 index 00000000000..c16ff823663 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/all_bvec3_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bool _all(in bvec3 a) +{ + bool temp = true; + + if(!a[0]) temp = false; + if(!a[1]) temp = false; + if(!a[2]) temp = false; + + return temp; +} + +void main (void) +{ + vec3 c = floor(4.0 * gtf_Color.rgb); // 3/4 true, 1/4 false + color = vec4(vec3(_all(bvec3(c))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/input.run.txt new file mode 100644 index 00000000000..420ac35bcd2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/all/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +all_001_to_004.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_001_to_004.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_001_to_004.html new file mode 100644 index 00000000000..53bd5a86adb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_001_to_004.html @@ -0,0 +1,105 @@ + + + + + +WebGL GLSL conformance test: any_001_to_004.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_frag.frag new file mode 100644 index 00000000000..83a21f61aab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(1.5 * color.rg); // 1/3 true, 2/3 false + gl_FragColor = vec4(vec3(any(bvec2(c))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_frag_ref.frag new file mode 100644 index 00000000000..3df52709886 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_frag_ref.frag @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bool _any(in bvec2 a) +{ + bool temp = false; + + if(a[0]) temp = true; + if(a[1]) temp = true; + + return temp; +} + +void main (void) +{ + vec2 c = floor(1.5 * color.rg); // 1/3 true, 2/3 false + gl_FragColor = vec4(vec3(_any(bvec2(c))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_vert.vert new file mode 100644 index 00000000000..1388eda2eb0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_vert.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(1.5 * gtf_Color.rg); // 1/3 true, 2/3 false + color = vec4(vec3(any(bvec2(c))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_vert_ref.vert new file mode 100644 index 00000000000..d39695746c9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec2_vert_ref.vert @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bool _any(in bvec2 a) +{ + bool temp = false; + + if(a[0]) temp = true; + if(a[1]) temp = true; + + return temp; +} + +void main (void) +{ + vec2 c = floor(1.5 * gtf_Color.rg); // 1/3 true, 2/3 false + color = vec4(vec3(_any(bvec2(c))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_frag.frag new file mode 100644 index 00000000000..ba870149661 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(1.5 * color.rgb); // 1/3 true, 2/3 false + gl_FragColor = vec4(vec3(any(bvec3(c))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_frag_ref.frag new file mode 100644 index 00000000000..899a204be3e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_frag_ref.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bool _any(in bvec3 a) +{ + bool temp = false; + + if(a[0]) temp = true; + if(a[1]) temp = true; + if(a[2]) temp = true; + + return temp; +} + +void main (void) +{ + vec3 c = floor(1.5 * color.rgb); // 1/3 true, 2/3 false + gl_FragColor = vec4(vec3(_any(bvec3(c))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_vert.vert new file mode 100644 index 00000000000..b7394346057 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_vert.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(1.5 * gtf_Color.rgb); // 1/3 true, 2/3 false + color = vec4(vec3(any(bvec3(c))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_vert_ref.vert new file mode 100644 index 00000000000..87bf200c638 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/any_bvec3_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bool _any(in bvec3 a) +{ + bool temp = false; + + if(a[0]) temp = true; + if(a[1]) temp = true; + if(a[2]) temp = true; + + return temp; +} + +void main (void) +{ + vec3 c = floor(1.5 * gtf_Color.rgb); // 1/3 true, 2/3 false + color = vec4(vec3(_any(bvec3(c))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/input.run.txt new file mode 100644 index 00000000000..6ac42406768 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/any/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +any_001_to_004.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/array_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/array_001_to_006.html new file mode 100644 index 00000000000..acb3839137a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/array_001_to_006.html @@ -0,0 +1,223 @@ + + + + + +WebGL GLSL conformance test: array_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_empty_array_float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_empty_array_float_frag.frag new file mode 100644 index 00000000000..015a4c5bc3b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_empty_array_float_frag.frag @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int i=0; + float new_mad[2]; + float gray = 0.0; + + new_mad[0]=float(1); + new_mad[1]=float(2); + + if( (new_mad[0] == 1.0) && (new_mad[1] == 2.0) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray,gray , gray, 1.0); + +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_empty_array_float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_empty_array_float_vert.vert new file mode 100644 index 00000000000..90c492550e9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_empty_array_float_vert.vert @@ -0,0 +1,44 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int i=0; + float new_mad[2]; + float gray = 0.0; + + new_mad[0]=float(1); + new_mad[1]=float(2); + + if( (new_mad[0] == 1.0) && (new_mad[1] == 2.0) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_uniform_array_float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_uniform_array_float_frag.frag new file mode 100644 index 00000000000..24c17e59d63 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_uniform_array_float_frag.frag @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +uniform float new_mad2[2]; + +void main (void) +{ + int i=0; + float new_mad[2]; + float gray = 0.0; + + new_mad[0]=new_mad2[0]; + new_mad[1]=new_mad2[1]; + + if( (new_mad[0] == 45.0) && (new_mad[1] == 14.0) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_uniform_array_float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_uniform_array_float_vert.vert new file mode 100644 index 00000000000..101c3332061 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/empty_uniform_array_float_vert.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; +const int array_size = 2; +uniform float new_mad2[array_size]; + +void main (void) +{ + int i=0; + float new_mad[array_size]; + float gray = 0.0; + + new_mad[0] = new_mad2[0]; + new_mad[1] = new_mad2[1]; + + if( (new_mad[0] == 45.0) && (new_mad[1] == 14.0) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/initfunc_empty_array_float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/initfunc_empty_array_float_frag.frag new file mode 100644 index 00000000000..ff307840828 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/initfunc_empty_array_float_frag.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + + +void initialise_array(out float array[2], float init_val); +void main (void) +{ + int i=0; + float new_mad[2]; + float gray = 0.0; + initialise_array(new_mad,25.0); + if( (new_mad[0] == 25.0) && (new_mad[1] == 25.0) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +void initialise_array(out float array[2], float init_val) +{ + int i=0; + array[0] = init_val; + array[1] = init_val; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/initfunc_empty_array_float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/initfunc_empty_array_float_vert.vert new file mode 100644 index 00000000000..a84e72dda53 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/initfunc_empty_array_float_vert.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void initialise_array(out float array[2], float init_val); + +void main (void) +{ + int i=0; + float new_mad[2]; + float gray = 0.0; + initialise_array(new_mad,25.0); + if( (new_mad[0] == 25.0) && (new_mad[1] == 25.0) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +void initialise_array(out float array[2], float init_val) +{ + array[0] = init_val; + array[1] = init_val; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/input.run.txt new file mode 100644 index 00000000000..c7cbc1049a7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/array/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +array_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_001_to_006.html new file mode 100644 index 00000000000..078185b1320 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: asin_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_frag_xvary.frag new file mode 100644 index 00000000000..51e81e8aa42 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 2.0 * (color.r - 0.5); + gl_FragColor = vec4(asin(c) / M_PI + 0.5, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..b8da316a2eb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_frag_xvary_ref.frag @@ -0,0 +1,110 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +/* The following files are direct copies of each other: + * + * GL/acos/acos_float_frag_xvary_ref.frag + * GL/asin/asin_float_frag_xvary_ref.frag + * + * Care should be taken to apply any changes to both. Only the last + * line where gl_FragColor is assigned should be different. + */ + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +float lerp(float a, float b, float s) +{ + return a + (b - a) * s; +} + +void main (void) +{ + float asinValues[17]; + asinValues[0] = -1.5708; + asinValues[1] = -1.06544; + asinValues[2] = -0.848062; + asinValues[3] = -0.675132; + asinValues[4] = -0.523599; + asinValues[5] = -0.384397; + asinValues[6] = -0.25268; + asinValues[7] = -0.125328; + asinValues[8] = 0.0; + asinValues[9] = 0.125328; + asinValues[10] = 0.25268; + asinValues[11] = 0.384397; + asinValues[12] = 0.523599; + asinValues[13] = 0.675132; + asinValues[14] = 0.848062; + asinValues[15] = 1.06544; + asinValues[16] = 1.5708; + + const float M_PI = 3.14159265358979323846; + float c = 2.0 * (color.r - 0.5); + + float arrVal = (c + 1.0) * 8.0; + int arr0 = int(floor(arrVal)); + float weight = arrVal - floor(arrVal); + float asin_c = 0.0; + + if (arr0 == 0) + asin_c = lerp(asinValues[0], asinValues[1], weight); + else if (arr0 == 1) + asin_c = lerp(asinValues[1], asinValues[2], weight); + else if (arr0 == 2) + asin_c = lerp(asinValues[2], asinValues[3], weight); + else if (arr0 == 3) + asin_c = lerp(asinValues[3], asinValues[4], weight); + else if (arr0 == 4) + asin_c = lerp(asinValues[4], asinValues[5], weight); + else if (arr0 == 5) + asin_c = lerp(asinValues[5], asinValues[6], weight); + else if (arr0 == 6) + asin_c = lerp(asinValues[6], asinValues[7], weight); + else if (arr0 == 7) + asin_c = lerp(asinValues[7], asinValues[8], weight); + else if (arr0 == 8) + asin_c = lerp(asinValues[8], asinValues[9], weight); + else if (arr0 == 9) + asin_c = lerp(asinValues[9], asinValues[10], weight); + else if (arr0 == 10) + asin_c = lerp(asinValues[10], asinValues[11], weight); + else if (arr0 == 11) + asin_c = lerp(asinValues[11], asinValues[12], weight); + else if (arr0 == 12) + asin_c = lerp(asinValues[12], asinValues[13], weight); + else if (arr0 == 13) + asin_c = lerp(asinValues[13], asinValues[14], weight); + else if (arr0 == 14) + asin_c = lerp(asinValues[14], asinValues[15], weight); + else if (arr0 == 15) + asin_c = lerp(asinValues[15], asinValues[16], weight); + else if (arr0 == 16) + asin_c = asinValues[16]; + + gl_FragColor = vec4(asin_c / M_PI + 0.5, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_vert_xvary.vert new file mode 100644 index 00000000000..d19424fccf2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 2.0 * (gtf_Color.r - 0.5); + color = vec4(asin(c) / M_PI + 0.5, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..d75bae25200 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_float_vert_xvary_ref.vert @@ -0,0 +1,57 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 2.0 * (gtf_Color.r - 0.5); + + float asin_c = 0.0; + float scale = 1.0; + float sign = 1.0; + + // pow can't handle negative numbers so take advantage of symmetry + if(c < 0.0) + { + sign = -1.0; + c *= -1.0; + } + + // Taylors series expansion for asin + // 1000/2 iterations necessary to get the accuracy with this method + for(int i = 1; i < 1000; i += 2) + { + asin_c += scale * pow(c, float(i)) / float(i); + scale *= float(i) / float(i + 1); + } + + color = vec4(sign * asin_c / M_PI + 0.5, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_frag_xvary.frag new file mode 100644 index 00000000000..207ec4ffe68 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * (color.rg - 0.5); + gl_FragColor = vec4(asin(c) / M_PI + 0.5, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..3e221a7ee49 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_frag_xvary_ref.frag @@ -0,0 +1,146 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +/* The following files are direct copies of each other: + * + * GL/acos/acos_vec2_frag_xvary_ref.frag + * GL/asin/asin_vec2_frag_xvary_ref.frag + * + * Care should be taken to apply any changes to both. Only the last + * line where gl_FragColor is assigned should be different. + */ + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +float lerp(float a, float b, float s) +{ + return a + (b - a) * s; +} + +void main (void) +{ + float asinValues[17]; + asinValues[0] = -1.5708; + asinValues[1] = -1.06544; + asinValues[2] = -0.848062; + asinValues[3] = -0.675132; + asinValues[4] = -0.523599; + asinValues[5] = -0.384397; + asinValues[6] = -0.25268; + asinValues[7] = -0.125328; + asinValues[8] = 0.0; + asinValues[9] = 0.125328; + asinValues[10] = 0.25268; + asinValues[11] = 0.384397; + asinValues[12] = 0.523599; + asinValues[13] = 0.675132; + asinValues[14] = 0.848062; + asinValues[15] = 1.06544; + asinValues[16] = 1.5708; + + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * (color.rg - 0.5); + + vec2 arrVal = (c + vec2(1.0, 1.0)) * 8.0; + int arr0x = int(floor(arrVal.x)); + int arr0y = int(floor(arrVal.y)); + vec2 weight = arrVal - floor(arrVal); + vec2 asin_c = vec2(0.0); + + if (arr0x == 0) + asin_c.x = lerp(asinValues[0], asinValues[1], weight.x); + else if (arr0x == 1) + asin_c.x = lerp(asinValues[1], asinValues[2], weight.x); + else if (arr0x == 2) + asin_c.x = lerp(asinValues[2], asinValues[3], weight.x); + else if (arr0x == 3) + asin_c.x = lerp(asinValues[3], asinValues[4], weight.x); + else if (arr0x == 4) + asin_c.x = lerp(asinValues[4], asinValues[5], weight.x); + else if (arr0x == 5) + asin_c.x = lerp(asinValues[5], asinValues[6], weight.x); + else if (arr0x == 6) + asin_c.x = lerp(asinValues[6], asinValues[7], weight.x); + else if (arr0x == 7) + asin_c.x = lerp(asinValues[7], asinValues[8], weight.x); + else if (arr0x == 8) + asin_c.x = lerp(asinValues[8], asinValues[9], weight.x); + else if (arr0x == 9) + asin_c.x = lerp(asinValues[9], asinValues[10], weight.x); + else if (arr0x == 10) + asin_c.x = lerp(asinValues[10], asinValues[11], weight.x); + else if (arr0x == 11) + asin_c.x = lerp(asinValues[11], asinValues[12], weight.x); + else if (arr0x == 12) + asin_c.x = lerp(asinValues[12], asinValues[13], weight.x); + else if (arr0x == 13) + asin_c.x = lerp(asinValues[13], asinValues[14], weight.x); + else if (arr0x == 14) + asin_c.x = lerp(asinValues[14], asinValues[15], weight.x); + else if (arr0x == 15) + asin_c.x = lerp(asinValues[15], asinValues[16], weight.x); + else if (arr0x == 16) + asin_c.x = asinValues[16]; + + if (arr0y == 0) + asin_c.y = lerp(asinValues[0], asinValues[1], weight.y); + else if (arr0y == 1) + asin_c.y = lerp(asinValues[1], asinValues[2], weight.y); + else if (arr0y == 2) + asin_c.y = lerp(asinValues[2], asinValues[3], weight.y); + else if (arr0y == 3) + asin_c.y = lerp(asinValues[3], asinValues[4], weight.y); + else if (arr0y == 4) + asin_c.y = lerp(asinValues[4], asinValues[5], weight.y); + else if (arr0y == 5) + asin_c.y = lerp(asinValues[5], asinValues[6], weight.y); + else if (arr0y == 6) + asin_c.y = lerp(asinValues[6], asinValues[7], weight.y); + else if (arr0y == 7) + asin_c.y = lerp(asinValues[7], asinValues[8], weight.y); + else if (arr0y == 8) + asin_c.y = lerp(asinValues[8], asinValues[9], weight.y); + else if (arr0y == 9) + asin_c.y = lerp(asinValues[9], asinValues[10], weight.y); + else if (arr0y == 10) + asin_c.y = lerp(asinValues[10], asinValues[11], weight.y); + else if (arr0y == 11) + asin_c.y = lerp(asinValues[11], asinValues[12], weight.y); + else if (arr0y == 12) + asin_c.y = lerp(asinValues[12], asinValues[13], weight.y); + else if (arr0y == 13) + asin_c.y = lerp(asinValues[13], asinValues[14], weight.y); + else if (arr0y == 14) + asin_c.y = lerp(asinValues[14], asinValues[15], weight.y); + else if (arr0y == 15) + asin_c.y = lerp(asinValues[15], asinValues[16], weight.y); + else if (arr0y == 16) + asin_c.y = asinValues[16]; + + gl_FragColor = vec4(asin_c / M_PI + 0.5, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_vert_xvary.vert new file mode 100644 index 00000000000..c51ca500f3a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * (gtf_Color.rg - 0.5); + color = vec4(asin(c) / M_PI + 0.5, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..9aeab86bc51 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec2_vert_xvary_ref.vert @@ -0,0 +1,71 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * (gtf_Color.rg - 0.5); + vec2 asin_c = vec2(0.0); + vec2 scale = vec2(1.0); + vec2 sign = vec2(1.0); + + // pow can't handle negative numbers so take advantage of symmetry + if(c.r < 0.0) + { + sign.r = -1.0; + c.r *= -1.0; + } + + // Taylors series expansion for asin + // 1000/2 iterations necessary to get the accuracy with this method + for(int i = 1; i < 1000; i += 2) + { + asin_c.r += scale.r * pow(c.r, float(i)) / float(i); + scale.r *= float(i) / float(i + 1); + } + + // pow can't handle negative numbers so take advantage of symmetry + if(c.g < 0.0) + { + sign.g = -1.0; + c.g *= -1.0; + } + + // Taylors series expansion for asin + // 1000/2 iterations necessary to get the accuracy with this method + for(int i = 1; i < 1000; i += 2) + { + asin_c.g += scale.g * pow(c.g, float(i)) / float(i); + scale.g *= float(i) / float(i + 1); + } + + color = vec4(sign * asin_c / M_PI + 0.5, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_frag_xvary.frag new file mode 100644 index 00000000000..4a7cc79a1b2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4(asin(c) / M_PI + 0.5, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..2eb4a806635 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_frag_xvary_ref.frag @@ -0,0 +1,182 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +/* The following files are direct copies of each other: + * + * GL/acos/acos_vec3_frag_xvary_ref.frag + * GL/asin/asin_vec3_frag_xvary_ref.frag + * + * Care should be taken to apply any changes to both. Only the last + * line where gl_FragColor is assigned should be different. + */ + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +float lerp(float a, float b, float s) +{ + return a + (b - a) * s; +} + +void main (void) +{ + float asinValues[17]; + asinValues[0] = -1.5708; + asinValues[1] = -1.06544; + asinValues[2] = -0.848062; + asinValues[3] = -0.675132; + asinValues[4] = -0.523599; + asinValues[5] = -0.384397; + asinValues[6] = -0.25268; + asinValues[7] = -0.125328; + asinValues[8] = 0.0; + asinValues[9] = 0.125328; + asinValues[10] = 0.25268; + asinValues[11] = 0.384397; + asinValues[12] = 0.523599; + asinValues[13] = 0.675132; + asinValues[14] = 0.848062; + asinValues[15] = 1.06544; + asinValues[16] = 1.5708; + + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * (color.rgb - 0.5); + + vec3 arrVal = (c + vec3(1.0, 1.0, 1.0)) * 8.0; + int arr0x = int(floor(arrVal.x)); + int arr0y = int(floor(arrVal.y)); + int arr0z = int(floor(arrVal.z)); + vec3 weight = arrVal - floor(arrVal); + vec3 asin_c = vec3(0.0); + + if (arr0x == 0) + asin_c.x = lerp(asinValues[0], asinValues[1], weight.x); + else if (arr0x == 1) + asin_c.x = lerp(asinValues[1], asinValues[2], weight.x); + else if (arr0x == 2) + asin_c.x = lerp(asinValues[2], asinValues[3], weight.x); + else if (arr0x == 3) + asin_c.x = lerp(asinValues[3], asinValues[4], weight.x); + else if (arr0x == 4) + asin_c.x = lerp(asinValues[4], asinValues[5], weight.x); + else if (arr0x == 5) + asin_c.x = lerp(asinValues[5], asinValues[6], weight.x); + else if (arr0x == 6) + asin_c.x = lerp(asinValues[6], asinValues[7], weight.x); + else if (arr0x == 7) + asin_c.x = lerp(asinValues[7], asinValues[8], weight.x); + else if (arr0x == 8) + asin_c.x = lerp(asinValues[8], asinValues[9], weight.x); + else if (arr0x == 9) + asin_c.x = lerp(asinValues[9], asinValues[10], weight.x); + else if (arr0x == 10) + asin_c.x = lerp(asinValues[10], asinValues[11], weight.x); + else if (arr0x == 11) + asin_c.x = lerp(asinValues[11], asinValues[12], weight.x); + else if (arr0x == 12) + asin_c.x = lerp(asinValues[12], asinValues[13], weight.x); + else if (arr0x == 13) + asin_c.x = lerp(asinValues[13], asinValues[14], weight.x); + else if (arr0x == 14) + asin_c.x = lerp(asinValues[14], asinValues[15], weight.x); + else if (arr0x == 15) + asin_c.x = lerp(asinValues[15], asinValues[16], weight.x); + else if (arr0x == 16) + asin_c.x = asinValues[16]; + + if (arr0y == 0) + asin_c.y = lerp(asinValues[0], asinValues[1], weight.y); + else if (arr0y == 1) + asin_c.y = lerp(asinValues[1], asinValues[2], weight.y); + else if (arr0y == 2) + asin_c.y = lerp(asinValues[2], asinValues[3], weight.y); + else if (arr0y == 3) + asin_c.y = lerp(asinValues[3], asinValues[4], weight.y); + else if (arr0y == 4) + asin_c.y = lerp(asinValues[4], asinValues[5], weight.y); + else if (arr0y == 5) + asin_c.y = lerp(asinValues[5], asinValues[6], weight.y); + else if (arr0y == 6) + asin_c.y = lerp(asinValues[6], asinValues[7], weight.y); + else if (arr0y == 7) + asin_c.y = lerp(asinValues[7], asinValues[8], weight.y); + else if (arr0y == 8) + asin_c.y = lerp(asinValues[8], asinValues[9], weight.y); + else if (arr0y == 9) + asin_c.y = lerp(asinValues[9], asinValues[10], weight.y); + else if (arr0y == 10) + asin_c.y = lerp(asinValues[10], asinValues[11], weight.y); + else if (arr0y == 11) + asin_c.y = lerp(asinValues[11], asinValues[12], weight.y); + else if (arr0y == 12) + asin_c.y = lerp(asinValues[12], asinValues[13], weight.y); + else if (arr0y == 13) + asin_c.y = lerp(asinValues[13], asinValues[14], weight.y); + else if (arr0y == 14) + asin_c.y = lerp(asinValues[14], asinValues[15], weight.y); + else if (arr0y == 15) + asin_c.y = lerp(asinValues[15], asinValues[16], weight.y); + else if (arr0y == 16) + asin_c.y = asinValues[16]; + + if (arr0z == 0) + asin_c.z = lerp(asinValues[0], asinValues[1], weight.z); + else if (arr0z == 1) + asin_c.z = lerp(asinValues[1], asinValues[2], weight.z); + else if (arr0z == 2) + asin_c.z = lerp(asinValues[2], asinValues[3], weight.z); + else if (arr0z == 3) + asin_c.z = lerp(asinValues[3], asinValues[4], weight.z); + else if (arr0z == 4) + asin_c.z = lerp(asinValues[4], asinValues[5], weight.z); + else if (arr0z == 5) + asin_c.z = lerp(asinValues[5], asinValues[6], weight.z); + else if (arr0z == 6) + asin_c.z = lerp(asinValues[6], asinValues[7], weight.z); + else if (arr0z == 7) + asin_c.z = lerp(asinValues[7], asinValues[8], weight.z); + else if (arr0z == 8) + asin_c.z = lerp(asinValues[8], asinValues[9], weight.z); + else if (arr0z == 9) + asin_c.z = lerp(asinValues[9], asinValues[10], weight.z); + else if (arr0z == 10) + asin_c.z = lerp(asinValues[10], asinValues[11], weight.z); + else if (arr0z == 11) + asin_c.z = lerp(asinValues[11], asinValues[12], weight.z); + else if (arr0z == 12) + asin_c.z = lerp(asinValues[12], asinValues[13], weight.z); + else if (arr0z == 13) + asin_c.z = lerp(asinValues[13], asinValues[14], weight.z); + else if (arr0z == 14) + asin_c.z = lerp(asinValues[14], asinValues[15], weight.z); + else if (arr0z == 15) + asin_c.z = lerp(asinValues[15], asinValues[16], weight.z); + else if (arr0z == 16) + asin_c.z = asinValues[16]; + + gl_FragColor = vec4(asin_c / M_PI + 0.5, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_vert_xvary.vert new file mode 100644 index 00000000000..15f0ce71953 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * (gtf_Color.rgb - 0.5); + color = vec4(asin(c) / M_PI + 0.5, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..648d0ad1805 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/asin_vec3_vert_xvary_ref.vert @@ -0,0 +1,86 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * (gtf_Color.rgb - 0.5); + vec3 asin_c = vec3(0.0); + vec3 scale = vec3(1.0); + vec3 sign = vec3(1.0); + + // pow can't handle negative numbers so take advantage of symmetry + if(c.r < 0.0) + { + sign.r = -1.0; + c.r *= -1.0; + } + + // Taylors series expansion for asin + // 1000/2 iterations necessary to get the accuracy with this method + for(int i = 1; i < 1000; i += 2) + { + asin_c.r += scale.r * pow(c.r, float(i)) / float(i); + scale.r *= float(i) / float(i + 1); + } + + // pow can't handle negative numbers so take advantage of symmetry + if(c.g < 0.0) + { + sign.g = -1.0; + c.g *= -1.0; + } + + // Taylors series expansion for asin + // 1000/2 iterations necessary to get the accuracy with this method + for(int i = 1; i < 1000; i += 2) + { + asin_c.g += scale.g * pow(c.g, float(i)) / float(i); + scale.g *= float(i) / float(i + 1); + } + + // pow can't handle negative numbers so take advantage of symmetry + if(c.b < 0.0) + { + sign.b = -1.0; + c.b *= -1.0; + } + + // Taylors series expansion for asin + // 1000/2 iterations necessary to get the accuracy with this method + for(int i = 1; i < 1000; i += 2) + { + asin_c.b += scale.b * pow(c.b, float(i)) / float(i); + scale.b *= float(i) / float(i + 1); + } + + color = vec4(sign * asin_c / M_PI + 0.5, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/input.run.txt new file mode 100644 index 00000000000..c2de8233ad3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/asin/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +asin_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_001_to_008.html new file mode 100644 index 00000000000..96811c9a934 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_001_to_008.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: atan_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_009_to_012.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_009_to_012.html new file mode 100644 index 00000000000..f82f4fc8c6c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_009_to_012.html @@ -0,0 +1,105 @@ + + + + + +WebGL GLSL conformance test: atan_009_to_012.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvary.frag new file mode 100644 index 00000000000..0b3528ebbed --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 4.0 * 2.0 * (color.r - 0.5); + gl_FragColor = vec4(atan(c) / M_PI + 0.5, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..891ea8dd215 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvary_ref.frag @@ -0,0 +1,72 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 4.0 * 2.0 * (color.r - 0.5); + float atan_c = 0.0; + float scale = 1.0; + float sign = 1.0; + vec4 result; + + if(c < 0.0) + { + sign = -1.0; + c *= -1.0; + } + + if(c <= 1.0) + { + // Taylors series expansion for atan + for(int i = 1; i < 12; i += 2) + { + atan_c += scale * pow(c, float(i)) / float(i); + scale *= -1.0; + } + + result = vec4(sign * atan_c / M_PI + 0.5, 0.0, 0.0, 1.0); + } + else + { + c = 1.0 / c; + + // Taylors series expansion for atan + for(int i = 1; i < 12; i += 2) + { + atan_c += scale * pow(c, float(i)) / float(i); + scale *= -1.0; + } + + result = vec4(sign * (M_PI / 2.0 - atan_c) / M_PI + 0.5, 0.0, 0.0, 1.0); + } + + gl_FragColor = result; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvaryyvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvaryyvary.frag new file mode 100644 index 00000000000..3b8f85e1fa5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvaryyvary.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float x = 2.0 * (color.g - 0.5); + float y = 2.0 * (color.b - 0.5); + const float epsilon = 1.0e-4; + gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); + + // Avoid evaluating atan(0, x) for x < epsilon because it's implementation-dependent + if(x > epsilon || abs(y) > epsilon) + { + gl_FragColor = vec4(atan(y, x) / (2.0 * M_PI) + 0.5, 0.0, 0.0, 1.0); + } +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvaryyvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvaryyvary_ref.frag new file mode 100644 index 00000000000..42fa998db50 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_frag_xvaryyvary_ref.frag @@ -0,0 +1,88 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float x = 2.0 * (color.g - 0.5); + float y = 2.0 * (color.b - 0.5); + float atan_c = 0.0; + float scale = 1.0; + float sign = 1.0; + vec4 result = vec4(0.0, 0.0, 0.0, 1.0); + const float epsilon = 1.0e-4; + + // Avoid evaluating atan(0, x) for x < epsilon because it's implementation-dependent + if(x > epsilon || abs(y) > epsilon) + { + if(x < 0.0 ^^ y < 0.0) + { + sign = -1.0; + } + + if(abs(y) <= abs(x)) + { + float c = abs(y / x); + + // Taylors series expansion for atan + for(int i = 1; i < 12; i += 2) + { + atan_c += scale * pow(c, float(i)) / float(i); + scale *= -1.0; + } + + result = vec4(sign * atan_c / (2.0 * M_PI) + 0.5, 0.0, 0.0, 1.0); + } + else + { + float c = abs(x / y); + + // Taylors series expansion for atan + for(int i = 1; i < 12; i += 2) + { + atan_c += scale * pow(c, float(i)) / float(i); + scale *= -1.0; + } + + result = vec4(sign * (M_PI / 2.0 - atan_c) / (2.0 * M_PI) + 0.5, 0.0, 0.0, 1.0); + } + + if(x < 0.0) + if(y < 0.0) result.r -= 0.5; + else if(y > 0.0) result.r += 0.5; + } + + gl_FragColor = result; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvary.vert new file mode 100644 index 00000000000..ead9e4be173 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 4.0 * 2.0 * (gtf_Color.r - 0.5); + color = vec4(atan(c) / M_PI + 0.5, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..f0dd4e16f34 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvary_ref.vert @@ -0,0 +1,73 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 4.0 * 2.0 * (gtf_Color.r - 0.5); + float atan_c = 0.0; + float scale = 1.0; + float sign = 1.0; + vec4 result; + + if(c < 0.0) + { + sign = -1.0; + c *= -1.0; + } + + if(c <= 1.0) + { + // Taylors series expansion for atan + for(int i = 1; i < 12; i += 2) + { + atan_c += scale * pow(c, float(i)) / float(i); + scale *= -1.0; + } + + result = vec4(sign * atan_c / M_PI + 0.5, 0.0, 0.0, 1.0); + } + else + { + c = 1.0 / c; + + // Taylors series expansion for atan + for(int i = 1; i < 12; i += 2) + { + atan_c += scale * pow(c, float(i)) / float(i); + scale *= -1.0; + } + + result = vec4(sign * (M_PI / 2.0 - atan_c) / M_PI + 0.5, 0.0, 0.0, 1.0); + } + + color = result; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvaryyvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvaryyvary.vert new file mode 100644 index 00000000000..183da334369 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvaryyvary.vert @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float x = 2.0 * (gtf_Color.g - 0.5); + float y = 2.0 * (gtf_Color.b - 0.5); + const float epsilon = 1.0e-4; + color = vec4(0.0, 0.0, 0.0, 1.0); + + // Avoid evaluating atan(0, x) for x < epsilon because it's implementation-dependent + if(x > epsilon || abs(y) > epsilon) + { + color = vec4(atan(y, x) / (2.0 * M_PI) + 0.5, 0.0, 0.0, 1.0); + } + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvaryyvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvaryyvary_ref.vert new file mode 100644 index 00000000000..c45e98f0aec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_float_vert_xvaryyvary_ref.vert @@ -0,0 +1,85 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float x = 2.0 * (gtf_Color.g - 0.5); + float y = 2.0 * (gtf_Color.b - 0.5); + float atan_c = 0.0; + float scale = 1.0; + float sign = 1.0; + vec4 result = vec4(0.0, 0.0, 0.0, 1.0); + const float epsilon = 1.0e-4; + + // Avoid evaluating atan(0, x) for x < epsilon because it's implementation-dependent + if(x > epsilon || abs(y) > epsilon) + { + if(x < 0.0 ^^ y < 0.0) + { + sign = -1.0; + } + + if(abs(y) <= abs(x)) + { + float c = abs(y / x); + + // Taylors series expansion for atan + for(int i = 1; i < 12; i += 2) + { + atan_c += scale * pow(c, float(i)) / float(i); + scale *= -1.0; + } + + result = vec4(sign * atan_c / (2.0 * M_PI) + 0.5, 0.0, 0.0, 1.0); + } + else + { + float c = abs(x / y); + + // Taylors series expansion for atan + for(int i = 1; i < 12; i += 2) + { + atan_c += scale * pow(c, float(i)) / float(i); + scale *= -1.0; + } + + result = vec4(sign * (M_PI / 2.0 - atan_c) / (2.0 * M_PI) + 0.5, 0.0, 0.0, 1.0); + } + + if(x < 0.0) + if(y < 0.0) result.r -= 0.5; + else if(y > 0.0) result.r += 0.5; + } + + color = result; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvary.frag new file mode 100644 index 00000000000..2801a4938e9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 4.0 * 2.0 * (color.rg - 0.5); + gl_FragColor = vec4(atan(c) / M_PI + 0.5, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..96771584f56 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvary_ref.frag @@ -0,0 +1,132 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 4.0 * 2.0 * (color.rg - 0.5); + vec2 atan_c = vec2(0.0); + vec2 scale = vec2(1.0); + vec2 sign = vec2(1.0); + vec4 result = vec4(0.0, 0.0, 0.0, 1.0); + + if(c[0] < 0.0) + { + sign[0] = -1.0; + c[0] *= -1.0; + } + + if(c[0] <= 1.0) + { + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * atan_c[0] / M_PI + 0.5; + } + else + { + c[0] = 1.0 / c[0]; + + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * (M_PI / 2.0 - atan_c[0]) / M_PI + 0.5; + } + + + if(c[1] < 0.0) + { + sign[1] = -1.0; + c[1] *= -1.0; + } + + if(c[1] <= 1.0) + { + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * atan_c[1] / M_PI + 0.5; + } + else + { + c[1] = 1.0 / c[1]; + + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * (M_PI / 2.0 - atan_c[1]) / M_PI + 0.5; + } + + gl_FragColor = result; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvaryyvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvaryyvary.frag new file mode 100644 index 00000000000..c851ff070fc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvaryyvary.frag @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 x = 2.0 * (color.gg - 0.5); + vec2 y = 2.0 * (color.bb - 0.5); + const float epsilon = 1.0e-4; + gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); + + // Avoid evaluating atan(0, x) for x < epsilon because it's implementation-dependent + if(x[0] > epsilon || abs(y[0]) > epsilon) + { + gl_FragColor[0] = atan(y[0], x[0]) / (2.0 * M_PI) + 0.5; + } + + if(x[1] > epsilon || abs(y[1]) > epsilon) + { + gl_FragColor[1] = atan(y[1], x[1]) / (2.0 * M_PI) + 0.5; + } +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvaryyvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvaryyvary_ref.frag new file mode 100644 index 00000000000..0e16fd84da3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_frag_xvaryyvary_ref.frag @@ -0,0 +1,150 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 x = 2.0 * (color.gg - 0.5); + vec2 y = 2.0 * (color.bb - 0.5); + vec2 c; + vec2 atan_c = vec2(0.0); + vec2 scale = vec2(1.0); + vec2 sign = vec2(1.0); + vec4 result = vec4(0.0, 0.0, 0.0, 1.0); + const float epsilon = 1.0e-4; + + // Avoid evaluating atan(0, x) for x < epsilon because it's implementation-dependent + if(x[0] > epsilon || abs(y[0]) > epsilon) + { + if(x[0] < 0.0 ^^ y[0] < 0.0) + { + sign[0] = -1.0; + } + + if(abs(y[0]) <= abs(x[0])) + { + c[0] = abs(y[0] / x[0]); + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * atan_c[0] / (2.0 * M_PI) + 0.5; + } + else + { + c[0] = abs(x[0] / y[0]); + + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * (M_PI / 2.0 - atan_c[0]) / (2.0 * M_PI) + 0.5; + } + + if(x[0] < 0.0) + if(y[0] < 0.0) result[0] -= 0.5; + else if(y[0] > 0.0) result[0] += 0.5; + } + + if(x[1] > epsilon || abs(y[1]) > epsilon) + { + + if(x[1] < 0.0 ^^ y[1] < 0.0) + { + sign[1] = -1.0; + } + + if(abs(y[1]) <= abs(x[1])) + { + c[1] = abs(y[1] / x[1]); + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * atan_c[1] / (2.0 * M_PI) + 0.5; + } + else + { + c[1] = abs(x[1] / y[1]); + + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * (M_PI / 2.0 - atan_c[1]) / (2.0 * M_PI) + 0.5; + } + + if(x[1] < 0.0) + if(y[1] < 0.0) result[1] -= 0.5; + else if(y[1] > 0.0) result[1] += 0.5; + } + + gl_FragColor = result; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvary.vert new file mode 100644 index 00000000000..c9740e5db16 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 4.0 * 2.0 * (gtf_Color.rg - 0.5); + color = vec4(atan(c) / M_PI + 0.5, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..f3ba4ce87ce --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvary_ref.vert @@ -0,0 +1,133 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 4.0 * 2.0 * (gtf_Color.rg - 0.5); + vec2 atan_c = vec2(0.0); + vec2 scale = vec2(1.0); + vec2 sign = vec2(1.0); + vec4 result = vec4(0.0, 0.0, 0.0, 1.0); + + if(c[0] < 0.0) + { + sign[0] = -1.0; + c[0] *= -1.0; + } + + if(c[0] <= 1.0) + { + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * atan_c[0] / M_PI + 0.5; + } + else + { + c[0] = 1.0 / c[0]; + + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * (M_PI / 2.0 - atan_c[0]) / M_PI + 0.5; + } + + + if(c[1] < 0.0) + { + sign[1] = -1.0; + c[1] *= -1.0; + } + + if(c[1] <= 1.0) + { + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * atan_c[1] / M_PI + 0.5; + } + else + { + c[1] = 1.0 / c[1]; + + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * (M_PI / 2.0 - atan_c[1]) / M_PI + 0.5; + } + + color = result; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvaryyvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvaryyvary.vert new file mode 100644 index 00000000000..a56b33c9f18 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvaryyvary.vert @@ -0,0 +1,51 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 x = 2.0 * (gtf_Color.gg - 0.5); + vec2 y = 2.0 * (gtf_Color.bb - 0.5); + const float epsilon = 1.0e-4; + color = vec4(0.0, 0.0, 0.0, 1.0); + + // Avoid evaluating atan(0, x) for x < epsilon because it's implementation-dependent + if(x[0] > epsilon || abs(y[0]) > epsilon) + { + color[0] = atan(y[0], x[0]) / (2.0 * M_PI) + 0.5; + } + + if(x[1] > epsilon || abs(y[1]) > epsilon) + { + color[1] = atan(y[1], x[1]) / (2.0 * M_PI) + 0.5; + } + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvaryyvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvaryyvary_ref.vert new file mode 100644 index 00000000000..790b4a74381 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec2_vert_xvaryyvary_ref.vert @@ -0,0 +1,150 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 x = 2.0 * (gtf_Color.gg - 0.5); + vec2 y = 2.0 * (gtf_Color.bb - 0.5); + vec2 c; + vec2 atan_c = vec2(0.0); + vec2 scale = vec2(1.0); + vec2 sign = vec2(1.0); + vec4 result = vec4(0.0, 0.0, 0.0, 1.0); + const float epsilon = 1.0e-4; + + // Avoid evaluating atan(0, x) for x < epsilon because it's implementation-dependent + if(x[0] > epsilon || abs(y[0]) > epsilon) + { + if(x[0] < 0.0 ^^ y[0] < 0.0) + { + sign[0] = -1.0; + } + + if(abs(y[0]) <= abs(x[0])) + { + c[0] = abs(y[0] / x[0]); + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * atan_c[0] / (2.0 * M_PI) + 0.5; + } + else + { + c[0] = abs(x[0] / y[0]); + + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * (M_PI / 2.0 - atan_c[0]) / (2.0 * M_PI) + 0.5; + } + + if(x[0] < 0.0) + if(y[0] < 0.0) result[0] -= 0.5; + else if(y[0] > 0.0) result[0] += 0.5; + } + + if(x[1] > epsilon || abs(y[1]) > epsilon) + { + if(x[1] < 0.0 ^^ y[1] < 0.0) + { + sign[1] = -1.0; + } + + if(abs(y[1]) <= abs(x[1])) + { + c[1] = abs(y[1] / x[1]); + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * atan_c[1] / (2.0 * M_PI) + 0.5; + } + else + { + c[1] = abs(x[1] / y[1]); + + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * (M_PI / 2.0 - atan_c[1]) / (2.0 * M_PI) + 0.5; + } + + if(x[1] < 0.0) + if(y[1] < 0.0) result[1] -= 0.5; + else if(y[1] > 0.0) result[1] += 0.5; + } + + color = result; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvary.frag new file mode 100644 index 00000000000..281ae2e62d1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 4.0 * 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4(atan(c) / M_PI + 0.5, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..c8484b8dcf1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvary_ref.frag @@ -0,0 +1,178 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 4.0 * 2.0 * (color.rgb - 0.5); + vec3 atan_c = vec3(0.0); + vec3 scale = vec3(1.0); + vec3 sign = vec3(1.0); + vec4 result = vec4(0.0, 0.0, 0.0, 1.0); + + + if(c[0] < 0.0) + { + sign[0] = -1.0; + c[0] *= -1.0; + } + + if(c[0] <= 1.0) + { + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * atan_c[0] / M_PI + 0.5; + } + else + { + c[0] = 1.0 / c[0]; + + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * (M_PI / 2.0 - atan_c[0]) / M_PI + 0.5; + } + + if(c[1] < 0.0) + { + sign[1] = -1.0; + c[1] *= -1.0; + } + + if(c[1] <= 1.0) + { + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * atan_c[1] / M_PI + 0.5; + } + else + { + c[1] = 1.0 / c[1]; + + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * (M_PI / 2.0 - atan_c[1]) / M_PI + 0.5; + } + + + if(c[2] < 0.0) + { + sign[2] = -1.0; + c[2] *= -1.0; + } + + if(c[2] <= 1.0) + { + // Taylors series expansion for atan + atan_c[2] += scale[2] * pow(c[2], float(1)) / float(1); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(3)) / float(3); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(5)) / float(5); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(7)) / float(7); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(9)) / float(9); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(11)) / float(11); + scale[2] *= -1.0; + + result[2] = sign[2] * atan_c[2] / M_PI + 0.5; + } + else + { + c[2] = 1.0 / c[2]; + + // Taylors series expansion for atan + atan_c[2] += scale[2] * pow(c[2], float(1)) / float(1); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(3)) / float(3); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(5)) / float(5); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(7)) / float(7); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(9)) / float(9); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(11)) / float(11); + scale[2] *= -1.0; + + result[2] = sign[2] * (M_PI / 2.0 - atan_c[2]) / M_PI + 0.5; + } + + gl_FragColor = result; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvaryyvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvaryyvary.frag new file mode 100644 index 00000000000..08a18b8a3c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvaryyvary.frag @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 x = 2.0 * (color.ggg - 0.5); + vec3 y = 2.0 * (color.bbb - 0.5); + const float epsilon = 1.0e-4; + gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); + + // Avoid evaluating atan(0, x) for x < epsilon because it's implementation-dependent + if(x[0] > epsilon || abs(y[0]) > epsilon) + { + gl_FragColor[0] = atan(y[0], x[0]) / (2.0 * M_PI) + 0.5; + } + + if(x[1] > epsilon || abs(y[1]) > epsilon) + { + gl_FragColor[1] = atan(y[1], x[1]) / (2.0 * M_PI) + 0.5; + } + + if(x[2] > epsilon || abs(y[2]) > epsilon) + { + gl_FragColor[2] = atan(y[2], x[2]) / (2.0 * M_PI) + 0.5; + } +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvaryyvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvaryyvary_ref.frag new file mode 100644 index 00000000000..9a97bb2bef4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_frag_xvaryyvary_ref.frag @@ -0,0 +1,203 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 x = 2.0 * (color.ggg - 0.5); + vec3 y = 2.0 * (color.bbb - 0.5); + vec3 c; + vec3 atan_c = vec3(0.0); + vec3 scale = vec3(1.0); + vec3 sign = vec3(1.0); + vec4 result = vec4(0.0, 0.0, 0.0, 1.0); + const float epsilon = 1.0e-4; + + // Avoid evaluating atan(0, x) for x < epsilon because it's implementation-dependent + if(x[0] > epsilon || abs(y[0]) > epsilon) + { + if(x[0] < 0.0 ^^ y[0] < 0.0) + { + sign[0] = -1.0; + } + + if(abs(y[0]) <= abs(x[0])) + { + c[0] = abs(y[0] / x[0]); + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * atan_c[0] / (2.0 * M_PI) + 0.5; + } + else + { + c[0] = abs(x[0] / y[0]); + + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * (M_PI / 2.0 - atan_c[0]) / (2.0 * M_PI) + 0.5; + } + + if(x[0] < 0.0) + if(y[0] < 0.0) result[0] -= 0.5; + else if(y[0] > 0.0) result[0] += 0.5; + } + + if(x[1] > epsilon || abs(y[1]) > epsilon) + { + + if(x[1] < 0.0 ^^ y[1] < 0.0) + { + sign[1] = -1.0; + } + + if(abs(y[1]) <= abs(x[1])) + { + c[1] = abs(y[1] / x[1]); + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * atan_c[1] / (2.0 * M_PI) + 0.5; + } + else + { + c[1] = abs(x[1] / y[1]); + + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * (M_PI / 2.0 - atan_c[1]) / (2.0 * M_PI) + 0.5; + } + + if(x[1] < 0.0) + if(y[1] < 0.0) result[1] -= 0.5; + else if(y[1] > 0.0) result[1] += 0.5; + } + + if(x[2] > epsilon || abs(y[2]) > epsilon) + { + + if(x[2] < 0.0 ^^ y[2] < 0.0) + { + sign[2] = -1.0; + } + + if(abs(y[2]) <= abs(x[2])) + { + c[2] = abs(y[2] / x[2]); + // Taylors series expansion for atan + atan_c[2] += scale[2] * pow(c[2], float(1)) / float(1); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(3)) / float(3); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(5)) / float(5); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(7)) / float(7); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(9)) / float(9); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(11)) / float(11); + scale[2] *= -1.0; + + result[2] = sign[2] * atan_c[2] / (2.0 * M_PI) + 0.5; + } + else + { + c[2] = abs(x[2] / y[2]); + + // Taylors series expansion for atan + atan_c[2] += scale[2] * pow(c[2], float(1)) / float(1); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(3)) / float(3); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(5)) / float(5); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(7)) / float(7); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(9)) / float(9); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(11)) / float(11); + scale[2] *= -1.0; + + result[2] = sign[2] * (M_PI / 2.0 - atan_c[2]) / (2.0 * M_PI) + 0.5; + } + + if(x[2] < 0.0) + if(y[2] < 0.0) result[2] -= 0.5; + else if(y[2] > 0.0) result[2] += 0.5; + } + + gl_FragColor = result; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvary.vert new file mode 100644 index 00000000000..ad0d327872b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 4.0 * 2.0 * (gtf_Color.rgb - 0.5); + color = vec4(atan(c) / M_PI + 0.5, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..34a6ca3e918 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvary_ref.vert @@ -0,0 +1,178 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 4.0 * 2.0 * (gtf_Color.rgb - 0.5); + vec3 atan_c = vec3(0.0); + vec3 scale = vec3(1.0); + vec3 sign = vec3(1.0); + vec4 result = vec4(0.0, 0.0, 0.0, 1.0); + + if(c[0] < 0.0) + { + sign[0] = -1.0; + c[0] *= -1.0; + } + + if(c[0] <= 1.0) + { + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * atan_c[0] / M_PI + 0.5; + } + else + { + c[0] = 1.0 / c[0]; + + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * (M_PI / 2.0 - atan_c[0]) / M_PI + 0.5; + } + + + if(c[1] < 0.0) + { + sign[1] = -1.0; + c[1] *= -1.0; + } + + if(c[1] <= 1.0) + { + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * atan_c[1] / M_PI + 0.5; + } + else + { + c[1] = 1.0 / c[1]; + + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * (M_PI / 2.0 - atan_c[1]) / M_PI + 0.5; + } + + if(c[2] < 0.0) + { + sign[2] = -1.0; + c[2] *= -1.0; + } + + if(c[2] <= 1.0) + { + // Taylors series expansion for atan + atan_c[2] += scale[2] * pow(c[2], float(1)) / float(1); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(3)) / float(3); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(5)) / float(5); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(7)) / float(7); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(9)) / float(9); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(11)) / float(11); + scale[2] *= -1.0; + + result[2] = sign[2] * atan_c[2] / M_PI + 0.5; + } + else + { + c[2] = 1.0 / c[2]; + + // Taylors series expansion for atan + atan_c[2] += scale[2] * pow(c[2], float(1)) / float(1); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(3)) / float(3); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(5)) / float(5); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(7)) / float(7); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(9)) / float(9); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(11)) / float(11); + scale[2] *= -1.0; + + result[2] = sign[2] * (M_PI / 2.0 - atan_c[2]) / M_PI + 0.5; + } + + color = result; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvaryyvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvaryyvary.vert new file mode 100644 index 00000000000..1b19a4c2f8a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvaryyvary.vert @@ -0,0 +1,56 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 x = 2.0 * (gtf_Color.ggg - 0.5); + vec3 y = 2.0 * (gtf_Color.bbb - 0.5); + const float epsilon = 1.0e-4; + color = vec4(0.0, 0.0, 0.0, 1.0); + + // Avoid evaluating atan(0, x) for x < epsilon because it's implementation-dependent + if(x[0] > epsilon || abs(y[0]) > epsilon) + { + color[0] = atan(y[0], x[0]) / (2.0 * M_PI) + 0.5; + } + + if(x[1] > epsilon || abs(y[1]) > epsilon) + { + color[1] = atan(y[1], x[1]) / (2.0 * M_PI) + 0.5; + } + + if(x[2] > epsilon || abs(y[2]) > epsilon) + { + color[2] = atan(y[2], x[2]) / (2.0 * M_PI) + 0.5; + } + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvaryyvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvaryyvary_ref.vert new file mode 100644 index 00000000000..d36106f721c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/atan_vec3_vert_xvaryyvary_ref.vert @@ -0,0 +1,202 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 x = 2.0 * (gtf_Color.ggg - 0.5); + vec3 y = 2.0 * (gtf_Color.bbb - 0.5); + vec3 c; + vec3 atan_c = vec3(0.0); + vec3 scale = vec3(1.0); + vec3 sign = vec3(1.0); + vec4 result = vec4(0.0, 0.0, 0.0, 1.0); + const float epsilon = 1.0e-4; + + // Avoid evaluating atan(0, x) for x < epsilon because it's implementation-dependent + if(x[0] > epsilon || abs(y[0]) > epsilon) + { + if(x[0] < 0.0 ^^ y[0] < 0.0) + { + sign[0] = -1.0; + } + + if(abs(y[0]) <= abs(x[0])) + { + c[0] = abs(y[0] / x[0]); + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * atan_c[0] / (2.0 * M_PI) + 0.5; + } + else + { + c[0] = abs(x[0] / y[0]); + + // Taylors series expansion for atan + atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9); + scale[0] *= -1.0; + atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11); + scale[0] *= -1.0; + + result[0] = sign[0] * (M_PI / 2.0 - atan_c[0]) / (2.0 * M_PI) + 0.5; + } + + if(x[0] < 0.0) + if(y[0] < 0.0) result[0] -= 0.5; + else if(y[0] > 0.0) result[0] += 0.5; + } + + if(x[1] > epsilon || abs(y[1]) > epsilon) + { + if(x[1] < 0.0 ^^ y[1] < 0.0) + { + sign[1] = -1.0; + } + + if(abs(y[1]) <= abs(x[1])) + { + c[1] = abs(y[1] / x[1]); + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * atan_c[1] / (2.0 * M_PI) + 0.5; + } + else + { + c[1] = abs(x[1] / y[1]); + + // Taylors series expansion for atan + atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9); + scale[1] *= -1.0; + atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11); + scale[1] *= -1.0; + + result[1] = sign[1] * (M_PI / 2.0 - atan_c[1]) / (2.0 * M_PI) + 0.5; + } + + if(x[1] < 0.0) + if(y[1] < 0.0) result[1] -= 0.5; + else if(y[1] > 0.0) result[1] += 0.5; + } + + if(x[2] > epsilon || abs(y[2]) > epsilon) + { + if(x[2] < 0.0 ^^ y[2] < 0.0) + { + sign[2] = -1.0; + } + + if(abs(y[2]) <= abs(x[2])) + { + c[2] = abs(y[2] / x[2]); + // Taylors series expansion for atan + atan_c[2] += scale[2] * pow(c[2], float(1)) / float(1); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(3)) / float(3); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(5)) / float(5); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(7)) / float(7); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(9)) / float(9); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(11)) / float(11); + scale[2] *= -1.0; + + result[2] = sign[2] * atan_c[2] / (2.0 * M_PI) + 0.5; + } + else + { + c[2] = abs(x[2] / y[2]); + + // Taylors series expansion for atan + atan_c[2] += scale[2] * pow(c[2], float(1)) / float(1); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(3)) / float(3); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(5)) / float(5); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(7)) / float(7); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(9)) / float(9); + scale[2] *= -1.0; + atan_c[2] += scale[2] * pow(c[2], float(11)) / float(11); + scale[2] *= -1.0; + + result[2] = sign[2] * (M_PI / 2.0 - atan_c[2]) / (2.0 * M_PI) + 0.5; + } + + if(x[2] < 0.0) + if(y[2] < 0.0) result[2] -= 0.5; + else if(y[2] > 0.0) result[2] += 0.5; + } + + color = result; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/input.run.txt new file mode 100644 index 00000000000..1c305f21117 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/atan/input.run.txt @@ -0,0 +1,3 @@ +# this file is auto-generated. DO NOT EDIT. +atan_001_to_008.html +atan_009_to_012.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/biConstants_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/biConstants_001_to_008.html new file mode 100644 index 00000000000..362ca8f5539 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/biConstants_001_to_008.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: biConstants_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/biConstants_009_to_016.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/biConstants_009_to_016.html new file mode 100644 index 00000000000..5409dda25a7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/biConstants_009_to_016.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: biConstants_009_to_016.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxCombinedTextureImageUnits_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxCombinedTextureImageUnits_frag.frag new file mode 100644 index 00000000000..94e9c6d0ee0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxCombinedTextureImageUnits_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxCombinedTextureImageUnits is set and that its + // value is greater than or equal to the minimum value. + // Values greater than 8.0 will get clamped to 1.0 or white. + gl_FragColor = vec4(float(gl_MaxCombinedTextureImageUnits) / 8.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxCombinedTextureImageUnits_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxCombinedTextureImageUnits_vert.vert new file mode 100644 index 00000000000..8dcfd2d98f1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxCombinedTextureImageUnits_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxCombinedTextureImageUnits is set and that its + // value is greater than or equal to the minimum value. + // Values greater than 8.0 will get clamped to 1.0 or white. + color = vec4(float(gl_MaxCombinedTextureImageUnits) / 8.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxDrawBuffers_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxDrawBuffers_frag.frag new file mode 100644 index 00000000000..481f76a1560 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxDrawBuffers_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxDrawBuffers is set and that its + // value is greater than or equal to the minimum value. + // Values greater than 1.0 will get clamped to 1.0 or white. + gl_FragColor = vec4(float(gl_MaxDrawBuffers) / 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxDrawBuffers_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxDrawBuffers_vert.vert new file mode 100644 index 00000000000..25cc2b469ca --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxDrawBuffers_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxDrawBuffers is set and that its + // value is greater than or equal to the minimum value. + // Values greater than 1.0 will get clamped to 1.0 or white. + color = vec4(float(gl_MaxDrawBuffers) / 1.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxFragmentUniformVectors_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxFragmentUniformVectors_frag.frag new file mode 100644 index 00000000000..d54198995a6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxFragmentUniformVectors_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxFragmentUniformVectors is set and that its + // value is greater than or equal to the minimum value. + // Values greater than 16.0 will get clamped to 1.0 or white. + gl_FragColor = vec4(float(gl_MaxFragmentUniformVectors) / 16.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxFragmentUniformVectors_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxFragmentUniformVectors_vert.vert new file mode 100644 index 00000000000..f430197c8b2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxFragmentUniformVectors_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxFragmentUniformVectors is set and that its + // value is greater than or equal to the minimum value. + // Values greater than 16.0 will get clamped to 1.0 or white. + color = vec4(float(gl_MaxFragmentUniformVectors) / 16.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxTextureImageUnits_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxTextureImageUnits_frag.frag new file mode 100644 index 00000000000..55b7b20789e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxTextureImageUnits_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxTextureImageUnits is set and that its + // value is greater than or equal to the minimum value. + // Values greater than 8.0 will get clamped to 1.0 or white. + gl_FragColor = vec4(float(gl_MaxTextureImageUnits) / 8.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxTextureImageUnits_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxTextureImageUnits_vert.vert new file mode 100644 index 00000000000..b0851a7292f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxTextureImageUnits_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxTextureImageUnits is set and that its + // value is greater than or equal to the minimum value. + // Values greater than 8.0 will get clamped to 1.0 or white. + color = vec4(float(gl_MaxTextureImageUnits) / 8.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVaryingVectors_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVaryingVectors_frag.frag new file mode 100644 index 00000000000..abd8e8bff66 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVaryingVectors_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxVaryingVectors is set and that its + // value is greater than or equal to the minimum value. + // Values greater than 8.0 will get clamped to 1.0 or white. + gl_FragColor = vec4(float(gl_MaxVaryingVectors) / 8.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVaryingVectors_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVaryingVectors_vert.vert new file mode 100644 index 00000000000..cfb2449cb34 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVaryingVectors_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxVaryingVectors is set and that its + // value is greater than or equal to the minimum value. + // Values greater than 8.0 will get clamped to 1.0 or white. + color = vec4(float(gl_MaxVaryingVectors) / 8.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexAttribs_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexAttribs_frag.frag new file mode 100644 index 00000000000..f839f4c4efd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexAttribs_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxVertexAttribs is set and that its + // value is greater than or equal to the minimum value. + // Values greater than 8.0 will get clamped to 1.0 or white. + gl_FragColor = vec4(float(gl_MaxVertexAttribs) / 8.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexAttribs_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexAttribs_vert.vert new file mode 100644 index 00000000000..ca7742902ae --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexAttribs_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxVertexAttribs is set and that its + // value is greater than or equal to the minimum value. + // Values greater than 8.0 will get clamped to 1.0 or white. + color = vec4(float(gl_MaxVertexAttribs) / 8.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexTextureImageUnits_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexTextureImageUnits_frag.frag new file mode 100644 index 00000000000..946dbd827cc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexTextureImageUnits_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxVertexTextureImageUnits is set and that its + // value is greater than or equal to the minimum value. + if(gl_MaxVertexTextureImageUnits >= 0) + gl_FragColor = vec4(1.0); + else + gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexTextureImageUnits_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexTextureImageUnits_vert.vert new file mode 100644 index 00000000000..28306594d34 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexTextureImageUnits_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxVertexTextureImageUnits is set and that its + // value is greater than or equal to the minimum value. + if(gl_MaxVertexTextureImageUnits >= 0) + color = vec4(1.0); + else + color = vec4(0.0, 0.0, 0.0, 1.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexUniformVectors_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexUniformVectors_frag.frag new file mode 100644 index 00000000000..735c7d0cede --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexUniformVectors_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxVertexUniformVectors is set and that its + // value is greater than or equal to the minimum value. + // Values greater than 128.0 will get clamped to 1.0 or white. + gl_FragColor = vec4(float(gl_MaxVertexUniformVectors) / 128.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexUniformVectors_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexUniformVectors_vert.vert new file mode 100644 index 00000000000..b9e1b338753 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/gl_MaxVertexUniformVectors_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + // This test verifies that gl_MaxVertexUniformVectors is set and that its + // value is greater than or equal to the minimum value. + // Values greater than 128.0 will get clamped to 1.0 or white. + color = vec4(float(gl_MaxVertexUniformVectors) / 128.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/input.run.txt new file mode 100644 index 00000000000..15c403b1a51 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biConstants/input.run.txt @@ -0,0 +1,3 @@ +# this file is auto-generated. DO NOT EDIT. +biConstants_001_to_008.html +biConstants_009_to_016.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/DepthRange_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/DepthRange_frag.frag new file mode 100644 index 00000000000..0dcfe2a9a77 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/DepthRange_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +void main(void) +{ + gl_FragColor = vec4(gl_DepthRange.near, gl_DepthRange.far, gl_DepthRange.diff, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/DepthRange_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/DepthRange_vert.vert new file mode 100644 index 00000000000..6f8288c1ec3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/DepthRange_vert.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main(void) +{ + color = vec4(gl_DepthRange.near, gl_DepthRange.far, gl_DepthRange.diff, 1.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/biuDepthRange_001_to_002.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/biuDepthRange_001_to_002.html new file mode 100644 index 00000000000..d968a2a825b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/biuDepthRange_001_to_002.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: biuDepthRange_001_to_002.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/input.run.txt new file mode 100644 index 00000000000..21f2fd2e19e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/biuDepthRange/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +biuDepthRange_001_to_002.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CG_Data_Types_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CG_Data_Types_frag.frag new file mode 100644 index 00000000000..2fed27f6d2d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CG_Data_Types_frag.frag @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + half h1; // Not a basic type. + half2 h2; // Not a basic type. + half3 h3; // Not a basic type. + half4 h4; // Not a basic type. + float2 f2; // Not a basic type. + float3 f3; // Not a basic type. + float4 f4; // Not a basic type. + fixed fx1; // Not a basic type. + fixed2 fx2; // Not a basic type. + fixed3 fx3; // Not a basic type. + fixed4 fx4; // Not a basic type. + float3x3 f3x3; // Not a basic type. + float2x4 f2x4; // Not a basic type. + half4x4 h4x4; // Not a basic type. +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CG_Standard_Library_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CG_Standard_Library_frag.frag new file mode 100644 index 00000000000..17bf049bf63 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CG_Standard_Library_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int i = round(1.3); // round is not a built-in function. +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectBuiltInOveride_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectBuiltInOveride_frag.frag new file mode 100644 index 00000000000..768ecc1ce85 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectBuiltInOveride_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump int; +#endif + +int radians(int f) +{ + return f; +} + +void main() +{ + int f = 45; + f = radians(f); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectComma_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectComma_frag.frag new file mode 100644 index 00000000000..3a83174a49d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectComma_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct s { + float f; + vec3 v; +}; + +void main() +{ + const vec4 v = (vec4(1,2,3,4), vec4(5,6,7,8)); // 5,6,7,8 + const s s1 = (s(9.0, vec3(10,11,12)), s(13.0, vec3(14,15,16))); // 13,14,15,16 + gl_FragColor = v + vec4(s1.f, s1.v); // 18, 20, 22, 24 +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectConstFolding1_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectConstFolding1_vert.vert new file mode 100644 index 00000000000..6d92a68d244 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectConstFolding1_vert.vert @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main() +{ + + const struct s2 { + int i; + vec3 v3; + bvec4 bv4; + } s22 = s2(8, vec3(9, 10, 11), bvec4(true, false, true, false)); + + struct s4 { + int ii; + vec4 v4; + }; + + const struct s1 { + s2 ss; + int i; + float f; + mat4 m; + s4 s44; + } s11 = s1(s22, 2, 4.0, mat4(5), s4(6, vec4(7, 8, 9, 10))) ; + + const int field3 = s11.i * s11.ss.i; // constant folding (int * int) + const vec4 field4 = s11.s44.v4 * s11.s44.v4; // constant folding (vec4 * vec4) + // 49, 64, 81, 100 + const vec4 v4 = vec4(s11.ss.v3.y, s11.m[3][3], field3, field4[2]); // 10.0, 5.0, 16.0, 81.0 + gl_Position = v4; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectConstFolding2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectConstFolding2_vert.vert new file mode 100644 index 00000000000..8ed470d042b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectConstFolding2_vert.vert @@ -0,0 +1,438 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main() +{ + struct s5 { + float k; + }; + const struct s { + int i; + float j; + s5 s55; + } ss = s(4,1.0, s5(1.0)); + + + const struct s2 { + int i; + vec3 v3; + bvec4 bv4; + } s22 = s2(8, vec3(9, 10, 11), bvec4(true, false, true, false)); + + struct s4 { + int ii; + vec4 v4; + }; + + const struct s1 { + s2 ss; + int i; + float f; + mat4 m; + s4 s44; + } s11 = s1(s22, 2, 4.0, mat4(5), s4(6, vec4(7, 8, 9, 10))) ; + + + const struct s7 { + int i; + mat3 m3; + } s77 = s7(12, mat3(15)); + + vec2 v21 = vec2(1); // Not a constant + const vec2 v22 = vec2(11); // 11.0, 11.0 + const vec4 v41 = vec4(2); // 2.0, 2.0, 2.0, 2.0 + const vec4 v43 = vec4(4,4,4,4); // 4.0, 4.0, 4.0, 4.0 + const vec4 v44 = vec4(5.0, 5.0, 5.0, 5.0); // 5.0, 5.0, 5.0, 5.0 + const vec4 v45 = vec4(v22, v22); // 11.0, 11.0, 11.0, 11.0 + const vec4 v46 = vec4(vec2(20, 21), vec2(22, 23)); // 20.0, 21.0, 22.0, 23.0 + + const vec3 v31 = vec3(s22.v3); // 9.0, 10.0, 11.0 + const vec3 v32 = vec3(s77.m3); // 15.0, 0, 0 + const vec3 v33 = vec3(s77.m3[2]); // 0, 0, 15.0 + const vec3 v34 = vec3(s77.m3[2][0]); // 0,0,0 + + + const mat4 m41 = mat4(1); // 1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1 + const mat4 m42 = mat4(v44, v44, v44, v44); // all 5s + const mat4 m43 = mat4( v43.x); // 4,0,0,0,0,4,0,0,0,0,0,4,0,0,0,0,0,4 + + const vec4 v47 = vec4(m41[0][0]); // 1.0,1.0,1.0,1.0 + + const mat4 m45 = mat4(s22.v3, v44, v45, v32, 50, 52); //9,10,11,5,5,5,5,11,11,11,11,15.0, 0,0, 50.0, 52.0 + //const mat3 m31 = mat3(1, mat2(1), 2.0, vec3(1)); // 1.0, 1,0,0,1,2,1,1,1 + const vec4 v48 = vec4(v31[0], v22[1], v41[0], v43[3]); //9, 11, 2, 4 + const vec4 v49 = vec4(s22.v3.xy, s22.v3.zx); // 9,10,11,9 + const vec4 v410 = vec4(v44.xy, v43.zx); //5,5,4,4 + + const vec4 v411 = vec4(m42[3]); // 5,5,5,5 + const vec4 v412 = vec4(m43[2]); // 0,0,4,0 + + const vec2 v23 = vec2(m41); // 1,0 + + const vec2 v24 = vec2(33, s11.i); // 33, 2 + + const vec4 v413 = vec4(vec2(1.0,2.0),ivec2(3.0,4.0)); // 1,2,3,4 + const ivec4 i41 = ivec4(1.0, 2.0, 3.0, 4.0); // 1,2,3,4 + + const ivec4 i42 = ivec4(6); // 6,6,6,6 + const ivec4 i43 = ivec4(v45); //11,11,11,11 + + const ivec4 i44 = ivec4(v44[0]); // 5,5,5,5 + const ivec4 i45 = ivec4(vec2(20, 21), vec2(22, 23)); // 20, 21, 22, 23 + const vec4 v414 = vec4(ivec2(29, 30), ivec2(31, 32)); // 29.0, 30.0, 31.0, 32.0 + const ivec4 i46 = ivec4(ivec2(2.0,3.0), ivec3(4.0,5.0,6.0)); + const ivec4 i47 = ivec4(i46); // 2,3,4,5 + const ivec4 i48 = ivec4(v414.x); // 29,29,29,29 + + const ivec4 i49 = ivec4(vec4(1)); // 1,1,1,1 + const ivec4 i414 = ivec4(mat4(14)); // 14, 0,0,0, + const ivec4 i410 = ivec4(m43); // 4,0,0,0 + const ivec4 i411 = ivec4(m43[1]); // 0, 4, 0, 0 + const ivec4 i412 = ivec4(s77.i); // 12, 12, 12, 12 + const ivec4 i416 = ivec4(s22.v3.zyx, 12); // 11, 10, 9, 12 + + const vec4 v415 = vec4(ivec2(35), ivec2(36)); // 35.0, 35.0 ,36.0 , 36.0 + + const bvec4 b41 = bvec4(1.0, 2.0, 3.0, 4.0); // true,true,true,true + + const bvec4 b42 = bvec4(6); // true,true,true,true + const bvec4 b43 = bvec4(v45); //true,true,true,true + + const bvec4 b44 = bvec4(v44[0]); // true,true,true,true + const bvec4 b45 = bvec4(vec2(0, 21), vec2(0, 1)); // false, true, false, true + const bvec4 b46 = bvec4(ivec2(0.0,3.0), ivec3(0,5.0,6.0)); // false, true, false, true + const bvec4 b47 = bvec4(i46); // true,true,true,true + const bvec4 b48 = bvec4(v414.x); // true,true,true,true + + const bvec4 b49 = bvec4(vec4(0)); // false,false,false,false + const bvec4 b414 = bvec4(mat4(14)); // true, false,false,false, + const bvec4 b410 = bvec4(m43); // true,false,false,false + const bvec4 b411 = bvec4(m43[1]); // false, true, false, false + const bvec4 b412 = bvec4(s77.i) ; // true, true, true, true + + const vec3 v35 = vec3(s11.s44.v4); // 7.0,8.0,9.0 + + + struct s10 { + int k; + }; + struct s9 { + float f; + s10 s101; + }; + const struct s8 { + int i; + s9 s99; + } s88 = s8(1, s9(2.0, s10(5))); + + struct st4 { + int m; + vec3 v3; + }; + struct st3 { + int k; + int l; + st4 st44; + }; + struct st2 { + float f; + st3 st33; + }; + const struct st1 { + int i; + st2 st22; + } st11 = st1(1, st2(2.0, st3(5, 6, st4(7, v35)))); + + const vec4 v416 = vec4(s88.s99.s101.k); // all 5s + const vec4 v417 = vec4(st11.st22.st33.st44.v3, s88.s99.s101.k); // 7.0, 8.0, 9.0, 5.0 + const vec3 v36 = vec3(s11.ss.v3); // 9, 10, 11 + + vec4 v418 = v416; // all 5s + const float f1 = v416[0]; // 5.0 + vec4 v419; + v419.xyz = st11.st22.st33.st44.v3; + mat4 m47; + + struct struct2 { + int k; + } struct22 = struct2(4); + + const struct struct1 { + struct2 sst2; + } struct11 = struct1(struct2(2)); + + const vec4 v420 = v417; // 7.0, 8.0, 9.0 , 5.0 + + vec4 v421 = vec4(s11.m); // 5, 0, 0, 0 + vec4 v422 = v420; // 7.0, 8.0, 9.0 , 5.0 + + vec4 v423 = s11.s44.v4; // 7, 8, 9, 10 + + int int1 = ss.i * ss.i; // 16 + int int2 = ss.i * 2; // 8 + + const vec4 v425 = v420 * v420; // 49, 64, 81, 25 + const vec4 v426 = s11.m * s11.s44.v4; // 35, 40, 45, 50 + const vec4 v427 = s11.s44.v4 * s11.m; // 35, 40, 45, 50 + + float ff = 2.0; + const float ffConst = 2.0; + + vec4 v428 = ff + v425; // ordinary assignment with binary node + vec3 v39 = vec3(5); + + vec3 v310 = s22.v3 + v39; //14, 15, 16 + + const vec4 v429 = v420 + v420; // 14, 16, 18, 10 + const vec4 v430 = v420 + ffConst; // 9, 10, 11,7 + const vec4 v432 = v429 + s11.f; // 18, 20, 22, 14 + + const vec4 v433 = vec4(s11.f + s11.f); // all 8s + const vec4 v434 = v432 + vec4(3); // 21, 23, 25, 17 + const mat4 m48 = s11.m + ffConst; // diagonal 7s and others 2s + const mat4 m49 = mat4(ffConst + s11.f); // diagonal 6s + const mat4 m410 = m48 + s11.f; // diagonal 11, others - 6s + + const mat4 m413 = m48 + m48 ; // diagonal 14, others 4 + const mat4 m414 = m413 + ffConst ; // diagonal 16, others 6 + + const vec4 v435 = ffConst + v420; // 9, 10, 11,7 + const vec4 v436 = s11.f + v429; // 18, 20, 22, 14 + const mat4 m415 = ffConst + s11.m; // diagonal 7s and others 2s + const mat4 m416 = s11.f + m48 ; // diagonal 11, others - 6s + const mat4 m417 = ffConst + m413 ; // diagonal 16, others 6 + + const vec4 v437 = v420 - v420; // 0, 0, 0, 0 + const vec4 v438 = v420 - ffConst; // 5, 6, 7,3 + const vec4 v440 = v429 - s11.f; // 10, 12, 14, 6 + + const vec4 v441 = vec4(s11.f - s11.f); // all 0s + const vec4 v442 = v432 - vec4(3); // 15, 17, 19, 11 + const mat4 m418 = s11.m - ffConst; // diagonal 3s and others -2s + const mat4 m419 = mat4(ffConst - s11.f); // diagonal -> -2s + const mat4 m420 = m48 - s11.f; // diagonal 3, others -> -2 + + const mat4 m423 = m48 - m48 ; // All 0s + const mat4 m424 = m413 - ffConst ; // diagonal 12, others 2 + + const vec4 v443 = ffConst - v420; // -5, -6, -7,-3 + const vec4 v444 = s11.f - v429; // -10, -12, -14, -6 + const mat4 m425 = ffConst - s11.m; // diagonal -3s and others 2s + const mat4 m426 = s11.f - m48 ; // diagonal -3, others 2s + const mat4 m427 = ffConst - m413 ; // diagonal -12, others -2 + + const vec4 v445 = v420 * v420; // 49, 64, 81, 25 + const vec4 v446 = v420 * ffConst; // 14, 16, 18,10 + const vec4 v448 = v429 * s11.f; // 56, 46, 72, 40 + + const vec4 v449 = vec4(s11.f * s11.f); // all 16 + const vec4 v450 = v432 * vec4(3); // 54, 60, 66, 42 + const mat4 m428 = s11.m * ffConst; // diagonal 10 and others 0s + const mat4 m429 = mat4(ffConst * s11.f); // diagonal 8 + const mat4 m430 = m48 * s11.f; // diagonal 28, others 8 + + const mat4 m433 = m48 * m48 ; // diagonal 61, others 36 + const mat4 m434 = m413 * ffConst ; // diagonal 28, others 8 + + const vec4 v451 = ffConst * v420; // 14, 16, 18,10 + const vec4 v452 = s11.f * v429; // 56, 64, 72, 40 + const mat4 m435 = ffConst * s11.m; // diagonal 10 and others 0s + const mat4 m436 = s11.f * m48 ; // diagonal 28, others - 8s + const mat4 m437 = ffConst * m413 ; // diagonal 28, others 8 + + const vec4 v453 = v420 / v420; // 1, 1, 1, 1 + const vec4 v454 = v420 / ffConst; // 3.5, 4, 4.5,2.5 + + const vec4 v457 = vec4(s11.f / s11.f); // all 1s + const vec4 v458 = v432 / vec4(3); // 6, 6.6666, 7.333, 4.6666 + const mat4 m438 = s11.m / ffConst; // diagonal 2.5 and others 0s + const mat4 m439 = mat4(ffConst / s11.f); // diagonal 0.5s + const mat4 m440 = m48 / s11.f; // diagonal 1.75, others 0.5s + + const mat4 m443 = m48 / m48 ; // All 1s + const mat4 m444 = m413 / ffConst ; // diagonal 7, others 2 + + const vec4 v459 = ffConst / v420; // .2857 , .25, .22, .4 + const vec4 v460 = s11.f / v429; // .2857, .25, .22, .4 + //const mat4 m445 = ffConst / s11.m; // divide by zero error + const mat4 m446 = s11.f / m48 ; // diagonal .571, others 2 + const mat4 m447 = ffConst / m413 ; // diagonal .1428, others 0.5 + + const vec4 v461 = v453 * m428; // 10, 10, 10, 10 + const vec4 v462 = v453 * m437; // 52, 52, 52, 52 + const vec4 v463 = m428 * v451; // 140, 160, 180, 100 + const vec4 v464 = m437 * v451; // 744, 784, 824, 664 + + int ii = 2; + const int iiConst = 2; + + const ivec4 i420 = ivec4( 7,8,9,5); // 7, 8, 9, 5 + + const ivec4 i429 = i420 + i420; // 14, 16, 18, 10 + const ivec4 i430 = i420 + iiConst; // 9, 10, 11,7 + const ivec4 i432 = i429 + ss.i; // 18, 20, 22, 14 + + const ivec4 i433 = ivec4(ss.i + ss.i); // all 8s + + const ivec4 i435 = iiConst + i420; // 9, 10, 11,7 + const ivec4 i436 = ss.i + i429; // 18, 20, 22, 14 + + const ivec4 i437 = i420 - i420; // 0, 0, 0, 0 + const ivec4 i438 = i420 - iiConst; // 5, 6, 7,3 + const ivec4 i440 = i429 - ss.i; // 10, 12, 14, 6 + + const ivec4 i441 = ivec4(ss.i - ss.i); // all 0s + + const ivec4 i443 = iiConst - i420; // -5, -6, -7,-3 + const ivec4 i444 = ss.i - i429; // -10, -12, -14, -6 + + const ivec4 i445 = i420 * i420; // 49, 64, 81, 25 + const ivec4 i446 = i420 * iiConst; // 14, 16, 18,10 + const ivec4 i448 = i429 * ss.i; // 56, 64, 72, 40 + + const ivec4 i449 = ivec4(ss.i * ss.i); // all 16 + + const ivec4 i451 = iiConst * i420; // 14, 16, 18,10 + const ivec4 i452 = ss.i * i429; // 56, 64, 72, 40 + + const ivec4 i453 = i420 / i420; // 1, 1, 1, 1 + const ivec4 i454 = i420 / iiConst; // 3, 4, 4,2 + const ivec4 i456 = i429 / ss.i; // 3, 4, 4, 2 + + const ivec4 i457 = ivec4(ss.i / ss.i); // all 1s + + const ivec4 i459 = iiConst / i420; // 0 , 0, 0,0 + const ivec4 i460 = ss.i / i429; // 0, 0, 0,0 + + const bvec4 b424 = bvec4(s22.bv4); + + const bool b1 = s22.bv4 == b424; // true + const bool b2 = i420 == i420; // true + const bool b3 = i420 == i445; // false + const bool b4 = v420 == v420; // true + const bool b5 = m430 == m434; // true + + const vec4 v465 = -v420; // -7, -8, -9, -5 + const mat4 m448 = -m447 ; // diagonal -.1428, others -0.5 + const ivec4 i465 = -i456 ; // -3, -4, -4,-2 + + const bool b7 = s22 == s22; + + const vec4 v466 = v432 + vec4(3,4,5,6); // 21, 24, 27, 20 + const vec4 v467 = v432 + vec4(vec2(3,4),5,6); // 21, 24, 27, 20 + const vec4 v468 = v432 + vec4(3, vec2(4, 5),vec2(6,7)); // 21, 24, 27, 20 + const vec4 v469 = vec4(v468) + vec4(3) + v468 + vec4(s77.m3[2][0]); // 45, 51, 57, 43 + + const bool b8 = ss == ss; // true + + struct st6 { + vec3 v; + }; + + struct st5 { + int i; + float f; + st6 st66; + } st55; + + const st5 st551 = st5(2, 4.0, st6(vec3(7))); + const st5 st552 = st5(2, 4.0, st6(vec3(7))); + + const bool b10 = st551 == st552; // true + + const bool b11 = st551.st66 == st552.st66; // true + + const st5 st553 = st5(2, 4.0, st6(vec3(8))); + + const bool b12 = st551.st66 == st553.st66; // false + const bool b13 = st551 == st553; // false + + const bool b14 = st551 != st552; // false + const bool b15 = st551.st66 != st552.st66; // false + const bool b16 = st551.st66 != st553.st66; // true + const bool b17 = st551 != st553; // true + + const bool b18 = s22.bv4 != b424; // false + const bool b19 = i420 != i420; // false + const bool b20 = i420 != i445; // true + const bool b21 = v420 != v420; // false + const bool b22 = m430 != m434; // false + + const int int10 = i420.xy.y; // 8 + + //float f = v470.x; + + + + const int int13 = -ss.i; + + const vec4 v474 = -vec4(0.5); + + int int14 = ii++; + int array[3]; + array[2]; + + const vec4 v478 = v466 * 2.0; // 42, 48, 54, 40 + + const vec4 v479 = iiConst > 1 ? v466 : v478; // 21, 24, 27, 20 + + const struct st7 { + int i; + bool b; + } st77 = st7(ss.i, true); + + const vec4 v481 = vec4(st77.i); + + const struct st8 { + int i; + } ; + + + const struct st9 { + s2 ss; + } st99 = st9(s22); + + const vec3 v312 = st99.ss.v3; // 9, 10, 11 + const vec4 v482 = mat4(1)[0]; // 1, 0, 0 , 0 + + const mat4 m450 = mat4(ss.i); // mat4(4) + const mat4 m451 = mat4(b20); // mat4(1) + const mat4 m452 = mat4(st77.b); // mat4(1) + + const vec4 v483 = vec4(vec4(3).x); // 3,3,3,3 + const mat4 m453 = mat4(vec4(5).x); // mat5(5) + + const vec4 v484 = vec4(mat4(6)[1]); // 0,6,0,0 + const mat4 m454 = mat4(mat4(6)[1][1]); // mat4(6) + + const vec4 v485 = vec4(st7(8, true).b); // 1,1,1,1 + + const vec4 v487 = vec4(vec4(12, 13, 14, 15).ab, 12, 14); + + int i20 = ss.i; + const vec4 v489 = -vec4(7,8,9,5); // -7, -8, -9, -5 + + gl_Position = vec4(1); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectConstruct_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectConstruct_vert.vert new file mode 100644 index 00000000000..79a63720fc1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectConstruct_vert.vert @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +struct s { + float f; +} s1 = s(1.0); + +struct s3 { + int i; +} s3Inst; + +struct s2 { + float f; + s3 s3Inst; +} s2Inst = s2(1.0, s3(1)); + +void main() +{ + vec3 i = vec3(5.0, 4.0, ivec2(2.0, 1.0)); + ivec4 v2 = ivec4(1.0); + vec4 v4 = vec4(v2); + bvec4 v5 = bvec4(v2); + vec3 v6 = vec3(v5); + vec3 v = vec3(2, 2.0, 1); + vec3 v1 = vec3(1.2, v); + + mat3 m1 = mat3(v,v,v); + mat2 m2 = mat2(v, v6.x); + + gl_Position = vec4(1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectExtension10_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectExtension10_V100_frag.frag new file mode 100644 index 00000000000..6582b57f520 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectExtension10_V100_frag.frag @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#version 100 +#extension extensionfoo : enable // warning extension not supported +#extension extensionfoo : disable // warning extension not supported +#extension extensionfoo : warn // warning extension not supported + +#extension all : disable // no error in the program +#extension all : warn // no error in the program + +#extension extensionfoo : enable // warning extension not supported +#extension extensionfoo : disable // warning extension not supported +#extension extensionfoo : warn // warning extension not supported +#ifdef GL_ES +precision mediump float; +#endif + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectExtension1_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectExtension1_V100_frag.frag new file mode 100644 index 00000000000..eec6d43fae0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectExtension1_V100_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#extension all : disable // no error in the program +#extension all : warn // no error in the program +#ifdef GL_ES +precision mediump float; +#endif + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectExtension4_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectExtension4_V100_frag.frag new file mode 100644 index 00000000000..18f3a4877c3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectExtension4_V100_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#extension extensionfoo : enable // warning extension not supported +#extension extensionfoo : disable // warning extension not supported +#extension extensionfoo : warn // warning extension not supported +#ifdef GL_ES +precision mediump float; +#endif + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFull_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFull_vert.vert new file mode 100644 index 00000000000..1d13e58f22b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFull_vert.vert @@ -0,0 +1,671 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +struct gtf_MaterialParameters +{ +vec4 emission; +vec4 ambient; +vec4 diffuse; +vec4 specular; +float shininess; +}; +struct gtf_LightSourceParameters +{ +vec4 ambient; +vec4 diffuse; +vec4 specular; +vec4 position; +vec4 halfVector; +vec3 spotDirection; +float spotExponent; +float spotCutoff; +float spotCosCutoff; +float constantAttenuation; +float linearAttenuation; +float quadraticAttenuation; +}; +struct gtf_PointParameters { +float size; +float sizeMin; +float sizeMax; +float fadeThresholdSize; +float distanceConstantAttenuation; +float distanceLinearAttenuation; +float distanceQuadraticAttenuation; +}; +struct gtf_DepthRangeParameters { +float near; +float far; +float diff; +}; +struct gtf_LightModelParameters { +vec4 ambient; +}; +struct gtf_LightModelProducts { +vec4 sceneColor; +}; +struct gtf_LightProducts { +vec4 ambient; +vec4 diffuse; +vec4 specular; +}; +struct gtf_FogParameters { +vec4 color; +float density; +float start; +float end; +float scale; +}; +uniform int gtf_MaxFragmentUniformComponents; +uniform int gtf_MaxVertexUniformComponents; +uniform int gtf_MaxVertexTextureImageUnits; +uniform int gtf_MaxLights; +uniform int gtf_MaxClipPlanes; +uniform int gtf_MaxCombinedTextureImageUnits; +uniform int gtf_MaxTextureCoords; +uniform int gtf_MaxVertexAttribs; +uniform int gtf_MaxVaryingFloats; +uniform int gtf_MaxTextureUnits; +uniform int gtf_MaxDrawBuffers; +uniform int gtf_MaxTextureImageUnits; +uniform gtf_LightProducts gtf_FrontLightProduct[8]; +uniform gtf_LightModelProducts gtf_FrontLightModelProduct; +uniform gtf_DepthRangeParameters gtf_DepthRange; +uniform gtf_FogParameters gtf_Fog; +uniform gtf_PointParameters gtf_Point; +uniform gtf_LightModelParameters gtf_LightModel; +varying vec4 gtf_FogFragCoord; +varying vec4 gtf_BackColor; +varying vec4 gtf_BackSecondaryColor; +varying vec4 gtf_FrontSecondaryColor; +varying vec4 gtf_TexCoord[2]; +varying vec4 gtf_FrontColor; +uniform gtf_MaterialParameters gtf_FrontMaterial; +uniform gtf_LightSourceParameters gtf_LightSource[8]; +attribute vec4 gtf_MultiTexCoord1; +attribute vec4 gtf_MultiTexCoord2; +attribute vec4 gtf_SecondaryColor; +attribute vec4 gtf_Color; +attribute vec4 gtf_MultiTexCoord3; +attribute vec4 gtf_MultiTexCoord0; +attribute vec4 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_NormalMatrix; +uniform mat4 gtf_ProjectionMatrix; +uniform mat4 gtf_TextureMatrix[8]; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; +void test_function(const in int in_int, inout int out_int); +int test_function1(in int in_int1, inout int in_out_int); + +uniform float array_float[2]; + +struct nested +{ + int a; + float f; +}; + +struct light1 +{ + float intensity; + vec3 position; + int test_int[2]; + nested light2; +} lightVar; +light1 ll2; + +void Assign (out light1 out1, in light1 in1) +{ + out1.intensity = in1.intensity; + out1.position = in1.position; + out1.test_int[0] = in1.test_int[0]; + out1.test_int[1] = in1.test_int[1]; + out1.light2 = in1.light2; +} + +struct light3 { + float i; +}; + +struct light4 { + float i; +}; + +struct light5 { + float i ; + float a[2]; +} light5_inst; + +uniform light3 uniformLight3; + +struct light6 { + float i; +}; +uniform light6 uniformLight6; + +struct slight10{ + float f; + }; +struct slight9{ + slight10 light10; + }; +struct slight8{ + slight9 light9; + }; +struct light7 { + slight8 light8; +} ; + + +light3 struct_var = light3(5.0); + +// Attribtue variables can only be Global +attribute float flt_attrib; +attribute vec2 vec2_attrib; +attribute vec3 vec3_attrib; +attribute vec4 vec4_attrib; +attribute mat2 mat2_attrib; +attribute mat3 mat3_attrib; +attribute mat4 mat4_attrib; + +uniform float flt_uniform; +uniform vec3 uniform_vec3; +uniform mat3 uniform_mat3; + +uniform sampler2D samp[3]; +uniform sampler2D samp1; + +const struct light12 { + int a; +} uniform_struct = light12(2); + +varying vec3 varying_vec3; +varying vec2 varying_vec2; +varying vec4 varying_vec4; +varying mat4 varying_mat4; +varying mat2 varying_mat2; +varying mat3 varying_mat3; +varying float varying_flt; + +float frequencies[2]; + +void test_function2(int func_int) +{ +} + +void test_function3(light3); +void test_function4(light5 ll20); +void test_function5(light1); +light6 test_function6(int a); + +const float FloatConst1 = 3.0 * 8.0, floatConst2 = 4.0; +const bool BoolConst1 = true && true || false; +const bool BoolConst2 = false || !false && false; + +void main(void) +{ + + int test_int1 = 2; + const int const_test_int1 = 2; + + struct structMain { + float i; + } testStruct; + + struct { + structMain a; + } aStruct; + + testStruct.i = 5.0 ; + struct_var.i = 5.0; + + structMain newStruct, newStruct1; + testStruct = newStruct; + newStruct = newStruct1; + + lightVar.light2.f = 1.1; + + light1 ll1; + ll1.light2.a = 1; + + const struct const_struct { + float i; + } const_struct_inst = const_struct(1.0); + + //ll1 = ll2; + Assign (ll1, ll2); + ll1.light2 = ll2.light2; + ll1.light2 = ll1.light2; + ll1.light2.f = ll2.light2.f; + ll1.light2.f = ll1.light2.f; + + // lightVar = ll2; + // ll2 = lightVar; + Assign (lightVar, ll2); + Assign (ll2, lightVar); + + light5 ll10; + + light7 ll7[4]; + structMain newStruct2[2]; + newStruct2[0].i = 1.1; + + ll7[0].light8.light9.light10.f = 1.1; + + + bool test_bool4 = false ; + + bool test_bool5 = 1.2 > 3.0 ; + + int test_int2 = 047; + int test_int4 = 0xa8; // testing for hexadecimal numbers + + float test_float1 = 1.5; + float test_float2 = .01; + float test_float3 = 10.; + float test_float4 = 10.01; + float test_float5 = 23e+2; + float test_float6 = 23E-3; + float test_float8 = 23E2; + bool test_bool6 = BoolConst1 && ! (test_int1 != 0) && ! BoolConst1 && ! (FloatConst1 != 0.0) && (FloatConst1 != 0.0) && (test_float1 != 0.0); + + vec4 color = vec4(0.0, 1.0, 0.0, 1.0); + vec4 color2 = vec4(0.0); + + vec3 color4 = vec3(test_float8); + + ivec4 test_int_vect1 = ivec4(1.0,1.0,1.0,1.0); + ivec3 test_int_vec3 = ivec3(1, 1, 1) ; + + bvec4 test_bool_vect1 = bvec4(1., 1., 1. , 1. ); + + vec2 test_vec2 = vec2(1., 1.); + vec2 test_vec3 = vec2(1., 1); + vec4 test_vec4 = vec4(test_int_vect1); + + vec2 test_vec5 = vec2(color4); + vec3 test_vec7 = vec3(color); + vec3 test_vec8 = vec3(test_vec2, test_float4); + vec3 test_vec9 = vec3(test_float4, test_vec2); + + vec4 test_vec10 = vec4(test_vec9, 0.01); + vec4 test_vec11 = vec4(0.01, test_vec9); + + vec4 test_vec12 = vec4(test_vec2, test_vec2); + + mat2 test_mat2 = mat2(test_float3); + mat3 test_mat3 = mat3(test_float3); + mat4 test_mat4 = mat4(test_float3); + + mat2 test_mat7 = mat2(test_vec2, test_vec2); + mat2 test_mat8 = mat2(01.01, 2.01, 3.01, 4.01); + + mat3 test_mat9 = mat3(test_vec7, test_vec7, test_vec7); + mat4 test_mat10 = mat4(test_vec10, test_vec10, test_vec10, test_vec10); + test_mat10[1] = test_vec10; + + + mat2 test_mat12 = mat2(test_vec2, 0.01, 0.01); + mat2 test_mat13 = mat2(0.01, 5., test_vec2); + mat2 test_mat15 = mat2(0.1, 5., test_vec2 ); + + //mat2 test_mat16 = mat2(test_mat9); + //mat2 test_mat17 = mat2(test_mat10); + + float freq1[2]; + float freq2[25]; + + for (int i=0; i<100; i++) + { + if (test_float1 < 1.0) + { + + } + else + { + break; + } + } + + freq2[1] = 1.9 ; + const int array_index = 2; + freq2[const_test_int1] = 1.9 ; + freq2[array_index] = 1.8; + + const int const_int = 5; + + test_float1 = varying_flt; + + int out_int; + int intArray[6]; + test_function(test_int1, test_int1); + test_function(test_int1, intArray[2]); + + vec3 vv = vec3(test_function1(test_int1, out_int)); + bool bool_var = true; + int test_int6 = int(bool_var); + test_float1 = float(bool_var); + test_float1 = float(test_int6); + test_int6 = int(test_float1); + bool_var = bool(test_int6); + bool_var = bool(test_float1); + test_float1 = float(test_vec9); + + test_vec2.x = 1.2; + test_vec2.y = 1.4; + test_vec2.xy; + + + color.zy = test_vec2; + + test_vec2[1] = 1.1; + + test_mat2[0][0] = 1.1; + + test_float1 += 1.0; + test_float1 -= 1.0; + test_float1 *= 1.0; + test_float1 /= 1.0; + + test_mat12 *= test_mat13 ; + test_mat12 *= test_float1; + test_vec2 *= test_float1; + test_vec2 *= test_mat12; + test_float1++; + test_float1--; + --test_float1; + ++test_float1; + test_float1; + test_int1++; + test_int1--; + + test_vec2 = test_vec2 + test_float1; + test_vec2 = test_float1 + test_vec2; + + test_mat12 = test_mat12 * test_mat13; + test_vec2 = test_vec2 * test_vec5; + + test_vec2++; + test_mat2++; + + bool test_bool2 = test_float2 > test_float3; + + bool test_bool3 = test_int1 > test_int6 ; + + test_bool3 = test_vec2 == test_vec5; + + test_bool2 = test_bool3 && test_bool4; + test_bool2 = test_bool3 || test_bool4; + test_bool2 = test_bool3 ^^ test_bool4; + + test_bool2 = !test_bool3; + + test_bool3 = !(test_int1 > test_int6) ; + + test_float1 = test_int1 > test_int6 ? test_float2 : test_float3; + test_vec2 = test_int1 > test_int6 ? test_vec2 : test_vec5; + if(test_bool2) + test_float1++; + else + test_float1--; + + if(test_float1 > test_float2) + test_float1++; + + if( test_bool2 ) + { + int if_int; + test_float1++; + } + + if(test_bool2) + if(test_bool3) + if(test_bool3) + test_float1++; + + for(int for_int=0; for_int < 5; for_int++) + { + // do nothing as such + } + + + for(int x1=0; x1 < 10; x1++) + { + if (!test_bool2) + break; + + int for_int; + } + + for(int x2=-10; x2 < 100; x2++) + { + test_bool2 = (test_float1 > test_float2); + if (!test_bool2) + break; + } + + for(int for_int1 = 0; for_int1 < 100; for_int1++) + { + if (!test_bool2) + break; + + int for_int; + } + + for(int for_int1 = 0; for_int1 < 100; for_int1++) + { + if (!test_bool2) + continue; + + int for_int; + } + + + for(int i=0; i<100; i++) + { + if (!(test_float1 > test_float2)) + { + break; + } + + break; + continue; + } + + for(int i=0; i<100; i++) + { + if (!test_bool2) + break; + + break; + } + + for (int i=0; i<100; i++) + { + int dowhile_int; + dowhile_int = 3; + + if (!test_bool2) + break; + } + + gl_Position = vec4(2.0, 3.0, 1.0, 1.1); + gl_Position = gtf_Vertex; + + + // VERTEX SHADER BUILT-IN ATTRIBUTES + + vec4 builtInV4 = gtf_Color + gtf_SecondaryColor + gtf_Vertex + gtf_MultiTexCoord0 + gtf_MultiTexCoord1 + gtf_MultiTexCoord2 + gtf_MultiTexCoord3; + + + int builtInI = gtf_MaxLights + gtf_MaxClipPlanes + gtf_MaxTextureUnits + gtf_MaxTextureCoords + gtf_MaxVertexAttribs + gtf_MaxVertexUniformComponents + gtf_MaxVaryingFloats + gtf_MaxVertexTextureImageUnits + gtf_MaxCombinedTextureImageUnits + gtf_MaxTextureImageUnits + gtf_MaxFragmentUniformComponents + gtf_MaxDrawBuffers ; + + + mat4 builtInM4 = gtf_ModelViewMatrix + gtf_ModelViewProjectionMatrix + gtf_ProjectionMatrix; + + gtf_NormalMatrix; + + gtf_TextureMatrix[gtf_MaxTextureCoords-1]; + gtf_TextureMatrix; + + gtf_DepthRange.near ; + + test_float1 = gtf_DepthRange.near; + test_float1 = gtf_DepthRange.far; + test_float1 = gtf_DepthRange.diff; + + gtf_Point.size; + gtf_Point.sizeMin; + gtf_Point.sizeMax; + gtf_Point.fadeThresholdSize ; + gtf_Point.distanceConstantAttenuation; + gtf_Point.distanceLinearAttenuation ; + gtf_Point.distanceQuadraticAttenuation; + + gtf_MaterialParameters test; + gtf_FrontMaterial.emission; + + color = gtf_FrontMaterial.emission; + color = gtf_FrontMaterial.ambient; + color = gtf_FrontMaterial.diffuse; + color = gtf_FrontMaterial.specular; + test_float1 = gtf_FrontMaterial.shininess; + + gtf_LightSourceParameters lightSource; + + float builtInFloat1 = gtf_LightSource[0].spotExponent; + color = gtf_LightSource[0].ambient; + color = lightSource.ambient; + color = lightSource.diffuse; + color = lightSource.specular; + color = lightSource.position; + color = lightSource.halfVector; + color4 = lightSource.spotDirection; + test_float1 = lightSource.spotExponent; + test_float1 = lightSource.spotCutoff; + test_float1 = lightSource.spotCosCutoff; + test_float1 = lightSource.constantAttenuation; + test_float1 = lightSource.linearAttenuation; + test_float1 = lightSource.quadraticAttenuation; + + color = gtf_LightModel.ambient; + + gtf_LightModelParameters lightModel; + color = gtf_LightModel.ambient; + color = lightModel.ambient; + + color = gtf_FrontLightModelProduct.sceneColor ; + + gtf_LightModelProducts lightModelProd; + + color = lightModelProd.sceneColor; + color = gtf_FrontLightModelProduct.sceneColor; + + color = gtf_FrontLightProduct[0].ambient; + color = gtf_FrontLightProduct[0].ambient; + gtf_LightProducts lightProd; + + color = lightProd.ambient; + color = lightProd.diffuse; + color = lightProd.specular; + + + test_float1 = gtf_Fog.density ; + test_float1 = gtf_Fog.start ; + test_float1 = gtf_Fog.end ; + test_float1 = gtf_Fog.scale ; + color = gtf_Fog.color ; + + gtf_FrontColor = vec4(1.0, 1.0, 1.0, 1.0); + gtf_BackColor = vec4(1.0, 1.0, 1.0, 1.0); + gtf_FrontSecondaryColor = vec4(1.0, 1.0, 1.0, 1.0); + gtf_BackSecondaryColor = vec4(1.0, 1.0, 1.0, 1.0); + + + // VARYING VARIABLES AVAILABLE IN FRAGMENT AND VERTEX SHADERS BOTH + gtf_TexCoord[0] = vec4(1.0, 1.0, 1.0, 1.0); + gtf_FogFragCoord = vec4(1.0, 1.0, 1.0, 1.0); + +} + +void test_function(const in int in_int, inout int out_int) +{ + out_int = 5; + int i = 5; + return ; +} + +int test_function1(in int in_int1, inout int in_out_int) +{ + float ff; + in_int1 = 5; + return in_int1; +} + +void test_function3(light3 ll) +{ + ll.i = 5.0; + varying_flt = 1.2; +} + +void test_function4(light5 ll20) +{ + ll20.i = 10.0; +} + +void test_function5(light1 struct_light1) +{ + struct_light1.light2.a = 1; + light5 ll5; + struct_light1.light2.f = ll5.i; + struct_light1.light2.f++; + struct_light1.light2.a++; +} + +light6 test_function6(int a) +{ + int x; + light6 funcStruct; + light7 funcStruct1; + -x; + x = x - x ; + mat2 m; + m++; + -m; + (m)++; + return funcStruct; +} + +float test_function7(light1 ll1, int light1 ) +{ + float f; + + struct ss1 { + int a; + }; + + return float(1); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFuncOverload_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFuncOverload_frag.frag new file mode 100644 index 00000000000..4bd543b62a2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFuncOverload_frag.frag @@ -0,0 +1,44 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void testVoid (vec4 v, vec4 v1) +{ +} + +void testVoid (ivec4 v, ivec4 v1) +{ +} + +void main(void) +{ + vec4 v; + ivec4 i; + testVoid(i, i); + testVoid(v, v); + gl_FragColor = v; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFuncOverload_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFuncOverload_vert.vert new file mode 100644 index 00000000000..bd798e61a4e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFuncOverload_vert.vert @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +struct S2 +{ + float f; +}; + +struct S1 +{ + float f; + S2 s2; +}; + +float process(S1 s1); +float process(S2 s2); + +void main() +{ + S1 s1 = S1(1.0, S2(1.0)); + gl_Position = vec4(process(s1)); +} + +float process(S1 s1) +{ + return s1.f + process(s1.s2); +} + +float process(S2 s2) +{ + return s2.f; +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFunction1_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFunction1_vert.vert new file mode 100644 index 00000000000..b040dae3130 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectFunction1_vert.vert @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +vec3 bar(vec3, vec3); + +uniform vec2 v; + +bool foo(out vec3); + +void main() +{ + bool b1, b2, b3, b4, b5, b6; + + b1 = any(lessThan(v, v)); + + b2 = all(lessThanEqual(v, v)); + + b3 = any(not(greaterThan(v, v))); + + b4 = any(greaterThanEqual(v, v)); + + b5 = any(notEqual(v, v)); + + b6 = any(equal(v, v)); + + vec2 u; + if (b1 && b2 && b3 && b4 && b5 && b6) + u = v; + + gl_Position = vec4(u, u); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectModule_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectModule_frag.frag new file mode 100644 index 00000000000..67e842834cf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectModule_frag.frag @@ -0,0 +1,81 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +vec4 test_function4(float); +vec4 test_function1(float); +vec4 test_function2(float); +vec4 test_function3(float); +float f = 2.6; + + +vec4 test_function1(float ff) +{ + vec4 func_vec4 = vec4(ff+f); + return func_vec4; +} + +float f1 = 1.5; + +vec4 test_function4(float ff) +{ + vec4 func_vec4 = vec4(f1); + return func_vec4; +} + +float f2 = 3.5; + +void main() +{ + vec4 v1 = test_function4(f2); + vec4 v2 = test_function1(f2); + vec4 v3 = test_function2(f2); + vec4 v4 = test_function3(f2); + + if (f1 > f2) { + gl_FragColor = v1 + v2 + v3 + v4; + } else + gl_FragColor = v1 + v2 + v3 + v4; +} + +float f4 = 5.5; +vec4 test_function3(float ff) +{ + if (ff > f4) + return vec4(ff); + else + return vec4(f4); +} + +float f3 = 4.5; +vec4 test_function2(float ff) +{ + vec4 func_vec4 = vec4(ff+f3); + return func_vec4; +} + +float f5 = 6.5; diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParse1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParse1_frag.frag new file mode 100644 index 00000000000..9f3e9b1328d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParse1_frag.frag @@ -0,0 +1,68 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform vec3 a[8]; + +uniform bool ub; +varying mat4 vm; + +int foo(float); + +float bar(int i) +{ + return float(i); +} + +void main (void) +{ + const int x = 3; + mat4 a[4]; + vec4 v; + + for (float f = 0.0; f != 3.0; ++f) + { + } + + vec3 v3[x + x]; + + int vi = foo(2.3); + + vec3 v3_1 = v3[x]; + + float f1 = a[x][2].z * float(x); + f1 = a[x][2][2] * float(x); + f1 = v[2] * v[1]; + + const int ci = 2; + +} + +int foo(float f) +{ + return 2; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParse2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParse2_frag.frag new file mode 100644 index 00000000000..20d30c26b48 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParse2_frag.frag @@ -0,0 +1,153 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +const float FloatConst1 = 3.0 * 8.0, floatConst2 = 4.0; +const bool BoolConst1 = true && true || false; +const bool BoolConst2 = false || !false && false; + +void main (void) +{ + float float1 = 4.0, float2 = floatConst2; + int int_1 = int(FloatConst1); + vec4 vec4_1; + vec3 vec3_1; +// unsigned int unsigned_int_1; + bool bool4, bool5; + + bool4 = bool5; + //float1 = bool5; + //bool5 = float1; + + bool4 = 4.0 > 5.0; + bool4 = !(3.2 != 0.0); + bool4 = bool(float1); + bool4 = bool(int_1); + float1 = float(bool4); + float1 = float(int_1); + int_1 = int(float1); + int_1 = int(bool4); + + { + int a, b, c; + + a = b; + b = c; + { + int b, c, d; + + b = c; + c = d; + { + int a, d, e; + + a = d; + d = e; + } + { + int a, b, c; + a = b; + b = c; + } + } + a = b; + b = c; + } + + { + float f1, f2; + vec3 v31, v32; + + max(f1, f2); + max(v31, v32); + + vec4 v4 = vec4(3.0); + vec3 v3 = -vec3(2.0, 1.0, 3.0); + mat2 m2 = mat2(3.0, 4.0, 6.0, 3.0); + //mat4 m4 = mat4(1.0, m2, v3, v4, m2); + } + + if (BoolConst1) + ++vec3_1; + else + --vec3_1; + + if (BoolConst2) + ++vec3_1; + else + --vec3_1; + + if (BoolConst1 || BoolConst2) + ++vec3_1; + else + --vec3_1; + + if (BoolConst2 && BoolConst1) + ++vec3_1; + else + --vec3_1; + + if (FloatConst1 != 0.0) + --int_1; + else + ++int_1; + + if (0 != 0) + ++int_1; + else + --int_1; + + bool4 = BoolConst1 && ! (int_1 != 0) && ! BoolConst1 && ! (FloatConst1 != 0.0) && (FloatConst1 != 0.0) && (float1 != 0.0); + + float1 = 5 != 0 ? float1 : float(int_1); + float1 = 0 != 0 ? float1 : float(int_1); + + if (float1 != float1) + ++int_1; + else + --int_1; + + float1 = float1 != float1 ? float1 : float(int_1); + + --int_1; + ++float1; + (vec4_1.x)--; + vec3_1++; + + if (int_1 != 4) + discard; + + float1 = 4.0 + 6.0; + int ii,jj,kk; + float ff; + ii = jj, kk, ff; + + vec4_1 = vec4_1 + 2.0; + ivec4 iv; + iv = iv + 2; + gl_FragColor = vec4(float1+float1, float1, float1, float(int_1)); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParse2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParse2_vert.vert new file mode 100644 index 00000000000..de66c0a3e6b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParse2_vert.vert @@ -0,0 +1,166 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +const float FloatConst1 = 3.0 * 8.0, floatConst2 = 4.0; +const bool BoolConst1 = true && true || false; +const bool BoolConst2 = false || !false && false; + +void main (void) +{ + float float1 = 4.0, float2 = floatConst2; + int int_1 = int(FloatConst1); + vec4 vec4_1; + vec3 vec3_1 = vec3(1, 1, 1); + vec3 vec3_2 = vec3(0, 0, 0); +// unsigned int unsigned_int_1; + bool bool4, bool5; + + bool4 = bool5; + //float1 = bool5; + //bool5 = float1; + + bool4 = 4 > 5; + bool4 = !(3.2 != 0.0); + bool4 = bool(float1); + bool4 = bool(int_1); + float1 = float(bool4); + float1 = float(int_1); + int_1 = int(float1); + int_1 = int(bool4); + + { + int a, b, c; + + a = b; + b = c; + { + int b, c, d; + + b = c; + c = d; + { + int a, d, e; + + a = d; + d = e; + } + { + int a, b, c; + a = b; + b = c; + } + } + a = b; + b = c; + } + + { + float f1, f2; + vec3 v31, v32; + + max(f1, f2); + max(v31, v32); + + vec4 v4 = vec4(3.0); + vec3 v3 = -vec3(2.0, 1.0, 3.0); + mat2 m2 = mat2(3.0, 4.0, 6.0, 3.0); + //mat4 m4 = mat4(1.0, m2, v3, v4, m2); + } + + if (BoolConst1) + ++vec3_1; + else + --vec3_1; + + if (BoolConst2) + ++vec3_1; + else + --vec3_1; + + if (BoolConst1 || BoolConst2) + ++vec3_1; + else + --vec3_1; + + if (BoolConst2 && BoolConst1) + ++vec3_1; + else + --vec3_1; + + if (FloatConst1 != 0.0) + --int_1; + else + ++int_1; + + if (0 != 0) + ++int_1; + else + --int_1; + + bool4 = BoolConst1 && ! (int_1 != 0) && ! BoolConst1 && ! (FloatConst1 != 0.0) && (FloatConst1 != 0.0) && (float1 != 0.0); + + float1 = 5 != 0 ? float1 : float(int_1); + float1 = BoolConst1 ? float1 : float(int_1); + + if (float1 != float1) + ++int_1; + else + --int_1; + + float1 = float1 != float1 ? float1 : float(int_1); + + --int_1; + ++float1; + (vec4_1.x)--; + vec3_1++; + + if (vec3_1.x > vec3_2.x) + float1 = 4.0 + 6.0; + + if (bool4 ^^ bool5) + float1 *= 2.4; + + if (false ^^ false) + float1 *= 2.5; + + if (true ^^ false) + float1 *= 2.6; + + { + int i; + } + + if (bool4) { + int i; + } else { + int i; + i = 5; + } + + mat4 m1; + m1[2][1] = 4.0; + + gl_Position = vec4(float1+float1, float1, float1, float(int_1)); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParseTest1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParseTest1_frag.frag new file mode 100644 index 00000000000..952913b1b93 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParseTest1_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct s { + vec4 v; +} s2; + +void main() +{ + s s1 = s(vec4(ivec4(4.0, vec2(5,6), 7.0))); + vec4 v = vec4(2,ivec2(3.0, 4.0), 5.0); + vec4 v4 = vec4(ivec4(8.0)); + + gl_FragColor = v4 + v + s1.v; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParseTest_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParseTest_frag.frag new file mode 100644 index 00000000000..285738052df --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectParseTest_frag.frag @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct s{ + float f; + vec3 v; +} s1 ; +void main() +{ + vec4 v = vec4(float(vec2(1,2)), 5,6,7); // 1, 5, 6, 7 + vec4 v1 = vec4(3, vec2(ivec2(1,2)), 4); // 3, 1, 2, 4 + vec4 v2 = vec4(8, 9, vec4(ivec4(1,2,3,4))); // 8,9, 1,2 + vec2 v3 = vec2(v2); // 8,9 + vec4 v4 = vec4(v3, v2.z, v2.w); // 8,9,1,2 + + const vec4 v5 = vec4(2.0, s(2.0, vec3(3,4,5)).v); // 2,3,4,5 + gl_FragColor = v5 + v + v1 + v4 ; // 14, 18, 13, 18 +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectPreprocess5_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectPreprocess5_frag.frag new file mode 100644 index 00000000000..c92511b3871 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectPreprocess5_frag.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +//mutiple line macros - test case. + +#define test 5 +#define t1 1 +#define t2 2 +#define token (t1+t2) +#define test1 int sum =1; sum = test; sum = test+test; + +#define test2 { test1 sum = sum +token; sum = t2*t1; } + +void main(void) +{ + int test3=1; + test1 + test2; + test3 = test; + sum = test3; +} + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectPreprocess8_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectPreprocess8_frag.frag new file mode 100644 index 00000000000..1e67e2730ba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectPreprocess8_frag.frag @@ -0,0 +1,132 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// Extensive testing on #if #else #elif #ifdef, #ifndef and #endif. + + +#define t1 1 + +#if(t1==1) + #define t2 2 +#endif + +#if (t2!=2) + #define t3 33 +#else + #define t3 3 +#endif + +#if (t3!=3) + #define t4 4 +#elif (t3==3) + #define t4 44 +#else + #define t4 0 +#endif + +#if defined(t5) + #define t6 6 +#elif (t3!=3) + #define t5 5 +#elif (t3==3) + #define t5 5 +#endif + +#ifdef t5 + #define t6 6 +#else + #define t7 7 +#endif + +#ifndef t8 + #define t8 8 +#endif + +#if defined t8 + #define t9 + #ifdef t9 + #define t10 10 + #endif +#elif + #define t11 11 +#endif + +#ifndef t8 + #define t12 12 +#else + #define t12 12 + #ifndef t13 + #define t13 13 + #endif + #ifdef t14 + #define t15 15 + #else + #if defined t8 + #define t16 16 + #endif + #endif +#endif + +#ifdef t1 + #ifdef t10 + #if defined t8 + #if defined(t3) + #ifndef t20 + #define t25 25 + #endif + #else + #define t15 15 + #define t24 24 + #endif + #endif + #endif +#else + #ifdef t21 + #define t22 22 + #else + #define t23 23 + #endif +#endif +#define t7 7 +#define t11 11 +#define t14 14 +#define t15 15 +#define t20 20 +#define t22 22 +#define t23 23 +#define t24 42 + +void main(void) +{ + int sum =0; + sum = t1+t2+t3+t4+t5; + sum = t6+t7+t8+t9+t10; + sum = t11+t12+t13+t14+t15; + sum = t16+t20+t22+t23+t25+t24; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectPreprocess9_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectPreprocess9_frag.frag new file mode 100644 index 00000000000..25a7d74747f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectPreprocess9_frag.frag @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +#define t1 2.3333333333333333 +#define t2 (0.978293600-1.0) +#define t3 .9090909090 +#define t4 26578235.000000083487 +#define t5 78e-03 +#define t6 78.100005E+05 +#define t7 6278.78e-5 + +void main(void){ + float tes=2e-3; + float test=3.2e-5; + float test1=0.99995500; + float test2=6789.983; + + test = t1+t2; + test = t3-t4; + tes = t5 * t6; + test2 = t7; + + gl_FragColor = vec4(test, tes, test1, test2); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle1_frag.frag new file mode 100644 index 00000000000..85c24f8fb04 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle1_frag.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + vec2 v = vec2(1,5); + // at the end of next statement, values in + // v.x = 12, v.y = 12 + v.xy += v.yx += v.xy; + // v1 and v2, both are initialized with 12 + vec2 v1 = v, v2 = v; + + v1.xy += v2.yx += ++(v.xy); // v1 = 37, v2 = 25 each + v1.xy += v2.yx += (v.xy)++; // v1 = 75, v2 = 38 each + gl_FragColor = vec4(v1,v2); // 75, 75, 38, 38 +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle1_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle1_vert.vert new file mode 100644 index 00000000000..8875d94e4f5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle1_vert.vert @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Normal; +uniform mat4 gtf_NormalMatrix; +void main(void) +{ + vec4 v = vec4(1,2,3,4); + vec3 v3 = vec3(5,6,7); + vec4 v4 = vec4(normalize(v3.yzy).xyz.zyx, 1.0); + gl_Position = v4 + vec4(normalize(gtf_NormalMatrix * gtf_Normal).xyz.zyx, v4.y); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle2_frag.frag new file mode 100644 index 00000000000..5c946606b0c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle2_frag.frag @@ -0,0 +1,56 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f, f1, f2; + f = f1 = f2; + f += f1 += f2; + + vec4 v, v1, v2; + v = v1 = v2; + v += v1 += v2; + v.wx = v1.zx = v2.yx; + v.wx += v1.zx += v2.yx; + + mat4 m, m1, m2; + m = m1 = m2; + m += m1 += m2; + m[3].wx = m1[2].zx = m2[1].yx; + m[3].wx += m1[2].zx += m2[1].yx; + + mat4 am[4], am1[4], am2[4]; + am[3] = am1[2] = am2[1]; + am[3] += am1[2] += am2[1]; + am[3][3].wx = am1[2][2].zx = am2[1][1].yx; + am[3][3].wx += am1[2][2].zx += am2[1][1].yx; + am[3][3].wx += am1[2][2].zx += ++(am2[1][1].yx); + am[3][3].wx += am1[2][2].zx += (am2[1][1].yx)++; + + gl_FragColor = vec4(am[3][3].z, m[3].w, v.w, f); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle2_vert.vert new file mode 100644 index 00000000000..c286279953d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle2_vert.vert @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main() +{ + vec4 v1 = vec4(5,6,7,8); + vec4 v2 = vec4(9,10, 11, 12); + vec3 v3 = (v1 * v2).ywx; + float f = (v2 * v1).z; + vec3 v4 = normalize((v1.ywx * v3).xyz).xyz; + gl_Position = vec4(v4, f); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle3_frag.frag new file mode 100644 index 00000000000..e1cc59e7636 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectSwizzle3_frag.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + vec4 v = vec4(5,6,7,8); + // value changes for lhs + // 8765, 6758, 857, 75 i.e. replace v.zx + // value changes for rhs + // 8765, 6758, 86 i.e replace with v.wy + // replace v.z with v.w + // replace v.x with v.y + // add 1.000000 to v.w and v.y + v.wzyx.zywx.wzy.zy = (v.wzyx.zywx.wx)++; + gl_FragColor = vec4(v); // 6,7,8,9 +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectVersion_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectVersion_V100_frag.frag new file mode 100644 index 00000000000..cba34b2b397 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/CorrectVersion_V100_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#version 100 +#ifdef GL_ES +precision mediump float; +#endif +/* #version can only be followed by number 100. The only statements before + #version can be comment or white spaces */ + +void main() +{ + gl_FragColor = vec4(1); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/DuplicateVersion1_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/DuplicateVersion1_V100_frag.frag new file mode 100644 index 00000000000..a704944ac98 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/DuplicateVersion1_V100_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#version 100 +#version 100 +#ifdef GL_ES +precision mediump float; +#endif +/* Two version statements are not allowed since any #version must be the first non-whitespace, non-comment */ + +void main() +{ + gl_FragColor = vec4(1); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/FunctionParam_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/FunctionParam_vert.vert new file mode 100644 index 00000000000..f8df4570bd4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/FunctionParam_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +int y = 1; + +int foo(int, int b[y]) // array size should be constant +{ + return 1; +} + +void main() +{ + int a[1]; + + gl_Position = vec4(1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Include_Preprocessor_Directive_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Include_Preprocessor_Directive_frag.frag new file mode 100644 index 00000000000..745cc458b21 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Include_Preprocessor_Directive_frag.frag @@ -0,0 +1,29 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +#include "GL/build/NVIDIA_Test_Include_frag.frag" diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Low_Level_Assembly_Reserved_Words_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Low_Level_Assembly_Reserved_Words_frag.frag new file mode 100644 index 00000000000..f42a80aa1a4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Low_Level_Assembly_Reserved_Words_frag.frag @@ -0,0 +1,44 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float MIN; +uniform float R0; +uniform float FOGC; +uniform float CUBE; +uniform float f; +uniform float o; +uniform float p; +uniform float w; +uniform float x; +uniform float y; +uniform float z; + +void main() +{ + gl_FragColor = vec4(f, o, p, w); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Main_Parameters_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Main_Parameters_vert.vert new file mode 100644 index 00000000000..13b97a22e2d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Main_Parameters_vert.vert @@ -0,0 +1,29 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main(vec4 position : POSITION) +{ + gl_Position = position; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/ParseTest3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/ParseTest3_frag.frag new file mode 100644 index 00000000000..f1f7004ef20 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/ParseTest3_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + const vec4 v = vec4(normalize(vec4(1))); // Builtin functions are constant expressions if all their parameters are constant expressions - code ok + const vec4 v1 = vec4(clamp(1.0, .20, 3.0)); // Builtin functions are constant expressions if all their parameters are constant expressions - code ok + float f = 1.0; + const vec4 v2 = vec4(float(vec4(1,2,3,f))); // f is not constant - code fails and test does not compile (expected) + + gl_FragColor = v + v1 + v2; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/ParseTest4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/ParseTest4_frag.frag new file mode 100644 index 00000000000..add162fe355 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/ParseTest4_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + const vec4 v = vec2(2.0, 3.0); + gl_FragColor = v; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Permissive_Constant_Conversions_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Permissive_Constant_Conversions_frag.frag new file mode 100644 index 00000000000..3fbbf1c5d87 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Permissive_Constant_Conversions_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f = 2; // Should be 2.0 +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Permissive_Scalar_Vector_Expressions_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Permissive_Scalar_Vector_Expressions_frag.frag new file mode 100644 index 00000000000..df1232cd5be --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Permissive_Scalar_Vector_Expressions_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + vec2 v = vec2(1.0, 2.0); + v *= 2.0; // Legal in GLSL. +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/TernaryOp_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/TernaryOp_frag.frag new file mode 100644 index 00000000000..7a79e24b047 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/TernaryOp_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + mat4 m; + vec4 v; + bool b; + gl_FragColor = b ? v : m; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Texture_Rectangle_Samplers_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Texture_Rectangle_Samplers_frag.frag new file mode 100644 index 00000000000..863c2ed7797 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/Texture_Rectangle_Samplers_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform sampler2DRect samp; + +void main() +{ + gl_FragColor = texture2DRect(samp, vec2(0.0, 0.0)); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array10_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array10_frag.frag new file mode 100644 index 00000000000..62a2ce33295 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array10_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +void main() +{ + float f[]; + float flt = f[5]; + float f[3]; // higher array index has already been used +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array11_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array11_frag.frag new file mode 100644 index 00000000000..8ba8323b417 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array11_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f[]; + int f[4]; // array redeclared with a different type +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array1_frag.frag new file mode 100644 index 00000000000..aff04d3ec8c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array1_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int array[2][2]; // two dimentional arrays are not allowed +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array2_frag.frag new file mode 100644 index 00000000000..c3fc0d61946 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array2_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + const int array[2]; // cannot declare const arrays +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array3_frag.frag new file mode 100644 index 00000000000..05fd376df53 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array3_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int array1[2], array2[2]; + bool b = array1 == array2; // equality operator does not work on arrays but works on array elements +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array4_frag.frag new file mode 100644 index 00000000000..2f7baf1d8dd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array4_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f[-2]; // cannot declare arrays with negative size +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array5_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array5_frag.frag new file mode 100644 index 00000000000..36957dc4025 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array5_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int i = 3; + float f[i]; // arrays should be declared with a constant size +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array6_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array6_frag.frag new file mode 100644 index 00000000000..109d7ad8908 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array6_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + const float index = 3.0; + float f[index]; // arrays should be declared with an integer expression not float +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array7_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array7_frag.frag new file mode 100644 index 00000000000..6e7dea3def9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array7_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f[5]; + f[]; // array used without a size +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array8_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array8_frag.frag new file mode 100644 index 00000000000..2fd8795edaa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array8_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f[5]; + float f[]; // redeclaration of array already declared with a size +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array9_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array9_frag.frag new file mode 100644 index 00000000000..5a11791a194 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/array9_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + vec2 array[2]; + array.xy; // arrays cannot directly be swizzled, however, an element of array can be swizzled +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute1_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute1_vert.vert new file mode 100644 index 00000000000..2726899e87f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute1_vert.vert @@ -0,0 +1,31 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute int i; // attributes cannot be int or bool + +void main() +{ + gl_Position = vec4(1); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute2_vert.vert new file mode 100644 index 00000000000..f5bd8860d40 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute2_vert.vert @@ -0,0 +1,31 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute float f[2]; // attributes cannot be arrays + +void main() +{ + gl_Position = vec4(1); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute_frag.frag new file mode 100644 index 00000000000..af78ed7f0e2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + attribute float foo; // attributes can be declared at global scope in vertex shader only +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute_vert.vert new file mode 100644 index 00000000000..1c35aea8252 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/attribute_vert.vert @@ -0,0 +1,29 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main() +{ + attribute float foo; // attributes can be declared at a global scope only +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/break_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/break_frag.frag new file mode 100644 index 00000000000..bb50e2aa5f0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/break_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + break; // break keyword allowed only inside the loops +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_001_to_008.html new file mode 100644 index 00000000000..1883b6a8145 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_001_to_008.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_009_to_016.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_009_to_016.html new file mode 100644 index 00000000000..4afb29be741 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_009_to_016.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_009_to_016.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_017_to_024.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_017_to_024.html new file mode 100644 index 00000000000..10b3d6636cc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_017_to_024.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_017_to_024.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_025_to_032.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_025_to_032.html new file mode 100644 index 00000000000..8ee6bdee381 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_025_to_032.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_025_to_032.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_033_to_040.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_033_to_040.html new file mode 100644 index 00000000000..6667f89bb35 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_033_to_040.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_033_to_040.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_041_to_048.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_041_to_048.html new file mode 100644 index 00000000000..ac62a696181 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_041_to_048.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_041_to_048.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_049_to_056.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_049_to_056.html new file mode 100644 index 00000000000..62358b0c6e4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_049_to_056.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_049_to_056.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_057_to_064.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_057_to_064.html new file mode 100644 index 00000000000..f194ecf17be --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_057_to_064.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_057_to_064.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_065_to_072.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_065_to_072.html new file mode 100644 index 00000000000..16372f8862a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_065_to_072.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_065_to_072.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_073_to_080.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_073_to_080.html new file mode 100644 index 00000000000..0259cae9292 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_073_to_080.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_073_to_080.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_081_to_088.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_081_to_088.html new file mode 100644 index 00000000000..ce86db8586e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_081_to_088.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_081_to_088.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_089_to_096.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_089_to_096.html new file mode 100644 index 00000000000..23561488613 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_089_to_096.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_089_to_096.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_097_to_104.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_097_to_104.html new file mode 100644 index 00000000000..2a4f2abcea5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_097_to_104.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_097_to_104.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_105_to_112.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_105_to_112.html new file mode 100644 index 00000000000..cd5dabddc62 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_105_to_112.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_105_to_112.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_113_to_120.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_113_to_120.html new file mode 100644 index 00000000000..a93b6e6eade --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_113_to_120.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_113_to_120.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_121_to_128.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_121_to_128.html new file mode 100644 index 00000000000..f13e0656d8b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_121_to_128.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_121_to_128.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_129_to_136.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_129_to_136.html new file mode 100644 index 00000000000..34eaa4352af --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_129_to_136.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_129_to_136.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_137_to_144.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_137_to_144.html new file mode 100644 index 00000000000..acb4502de59 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_137_to_144.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_137_to_144.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_145_to_152.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_145_to_152.html new file mode 100644 index 00000000000..ff3ea37f3b7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_145_to_152.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_145_to_152.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_153_to_160.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_153_to_160.html new file mode 100644 index 00000000000..844e548a47f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_153_to_160.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_153_to_160.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_161_to_168.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_161_to_168.html new file mode 100644 index 00000000000..3bbcddaadcd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_161_to_168.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_161_to_168.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_169_to_176.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_169_to_176.html new file mode 100644 index 00000000000..f00fa582c67 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_169_to_176.html @@ -0,0 +1,133 @@ + + + + + +WebGL GLSL conformance test: build_169_to_176.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_177_to_178.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_177_to_178.html new file mode 100644 index 00000000000..a2406d8ed5b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/build_177_to_178.html @@ -0,0 +1,73 @@ + + + + + +WebGL GLSL conformance test: build_177_to_178.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma1_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma1_vert.vert new file mode 100644 index 00000000000..5662a9e78eb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma1_vert.vert @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main() +{ + int i, j, k; + float f; + i = j, k, f; + i = (j, k, f); // float cannot be assigned to int + gl_Position = vec4(1); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma2_frag.frag new file mode 100644 index 00000000000..faa5f1618ac --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma2_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + const vec4 v = (vec4(1,2,3,4), vec4(5,6,7,8), 1.2); // right most value of comma operator shoul be a vec4 + const vec4 v1 = (vec3(0.2, 2.0), vec4(1,2,3,4), vec4(5,6,7,8)); + const vec4 v2 = (vec4(1,2,3,4), vec2(2.1, 2), vec4(5,6,7,8)); + gl_FragColor = v + v1 + v2; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma2_vert.vert new file mode 100644 index 00000000000..c1227a764f1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma2_vert.vert @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main() +{ + int i, j, k; + float f; + i = j, k, f; + i = (j = k, f = 1.0); // float cannot be assigned to int + gl_Position = vec4(1); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma3_vert.vert new file mode 100644 index 00000000000..c66d9d7552c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comma3_vert.vert @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main() +{ + int i, j, k; + float f; + i = j, k, f; + i = j = k, f = 1.0; + i = j, k = (3, f); // float cannot be assigned to int + gl_Position = vec4(1); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comment_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comment_frag.frag new file mode 100644 index 00000000000..3274a58704f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/comment_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + /****** // comment not closed +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/conditional1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/conditional1_frag.frag new file mode 100644 index 00000000000..616f077ae55 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/conditional1_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f1,f2; + int i; + float f3 = i ? f1 : f2; // expression must be boolean and not int +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/conditional2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/conditional2_frag.frag new file mode 100644 index 00000000000..5dcff4b0fb2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/conditional2_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f1,f2; + int i; + bool b; + float f3 = b ? i : f2; // second and third expression should of the type float +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/conditional3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/conditional3_frag.frag new file mode 100644 index 00000000000..bf28fa73c22 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/conditional3_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f1,f2; + bool b; + int i = b ? f1 : f2; // second and third expression type does not match the lvalue type +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constFunc_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constFunc_frag.frag new file mode 100644 index 00000000000..b93eeb02f9c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constFunc_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +vec2 func() +{ + vec2 v; + return v; +} + +void main() +{ + const vec3 v = vec3(1.0, func()); // user defined functions do not return const value + gl_FragColor = vec4(v, v); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constructor1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constructor1_frag.frag new file mode 100644 index 00000000000..2e58b3c0f3d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constructor1_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + vec4 v = vec4(1,2,3); // insufficient data provided for constructor, 4 values are required +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constructor2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constructor2_frag.frag new file mode 100644 index 00000000000..d56b85f9e0e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constructor2_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + vec3 v; + vec4 v1 = vec4(v); // insufficient data specified for construction +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constructor3_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constructor3_V100_frag.frag new file mode 100644 index 00000000000..8de87cc2c7e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/constructor3_V100_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + vec3 v; + vec4 v1 = vec4(v,v,v); // too many arguments in the constructor +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/continue_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/continue_frag.frag new file mode 100644 index 00000000000..98b51374575 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/continue_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + continue; // continue keyword allowed only inside the loops +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType10_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType10_frag.frag new file mode 100644 index 00000000000..1b426b05ea6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType10_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f; + float f; // redeclaration of a variable +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType11_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType11_frag.frag new file mode 100644 index 00000000000..ce87ce363d3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType11_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int i = 08; // invalid octal number +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType12_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType12_frag.frag new file mode 100644 index 00000000000..7a673b578b2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType12_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int i = 0xa8g; // invalid hexadecimal number +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType13_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType13_frag.frag new file mode 100644 index 00000000000..79b9b52bb01 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType13_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int i = 1; + float f = 1.2; + float result = f * i; // auto promotion now allowed +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType19_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType19_frag.frag new file mode 100644 index 00000000000..bbfa811911c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType19_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform sampler2D s; +void main() +{ + int i = int(s); // conversion not allowed +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType1_frag.frag new file mode 100644 index 00000000000..0221fe6a59d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType1_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + void v; // variable cannot be declared of the type void +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType2_frag.frag new file mode 100644 index 00000000000..b00b2122739 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType2_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform sampler2D samp1; +uniform sampler2D samp2 = samp1; // uniforms are read only + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType3_frag.frag new file mode 100644 index 00000000000..86369cc916f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType3_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform int i = 1; // uniforms are read only + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType4_frag.frag new file mode 100644 index 00000000000..55f2fb65381 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType4_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int i = 1.0; // automatic type conversion does not take place, float cannot be converted to int +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType5_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType5_frag.frag new file mode 100644 index 00000000000..398d0c87fe7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType5_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f = 1; // int cannot be converted to float, use constructor to do the conversion explicitly +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType6_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType6_frag.frag new file mode 100644 index 00000000000..e64906c08a6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType6_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + const float f; // constants must be initialized +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType7_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType7_frag.frag new file mode 100644 index 00000000000..6e05081cffb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType7_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float f; +void main() +{ + f = 1.0; // uniforms are read only +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType8_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType8_frag.frag new file mode 100644 index 00000000000..0a6ba7828e1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType8_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying float f; +void main() +{ + f = 1.0; // varyings cannot be written to in a fragment shader, they can be written to in a vertex shader +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType9_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType9_frag.frag new file mode 100644 index 00000000000..686685df34b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dataType9_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying float f; +void main() +{ + float flt = 1.0; + flt++; + f++; // varyings in a fragment shader are read only +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/default.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/default.frag new file mode 100644 index 00000000000..e283e255b7c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/default.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main (void) +{ + gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/default.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/default.vert new file mode 100644 index 00000000000..fc46a6ecd3b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/default.vert @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +void main (void) +{ + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + gl_PointSize = 1.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dowhile_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dowhile_frag.frag new file mode 100644 index 00000000000..59e7593f780 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dowhile_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f; + do { + } while(f); // condition should be boolean +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dvec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dvec2_frag.frag new file mode 100644 index 00000000000..0297c4e938a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dvec2_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + dvec2 d; // dvec2 is not a valid datatype, reserved for future use +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dvec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dvec3_frag.frag new file mode 100644 index 00000000000..5973555bc27 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dvec3_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + dvec3 d; // dvec3 is not a valid datatype, reserved for future use +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dvec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dvec4_frag.frag new file mode 100644 index 00000000000..2cafc8b2295 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/dvec4_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + dvec4 d; // dvec4 is not a valid datatype, reserved for future use +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension2_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension2_V100_frag.frag new file mode 100644 index 00000000000..0d2e37dc770 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension2_V100_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +#extension all : require // cannot use require or enable with all +#extension all : enable // cannot use require or enable with all + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension3_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension3_V100_frag.frag new file mode 100644 index 00000000000..fb3c49f79f1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension3_V100_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +#extension foo : require // error extension not supported + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension5_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension5_V100_frag.frag new file mode 100644 index 00000000000..bf3aad332b8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension5_V100_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +#extension all : ddisablee // error, behavior is not supported + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension6_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension6_V100_frag.frag new file mode 100644 index 00000000000..515844c4aec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension6_V100_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +#extension // error name and behavior not specified + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension7_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension7_V100_frag.frag new file mode 100644 index 00000000000..9f1356d866b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension7_V100_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +#extension foo // ":" missing after extension name + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension8_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension8_V100_frag.frag new file mode 100644 index 00000000000..ae18218c932 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension8_V100_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +#extension foo : // behavior not specified + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension9_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension9_V100_frag.frag new file mode 100644 index 00000000000..30f9d4c4903 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/extension9_V100_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +#extension foo behavior // ":" missing after extension name + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/float2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/float2_frag.frag new file mode 100644 index 00000000000..c40c998ca64 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/float2_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float2 f; // float2 is not a valid datatype +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/float3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/float3_frag.frag new file mode 100644 index 00000000000..407b184e0da --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/float3_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float3 f; // float3 is not a valid datatype +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/float4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/float4_frag.frag new file mode 100644 index 00000000000..5ac6262a797 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/float4_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float4 f; // float4 is not a valid datatype +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly1_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly1_vert.vert new file mode 100644 index 00000000000..ffde417a153 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly1_vert.vert @@ -0,0 +1,29 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main() +{ + gl_FrontFacing = true; // can be used in fragment shader only +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly2_vert.vert new file mode 100644 index 00000000000..f2c4289d844 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly2_vert.vert @@ -0,0 +1,29 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main() +{ + gl_FragCoord = vec4(1.0); // can be used in fragment shader only +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly3_vert.vert new file mode 100644 index 00000000000..9ddc58dc802 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly3_vert.vert @@ -0,0 +1,29 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main() +{ + gl_FragColor = vec4(1.0); // can be used in fragment shader only +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly4_vert.vert new file mode 100644 index 00000000000..1424f620150 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly4_vert.vert @@ -0,0 +1,29 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main() +{ + discard; // can be used in fragment shader only +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly_vert.vert new file mode 100644 index 00000000000..97c976a6b41 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/fragmentOnly_vert.vert @@ -0,0 +1,29 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main() +{ + gl_FragDepth = 1.0; // can be used in fragment shader only +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function10_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function10_frag.frag new file mode 100644 index 00000000000..5e03a5a676d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function10_frag.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void function(in int i); + +void main() +{ + float f; + // overloaded function not present + function(f); +} + +void function(in int i) +{ + i = 3; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function1_frag.frag new file mode 100644 index 00000000000..07cae0ea324 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function1_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void function(int i) +{ + return i; // void function cannot return a value +} + +void main() +{ + int i; + function(i); +} + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function2_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function2_V100_frag.frag new file mode 100644 index 00000000000..d2757c5c12c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function2_V100_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void function(int i[]) // size of array must be specified +{ +} + +void main() +{ + int i[2]; + function(i); +} + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function3_frag.frag new file mode 100644 index 00000000000..1ab15cbdd82 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function3_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void function(const int i) +{ + i = 3; // const value cant be modified +} + +void main() +{ + int i; + function(i); +} + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function4_frag.frag new file mode 100644 index 00000000000..5e75363b43f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function4_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform int uniformInt; + +void function(out int i) +{ + i = 1; +} + +void main() +{ + function(uniformInt); // out and inout parameters cannot be uniform since uniforms cannot be modified +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function6_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function6_frag.frag new file mode 100644 index 00000000000..82c8acbf6a6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function6_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void function(const out int i) +{ // out parameters cannot be const + i = 3; +} + +void main() +{ + int i; + function(i); +} + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function7_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function7_frag.frag new file mode 100644 index 00000000000..d57b1a66dc4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function7_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void function(uniform int i) +{ // uniform qualifier cannot be used with function parameters +} + +void main() +{ + int i; + function(i); +} + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function8_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function8_frag.frag new file mode 100644 index 00000000000..287b60e8220 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function8_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void function(const inout int i) +{ // inout parameters cannot be const + i = 3; +} + +void main() +{ + int i; + function(i); +} + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function9_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function9_frag.frag new file mode 100644 index 00000000000..bf9f7248c3d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/function9_frag.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void function(inout int i); + +void main() +{ + int i; + function(i); +} + +// function definition has different parameter qualifiers than function declaration +void function(in int i) +{ + i = 3; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/hvec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/hvec2_frag.frag new file mode 100644 index 00000000000..8fc71311c38 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/hvec2_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + hvec2 f; // hvec2 is not a valid datatype, reserved for future use +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/hvec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/hvec3_frag.frag new file mode 100644 index 00000000000..e7072b8269d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/hvec3_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + hvec3 f; // hvec3 is not a valid datatype, reserved for future use +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/hvec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/hvec4_frag.frag new file mode 100644 index 00000000000..ca70ea937c0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/hvec4_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + hvec4 f; // hvec4 is not a valid datatype, reserved for future use +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/identifier1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/identifier1_frag.frag new file mode 100644 index 00000000000..d00a318948c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/identifier1_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int 1i; // incorrect identifier name +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/identifier2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/identifier2_frag.frag new file mode 100644 index 00000000000..84193c09d03 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/identifier2_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int gl_int; // identifier name cannot begin with "gl_" +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/identifier3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/identifier3_frag.frag new file mode 100644 index 00000000000..9ab4840707d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/identifier3_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int i; + x; // identifier x used without being declared +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/if1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/if1_frag.frag new file mode 100644 index 00000000000..ff156240482 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/if1_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int i; + if (i) // condition of if statement must be a boolean + i++; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/if2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/if2_frag.frag new file mode 100644 index 00000000000..152d4fe3284 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/if2_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + vec2 v; + int i; + if (v) // vectors cannot be used as conditional expression for if statement + i++; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment1_frag.frag new file mode 100644 index 00000000000..838c058279d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment1_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct s { + int i; +} s1; + +void main() +{ + s1.i++; + s1++; // structure cannot be incremented +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment2_frag.frag new file mode 100644 index 00000000000..029b06b3927 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment2_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int i; + (i+i)++; // i+i is not an l-value +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment3_frag.frag new file mode 100644 index 00000000000..d980958562c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment3_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform sampler2D sampler2d; + +void main() +{ + sampler2d++; // uniforms cannot be modified +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment4_frag.frag new file mode 100644 index 00000000000..ad1dc450130 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment4_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int i; + i++ = 5; // i++ is not an l-value +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment6_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment6_frag.frag new file mode 100644 index 00000000000..fffd54d1306 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/increment6_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int i; + ++i++; // ++i++ is equivalent to ++(i++) which fails because i++ is not an lvalue. (++i)++; is legal. +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/input.run.txt new file mode 100644 index 00000000000..78dde7d629b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/input.run.txt @@ -0,0 +1,24 @@ +# this file is auto-generated. DO NOT EDIT. +build_001_to_008.html +build_009_to_016.html +build_017_to_024.html +build_025_to_032.html +build_033_to_040.html +build_041_to_048.html +build_049_to_056.html +build_057_to_064.html +build_065_to_072.html +build_073_to_080.html +build_081_to_088.html +build_089_to_096.html +build_097_to_104.html +build_105_to_112.html +build_113_to_120.html +build_121_to_128.html +build_129_to_136.html +build_137_to_144.html +build_145_to_152.html +build_153_to_160.html +build_161_to_168.html +build_169_to_176.html +build_177_to_178.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/main1_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/main1_vert.vert new file mode 100644 index 00000000000..617598ee524 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/main1_vert.vert @@ -0,0 +1,28 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +main() // return type of main should be void +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/main2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/main2_vert.vert new file mode 100644 index 00000000000..fcd49232fa2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/main2_vert.vert @@ -0,0 +1,29 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main(int i) // main function cannot take any parameters +{ + gl_Position = vec4(1); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/main3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/main3_vert.vert new file mode 100644 index 00000000000..43b6cb72aa5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/main3_vert.vert @@ -0,0 +1,29 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +int main() // return type of main should be void +{ + return 1; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/matrix_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/matrix_V100_frag.frag new file mode 100644 index 00000000000..b5051acef39 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/matrix_V100_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + mat3 m; + mat4 m1 = mat4(m); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/normal_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/normal_vert.vert new file mode 100644 index 00000000000..517780e0e70 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/normal_vert.vert @@ -0,0 +1,30 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Normal; +void main() +{ + gtf_Normal = vec3(1.0,2.0,3.0); // cannot be modified an attribute +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser10_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser10_frag.frag new file mode 100644 index 00000000000..838c91603a6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser10_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + 5 += 5; // l-value missing +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser1_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser1_vert.vert new file mode 100644 index 00000000000..bce0573b135 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser1_vert.vert @@ -0,0 +1,30 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +void main() +{ + int a // semicolon missing at the end of the statement + gl_Position = vec4(a); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser3_frag.frag new file mode 100644 index 00000000000..b088ce865fb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser3_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f[3]; + f[3] = 1.0; // index of array greater than the size of the array +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser4_frag.frag new file mode 100644 index 00000000000..83f5dd413a8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser4_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + const int i = 5; + i++; // const cannot be modified +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser5_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser5_frag.frag new file mode 100644 index 00000000000..f6e5d3ebbe8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser5_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + vec2 v; + v.z = 1.2; // vec2 does not have a z component +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser6_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser6_frag.frag new file mode 100644 index 00000000000..53a6ace1db3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser6_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f1,f2,f3; + f3 = f1 > f2; // f1 > f2 result in a bool that cannot be assigned to a float +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser7_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser7_frag.frag new file mode 100644 index 00000000000..bac24a4bfc9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser7_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + mat2 m1,m2; + bool b = m1 > m2; // greater-than operator can not operate on matrices, however, equal (==) and not equal (!=) operators can be used with matrices +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser8_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser8_frag.frag new file mode 100644 index 00000000000..796712885f8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser8_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + vec2 v2; + vec3 v3; + bool b = v2 == v3; // equal operator cannot operator on vectors of different sizes +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser9_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser9_frag.frag new file mode 100644 index 00000000000..def43a75114 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/parser9_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f1,f2; + bool b = f1 && f2; // &&, || and ^^ operate on a boolean expression only +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess0_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess0_frag.frag new file mode 100644 index 00000000000..a8073c48afe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess0_frag.frag @@ -0,0 +1,80 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +//test for else elif mismatch +#define test(x,y) (x+y) + +void main(void){ + int sum =0; + #define x 8 + #endif + #if (x==8) + #undef x + #endif + + #if 1 + #undef x + #endif + + #if 1 + #define t4 4 + #endif + + sum=test(3,6)+t4; + #if 1 + #if 1 + #if 1 + #if 1 + #if 0 + #undef test + #else + #if 1 + #undef test + #endif + #if 0 + #undef test + #else + #if 0 + #undef test + #else + #if 1 + #undef test + #else + #undef test + #else + #jdhgj + #endif + #endif + #endif + #endif + #endif + #endif + #endif + #endif + +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess10_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess10_frag.frag new file mode 100644 index 00000000000..22c491f8292 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess10_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +/* The program should terminate with an error message and not get into an + infinite loop */ +#ifdef name + +void main() +{ + gl_FragColor = vec4(1); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess1_frag.frag new file mode 100644 index 00000000000..3273e3ec770 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess1_frag.frag @@ -0,0 +1,81 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// tests for macro redifinition (t2) and the #if and #else nestings. +// takes care of elif also. + +#define t1 (1+2) +#define t2 2 +#define t2 3 + +// testing the if depth +#if (t1==3) + #define t3 3 + #if defined t2 + #define t4 4 + #if defined(t3) + #define t5 5 + #ifdef t5 + #define t6 6 + #ifndef t7 + #define t7 7 + #else + #define t8 8 + #endif + #endif + #else + #ifndef t8 + #define t8 8 + #elif (t8==8) + #define t9 9 + #else + #if defined t7 + #define t9 9 + #endif + #endif + #endif + #else + #define t10 10 + #endif +#endif + + +#define t8 8 +#define t9 9 +#define t10 10 + +void main(void) +{ + int sum=1 ; + sum = t1+t2; + sum = t3+t4; + sum = t5+t6; + sum = t7+t8; + sum = t9+t10; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess2_frag.frag new file mode 100644 index 00000000000..5d5845275ed --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess2_frag.frag @@ -0,0 +1,77 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// #line directive-- test cases. +// chks for Invalid directives, all possible #line errors +// Also checks the correct verions of #line dorective. + +#define t1 1 +#define t2 2 + +# +# +# +# +#line 8 +#line "" +#line 3 3 + +#linekfj +#line c c +#line t1 t2 +#line 77 89 +#line 65.4 +#line message to the user +#line +#line345 + +void main(void) +{ + int sum =1; + sum = __LINE__; + sum = __FILE__; + #line 4 5 + sum = __LINE__; + sum = __FILE__; + #line 9 + sum = __LINE__ + __FILE__ ; + sum = __FILE__; + # + # + sum = __VERSION__; + sum = sum + __LINE__ ; + #line 4 5 + #line 5 8 + sum = __LINE__; + sum = __FILE__; + sum = __VERSION__; + +} + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess3_frag.frag new file mode 100644 index 00000000000..374464790f5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess3_frag.frag @@ -0,0 +1,60 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// simple macro expansions. +// Tests for Too few macro arguments, too many macro arguments. +// Macros with no arguments. + +#define t1 -1 +#define t2 2 + +#define test -258 +#define test1 (test*test) +#define test2(x) (x+test1) +#define test3() (test2(8)*(test*test1)) +#define test4(x,y) (x+y) + +void main(void) +{ + int sum =0; + sum = test3(); + sum = test3(3); + + sum = test2(9); + sum = test2(9,8); + + sum = test4; + sum = test2(8,5,78,9); + sum = sum + test1; + sum = 8+58+sum; + sum = sum +test; + sum = (t1+t2); + sum = test4(test3(),test2(test3())); + sum = test4(3,8,5); + sum = test4(); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess4_frag.frag new file mode 100644 index 00000000000..501dab10c71 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess4_frag.frag @@ -0,0 +1,77 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// #error and #pragma directives -- test cases. +// tests for errors in #pragma directive. + +#pragma optimize(on) +#pragma debug(off) + +int foo(int); + +void main(void) +{ + int sum =0; + #error ; + #error 78 + #error c + #error "message to the user " + #error message to the user + #error + #error + #define t1 1 + sum = t1*t1; + foo(sum); + +} + +#pragma optimize(off) +#pragma bind(on) +#pragma pack(off) + +int foo(int test) +{ + int binding=0; + binding = test; + return binding; +} + +#line 4 +#pragma +#line 5 6 +#pragma optmimize on +#pragma debug off +#pragma debug(off +#line 9 +#prgma bind(off) +#pragma bind +#pragma (on) +#pragma on (on) +#pragma optmize(on + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess6_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess6_frag.frag new file mode 100644 index 00000000000..0fc4b509a40 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess6_frag.frag @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// operator precedence and some macro expansions. + +#define test (1+2) +#define test1 (test*4) +#define test2 (test1/test) +//#define test3 (-1+2*3/4%test) +#define test3 (-1+2*3/4) +//#define test4 (test & test1 |test2) +#define test4 (test) +#define test5 (!8+~4+4-6) +#define test6 (test1>>1) +#define test7 (test1<<1) +#define test8 (test2^6) +#define test9 (test4 || test5 && test1) +#define test10 (0) + +void main(void) +{ + int sum =0; + sum = test4; + sum = test3*test2+test1-test; +// sum = test3/test6 + test4*test7 - test7 % test9; +// sum = test3/test6 + test4*test7 - test7; + sum = test10*test5; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess7_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess7_frag.frag new file mode 100644 index 00000000000..c4cc1e02280 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/preprocess7_frag.frag @@ -0,0 +1,68 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// testing for char constants in #if and #elif +// Also checking whether reserved words can be redefined. + +#define t1 c +#define t2 d +#define asm a + + #if(t1==c) + #define t3 3 + #elif(t1==d) + #define t4 4 + #elif(t2==c) + #define t5 5 + #endif + + #ifndef t1 + #define t7 7 + #elif (t2==d) + #define t6 6 + #endif + + #if (t2=='d') + #define half 5 + #else + #define half 8 + #endif + + #ifdef t22 + #define x 5 + #endif + + void main(void) + { + int sum =0,a=9; + + sum = half + sum; + sum = asm + a; + + } + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/scoping1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/scoping1_frag.frag new file mode 100644 index 00000000000..d826522b539 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/scoping1_frag.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + bool b; + if (b) + { + int i = 1; + i++; + } + i++; // i is not declared in this scope +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/scoping2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/scoping2_frag.frag new file mode 100644 index 00000000000..ebb871e8b13 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/scoping2_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + { + int i = 1; + i++; + } + i++; // i is not declared in this scope +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct10_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct10_frag.frag new file mode 100644 index 00000000000..65dd3c133ce --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct10_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct s { + int i; +} s1[2]; + +void main() +{ + s1.i = 1; // s1 is an array. s1[0].i is correct to use +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct11_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct11_frag.frag new file mode 100644 index 00000000000..1ead0270343 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct11_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct s { + int i; +} s1; + +void main() +{ + s1 = -s1; // cannot calculate negative of a structure +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct1_frag.frag new file mode 100644 index 00000000000..613b4fc147c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct1_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct s { + int i; +} uniform uniformStruct; // uniform keyword should be used before the keyword struct + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct2_frag.frag new file mode 100644 index 00000000000..031319ac06c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct2_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct s { + int i = 1.0; // struct members cannot be initialized at the time of structure declaration +} s1; + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct3_frag.frag new file mode 100644 index 00000000000..a53271af868 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct3_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct s { + uniform int i; // structure members cannot be declared with const qualifier +} s1; + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct4_frag.frag new file mode 100644 index 00000000000..14b9b662c34 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct4_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct s { + const int i = 1; // structure members cannot be declared with const qualifier +} s1; + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct5_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct5_frag.frag new file mode 100644 index 00000000000..74a12af4adb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct5_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform struct s { + int i; +} s1; + +void main() +{ + s1.i = 1; // uniforms are read only +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct6_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct6_frag.frag new file mode 100644 index 00000000000..937331496cf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct6_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying struct s { + int i; +} s1; // structures cannot be declared with varying qualifier + +void main() +{ +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct7_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct7_frag.frag new file mode 100644 index 00000000000..7f9b0818fa2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct7_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + struct s { + } s1; // structures have to be declared with atleast one member +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct8_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct8_frag.frag new file mode 100644 index 00000000000..c83f398e319 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct8_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct s { + int i; +} s1; + +struct ss { + int i; +} s2; + +void main() +{ + s1 = s2; // two different structures cannot be assigned to each other +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct9_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct9_frag.frag new file mode 100644 index 00000000000..14babe34786 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/struct9_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +const struct s { + int i; +} s1 = s(1); + +void main() +{ + s1.i = 1; // const struct members cannot be modified +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/swizzle1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/swizzle1_frag.frag new file mode 100644 index 00000000000..39dddcb299d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/swizzle1_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + vec2 v; + v.xy = 1.2; // swizzle needs two values, v.xy = vec2(1.2) is correct +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/swizzle2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/swizzle2_frag.frag new file mode 100644 index 00000000000..8eb8162bd8d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/swizzle2_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + vec2 v; + v.xx = vec2(1,1); // x cannot be used twice in l-value +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/swizzle3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/swizzle3_frag.frag new file mode 100644 index 00000000000..b8bdb5ef405 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/swizzle3_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + vec2 v; + vec3 v3 = v.xyz; // v is a vec2 and does not have a z component +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/typecast_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/typecast_frag.frag new file mode 100644 index 00000000000..88d416ea98a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/typecast_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + vec4 v; + vec4 v1 = (vec4) v; // incorrect typecasting, vec4(v) is correct +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/uniform1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/uniform1_frag.frag new file mode 100644 index 00000000000..7ba746f65d2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/uniform1_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct gtf_FogParameters { +vec4 color; +float density; +float start; +float end; +float scale; +}; +uniform gtf_FogParameters gtf_Fog; +void main() +{ + gtf_Fog.density = 1.0; // cannot modify a uniform +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/uniform_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/uniform_frag.frag new file mode 100644 index 00000000000..125bf56dd50 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/uniform_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + uniform float foo; // uniforms can only be declared at a global scope +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying1_frag.frag new file mode 100644 index 00000000000..0938a024d8b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying1_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying float foo; + +void main() +{ + foo = 5.0; // varying cannot be written by a fragment shader +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying2_frag.frag new file mode 100644 index 00000000000..9873689f8c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying2_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying int foo; // varyings cannot be int or bool + +void main() +{ + +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying3_frag.frag new file mode 100644 index 00000000000..0518876ad83 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying3_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 v = vec4(1,1,1,1);//gl_TexCoord[0]; // varyings cannot be initialized + +void main() +{ + +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying_frag.frag new file mode 100644 index 00000000000..50a76305542 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/varying_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + varying float foo; // varyings can only be declared at a global scope +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vector_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vector_frag.frag new file mode 100644 index 00000000000..a88027ede74 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vector_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + ivec4 v4; + v4 = v4 + 2.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/version2_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/version2_V100_frag.frag new file mode 100644 index 00000000000..852640fe797 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/version2_V100_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#pragma debug(on) +#version 100 // error #version should be the first statement in the program +#ifdef GL_ES +precision mediump float; +#endif + + +void main() +{ + gl_FragColor = vec4(1); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/version3_V100_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/version3_V100_frag.frag new file mode 100644 index 00000000000..980a2d5ace8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/version3_V100_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +/* This is a comment*/ int i; // This is a global decl +#version 100 // error #version should be the first statement in the program +#ifdef GL_ES +precision mediump float; +#endif + + +void main() +{ + gl_FragColor = vec4(1); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vertexOnly2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vertexOnly2_frag.frag new file mode 100644 index 00000000000..0e4547d439b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vertexOnly2_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + gl_Position = vec4(4.0); // can be used in vertex shader only +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vertexOnly_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vertexOnly_frag.frag new file mode 100644 index 00000000000..cc44d249639 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vertexOnly_frag.frag @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct gtf_PointParameters { +float size; +float sizeMin; +float sizeMax; +float fadeThresholdSize; +float distanceConstantAttenuation; +float distanceLinearAttenuation; +float distanceQuadraticAttenuation; +}; +uniform gtf_FogParameters gtf_Point; +void main() +{ + gtf_PointSize = 4.0; // can be used in vertex shader only +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vertex_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vertex_vert.vert new file mode 100644 index 00000000000..e4b1f4474bd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/vertex_vert.vert @@ -0,0 +1,30 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +void main() +{ + gtf_Vertex = vec4(1.0,2.0,3.0, 4.0); // cannot modify an attribute +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/while1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/while1_frag.frag new file mode 100644 index 00000000000..64894fa34ac --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/while1_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + int i; + while(i) { // condition should be boolean + } +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/while2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/while2_frag.frag new file mode 100644 index 00000000000..68df2b3bd47 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/while2_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + while(float f = 5.0) { // cannot declare variables in condition + } +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/while_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/while_frag.frag new file mode 100644 index 00000000000..d55d0019433 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/build/while_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main() +{ + float f; + while(f) { // condition should be boolean + } +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/built_in_varying_array_out_of_bounds/built_in_varying_array_out_of_bounds_001_to_001.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/built_in_varying_array_out_of_bounds/built_in_varying_array_out_of_bounds_001_to_001.html new file mode 100644 index 00000000000..e6542bfe8d6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/built_in_varying_array_out_of_bounds/built_in_varying_array_out_of_bounds_001_to_001.html @@ -0,0 +1,63 @@ + + + + + +WebGL GLSL conformance test: built_in_varying_array_out_of_bounds_001_to_001.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/built_in_varying_array_out_of_bounds/gl_Color_array_index_out_of_bounds_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/built_in_varying_array_out_of_bounds/gl_Color_array_index_out_of_bounds_frag.frag new file mode 100644 index 00000000000..4a83d9cfa1a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/built_in_varying_array_out_of_bounds/gl_Color_array_index_out_of_bounds_frag.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main(void) +{ + gl_FragColor = vec4(color[1], color[2], color[3], color[4]); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/built_in_varying_array_out_of_bounds/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/built_in_varying_array_out_of_bounds/input.run.txt new file mode 100644 index 00000000000..be6485a1f3f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/built_in_varying_array_out_of_bounds/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +built_in_varying_array_out_of_bounds_001_to_001.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_001_to_006.html new file mode 100644 index 00000000000..c8b3a25732f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: ceil_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_frag_xvary.frag new file mode 100644 index 00000000000..dfb425e48d9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 10.0 * 2.0 * (color.r - 0.5); + gl_FragColor = vec4((ceil(c) + 10.0) / 20.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..56b73e785b0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_frag_xvary_ref.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +float ceil_ref(float x) +{ + if(x != floor(x)) x = floor(x) + 1.0; + return x; +} + +void main (void) +{ + float c = 10.0 * 2.0 * (color.r - 0.5); + gl_FragColor = vec4((ceil_ref(c) + 10.0) / 20.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_vert_xvary.vert new file mode 100644 index 00000000000..da5e9f8005a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 10.0 * 2.0 * (gtf_Color.r - 0.5); + color = vec4((ceil(c) + 10.0) / 20.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..9872fd198d6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_float_vert_xvary_ref.vert @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +float ceil_ref(float x) +{ + if(x != floor(x)) x = floor(x) + 1.0; + return x; +} + +void main (void) +{ + float c = 10.0 * 2.0 * (gtf_Color.r - 0.5); + color = vec4((ceil_ref(c) + 10.0) / 20.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_frag_xvary.frag new file mode 100644 index 00000000000..836c6978692 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (color.rg - 0.5); + gl_FragColor = vec4((ceil(c) + 10.0) / 20.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..4c624a57b59 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_frag_xvary_ref.frag @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +vec2 ceil_ref(vec2 x) +{ + if(x[0] != floor(x[0])) x[0] = floor(x[0]) + 1.0; + if(x[1] != floor(x[1])) x[1] = floor(x[1]) + 1.0; + return x; +} + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (color.rg - 0.5); + gl_FragColor = vec4((ceil_ref(c) + 10.0) / 20.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_vert_xvary.vert new file mode 100644 index 00000000000..8240119c83d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (gtf_Color.rg - 0.5); + color = vec4((ceil(c) + 10.0) / 20.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..7483c22cc3b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec2_vert_xvary_ref.vert @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +vec2 ceil_ref(vec2 x) +{ + if(x[0] != floor(x[0])) x[0] = floor(x[0]) + 1.0; + if(x[1] != floor(x[1])) x[1] = floor(x[1]) + 1.0; + return x; +} + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (gtf_Color.rg - 0.5); + color = vec4((ceil_ref(c) + 10.0) / 20.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_frag_xvary.frag new file mode 100644 index 00000000000..45d02666650 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4((ceil(c) + 10.0) / 20.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..652be10fc2e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_frag_xvary_ref.frag @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +vec3 ceil_ref(vec3 x) +{ + if(x[0] != floor(x[0])) x[0] = floor(x[0]) + 1.0; + if(x[1] != floor(x[1])) x[1] = floor(x[1]) + 1.0; + if(x[2] != floor(x[2])) x[2] = floor(x[2]) + 1.0; + return x; +} + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4((ceil_ref(c) + 10.0) / 20.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_vert_xvary.vert new file mode 100644 index 00000000000..e7a32134577 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (gtf_Color.rgb - 0.5); + color = vec4((ceil(c) + 10.0) / 20.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..1bb4b809292 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/ceil_vec3_vert_xvary_ref.vert @@ -0,0 +1,44 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +vec3 ceil_ref(vec3 x) +{ + if(x[0] != floor(x[0])) x[0] = floor(x[0]) + 1.0; + if(x[1] != floor(x[1])) x[1] = floor(x[1]) + 1.0; + if(x[2] != floor(x[2])) x[2] = floor(x[2]) + 1.0; + return x; +} + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (gtf_Color.rgb - 0.5); + color = vec4((ceil_ref(c) + 10.0) / 20.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/input.run.txt new file mode 100644 index 00000000000..ed1a87ffadd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/ceil/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +ceil_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_001_to_006.html new file mode 100644 index 00000000000..9abe66de09b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: clamp_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_frag_xvary_yconstquarter.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_frag_xvary_yconstquarter.frag new file mode 100644 index 00000000000..2c32377d2ec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_frag_xvary_yconstquarter.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float min_c = 0.25; + const float max_c = 0.75; + float c = color.r; + gl_FragColor = vec4(clamp(c, min_c, max_c), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_frag_xvary_yconstquarter_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_frag_xvary_yconstquarter_ref.frag new file mode 100644 index 00000000000..2b1e5a340d6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_frag_xvary_yconstquarter_ref.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float min_c = 0.25; + const float max_c = 0.75; + float c = color.r; + if(c > max_c) c = max_c; + if(c < min_c) c = min_c; + + gl_FragColor = vec4(c, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_vert_xvary_yconstquarter.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_vert_xvary_yconstquarter.vert new file mode 100644 index 00000000000..68aa1a4b632 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_vert_xvary_yconstquarter.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float min_c = 0.25; + const float max_c = 0.75; + float c = gtf_Color.r; + color = vec4(clamp(c, min_c, max_c), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_vert_xvary_yconstquarter_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_vert_xvary_yconstquarter_ref.vert new file mode 100644 index 00000000000..bc6d8c00e6a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_float_vert_xvary_yconstquarter_ref.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float min_c = 0.25; + const float max_c = 0.75; + float c = gtf_Color.r; + if(c > max_c) c = max_c; + if(c < min_c) c = min_c; + + color = vec4(c, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_frag_xvary_yconstquarter.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_frag_xvary_yconstquarter.frag new file mode 100644 index 00000000000..e912dd375b7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_frag_xvary_yconstquarter.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec2 min_c = vec2(0.25, 0.25); + const vec2 max_c = vec2(0.75, 0.75); + vec2 c = color.rg; + gl_FragColor = vec4(clamp(c, min_c, max_c), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_frag_xvary_yconstquarter_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_frag_xvary_yconstquarter_ref.frag new file mode 100644 index 00000000000..54face3fec3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_frag_xvary_yconstquarter_ref.frag @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec2 min_c = vec2(0.25, 0.25); + const vec2 max_c = vec2(0.75, 0.75); + vec2 c = color.rg; + if(c[0] < min_c[0]) c[0] = min_c[0]; + if(c[1] < min_c[1]) c[1] = min_c[1]; + if(c[0] > max_c[0]) c[0] = max_c[0]; + if(c[1] > max_c[1]) c[1] = max_c[1]; + + gl_FragColor = vec4(c, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_vert_xvary_yconstquarter.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_vert_xvary_yconstquarter.vert new file mode 100644 index 00000000000..17474f371d5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_vert_xvary_yconstquarter.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float min_c = 0.25; + const float max_c = 0.75; + vec2 c = gtf_Color.rg; + color = vec4(clamp(c, min_c, max_c), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_vert_xvary_yconstquarter_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_vert_xvary_yconstquarter_ref.vert new file mode 100644 index 00000000000..e566319c981 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec2_vert_xvary_yconstquarter_ref.vert @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float min_c = 0.25; + const float max_c = 0.75; + vec2 c = gtf_Color.rg; + if(c[0] > max_c) c[0] = max_c; + if(c[0] < min_c) c[0] = min_c; + if(c[1] > max_c) c[1] = max_c; + if(c[1] < min_c) c[1] = min_c; + + color = vec4(c, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_frag_xvary_yconstquarter.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_frag_xvary_yconstquarter.frag new file mode 100644 index 00000000000..c294c26bbea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_frag_xvary_yconstquarter.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec3 min_c = vec3(0.25, 0.25, 0.25); + const vec3 max_c = vec3(0.75, 0.75, 0.75); + vec3 c = color.rgb; + gl_FragColor = vec4(clamp(c, min_c, max_c), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_frag_xvary_yconstquarter_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_frag_xvary_yconstquarter_ref.frag new file mode 100644 index 00000000000..e09f795b344 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_frag_xvary_yconstquarter_ref.frag @@ -0,0 +1,44 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec3 min_c = vec3(0.25, 0.25, 0.25); + const vec3 max_c = vec3(0.75, 0.75, 0.75); + vec3 c = color.rgb; + if(c[0] < min_c[0]) c[0] = min_c[0]; + if(c[1] < min_c[1]) c[1] = min_c[1]; + if(c[2] < min_c[2]) c[2] = min_c[2]; + if(c[0] > max_c[0]) c[0] = max_c[0]; + if(c[1] > max_c[1]) c[1] = max_c[1]; + if(c[2] > max_c[2]) c[2] = max_c[2]; + + gl_FragColor = vec4(c, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_vert_xvary_yconstquarter.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_vert_xvary_yconstquarter.vert new file mode 100644 index 00000000000..50c14ffc522 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_vert_xvary_yconstquarter.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float min_c = 0.25; + const float max_c = 0.75; + vec3 c = gtf_Color.rgb; + color = vec4(clamp(c, min_c, max_c), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_vert_xvary_yconstquarter_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_vert_xvary_yconstquarter_ref.vert new file mode 100644 index 00000000000..6ba4f0d42dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/clamp_vec3_vert_xvary_yconstquarter_ref.vert @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float min_c = 0.25; + const float max_c = 0.75; + vec3 c = gtf_Color.rgb; + if(c[0] > max_c) c[0] = max_c; + if(c[0] < min_c) c[0] = min_c; + if(c[1] > max_c) c[1] = max_c; + if(c[1] < min_c) c[1] = min_c; + if(c[2] > max_c) c[2] = max_c; + if(c[2] < min_c) c[2] = min_c; + + color = vec4(c, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/input.run.txt new file mode 100644 index 00000000000..2fafa275a45 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/clamp/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +clamp_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/control_flow_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/control_flow_001_to_008.html new file mode 100644 index 00000000000..76f9859b88e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/control_flow_001_to_008.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: control_flow_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/control_flow_009_to_010.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/control_flow_009_to_010.html new file mode 100644 index 00000000000..3845a8d9fd5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/control_flow_009_to_010.html @@ -0,0 +1,103 @@ + + + + + +WebGL GLSL conformance test: control_flow_009_to_010.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_break_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_break_frag.frag new file mode 100644 index 00000000000..ff23a7859c8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_break_frag.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int count = 0; + for(int i=0;i<5;i++) + { + count++; + if(count == 3) + break; + } + + float gray; + if( count == 3) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_break_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_break_vert.vert new file mode 100644 index 00000000000..84a517d947b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_break_vert.vert @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int count = 0; + for(int i=0;i<45;i++) + { + count++; + if(count == 29) + break; + } + float gray; + if( count == 29) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_continue_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_continue_frag.frag new file mode 100644 index 00000000000..df501385e62 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_continue_frag.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int count=0; + int val=0; + + for(int i=0;i<10;i++) + { + count++; + if(count == 5) + continue; + else + val += count; + } + + float gray; + if( val == 50) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_continue_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_continue_vert.vert new file mode 100644 index 00000000000..80da6b92287 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_continue_vert.vert @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int count=0; + int val=0; + for(int i=0;i<10;i++) + { + count++; + if(count == 5) + continue; + else + val += count; + } + + + float gray; + if( val == 50) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_break_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_break_frag.frag new file mode 100644 index 00000000000..dc0cdb59a23 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_break_frag.frag @@ -0,0 +1,52 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int count1 = 0, count2 = 0; + for(int i=0;i<4;i++) + { + count1++; + count2 = 0; + for(int j=0;j<4;j++) + { + count2++; + if(count2 == 3) + break; + } + if(count1 == 2) + break; + } + float gray; + if( (count1 == 2) && (count2 == 3)) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_break_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_break_vert.vert new file mode 100644 index 00000000000..47491be115a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_break_vert.vert @@ -0,0 +1,52 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int count1 = 0, count2 = 0; + for(int i=0;i<45;i++) + { + count1++; + count2 = 0; + for(int j=0;j<45;j++) + { + count2++; + if(count2 == 29) + break; + } + if(count1 == 29) + break; + } + float gray; + if( (count1 == 29) && (count2 == 29)) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_continue_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_continue_frag.frag new file mode 100644 index 00000000000..6651cc75c1e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_continue_frag.frag @@ -0,0 +1,61 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int count1 = 0, count2 = 0; + int val1 = 0, val2 = 0; + for(int i=0;i<4;i++) + { + count1++; + count2 = 0; + for(int j=0;j<4;j++) + { + count2++; + if(count2 == 2) + continue; + else + val2 += count2; + + } + + + if(count1 == 2) + continue; + else + val1 += count1; + + } + float gray; + if( (val1 == 8) && (val2 == 32) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_continue_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_continue_vert.vert new file mode 100644 index 00000000000..0b96b9a4b8c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/for_nested_continue_vert.vert @@ -0,0 +1,61 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int count1 = 0, count2 = 0; + int val1 = 0, val2 = 0; + for(int i=0;i<10;i++) + { + count1++; + count2 = 0; + for(int j=0;j<10;j++) + { + count2++; + if(count2 == 5) + continue; + else + val2 += count2; + + } + + + if(count1 == 5) + continue; + else + val1 += count1; + + } + float gray; + if( (val1 == 50) && (val2 == 500) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/input.run.txt new file mode 100644 index 00000000000..fddcaa48ae4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/input.run.txt @@ -0,0 +1,3 @@ +# this file is auto-generated. DO NOT EDIT. +control_flow_001_to_008.html +control_flow_009_to_010.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/nested_if_else_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/nested_if_else_frag.frag new file mode 100644 index 00000000000..66525bf6c5d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/nested_if_else_frag.frag @@ -0,0 +1,57 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int setval = 30; + + if(--setval!=29) + if( (setval+=11) == 40) + if(setval/4 == 11) + setval = 11; + else if(setval/4 == 10) + if(setval-3 == 37) + setval=12; + else setval = 9; + else setval = 10; + else setval = 30; + else if(setval == 29) + if((setval+=19) != 48) + setval = 13; + else if((setval+=19) == 29) + setval = 28; + else setval = 53; + else setval = 32; + float gray; + if( setval == 53 ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/nested_if_else_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/nested_if_else_vert.vert new file mode 100644 index 00000000000..f0d560b7cfc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/control_flow/nested_if_else_vert.vert @@ -0,0 +1,57 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int setval = 30; + + if(--setval!=29) + if( (setval+=11) == 40) + if(setval/4 == 11) + setval = 11; + else if(setval/4 == 10) + if(setval-3 == 37) + setval=12; + else setval = 9; + else setval = 10; + else setval = 30; + else if(setval == 29) + if((setval+=19) != 48) + setval = 13; + else if((setval+=19) == 29) + setval = 28; + else setval = 53; + else setval = 32; + float gray; + if( setval == 53 ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_001_to_006.html new file mode 100644 index 00000000000..6da15738437 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: cos_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_frag_xvary.frag new file mode 100644 index 00000000000..4cef9e2e21e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + gl_FragColor = vec4(0.5 * cos(2.0 * M_PI * color.r) + 0.5, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..fb906c198f8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_frag_xvary_ref.frag @@ -0,0 +1,70 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 2.0 * M_PI * ( fract(abs(color.r)) - 0.5 ); + float sign = 1.0; + float cos_c = -1.0; + float fact_even = 1.0; + float fact_odd = 1.0; + float sum; + + // At this point c is in the range [-PI, PI) + + // Taylor-Maclaurin series expansion for cosine + // + // Apply the property that pow(a, b + c) = pow(a, b) * pow(a, c) + // and the property that 1.0/(a*b) = 1.0/a * 1.0/b + // to make sure no register ever overflows the range (-16384, +16384) + // mandated for mediump variables. + + for(int i = 2; i <= 10; i += 2) + { + // fact_even will hold at most the value 3840. + fact_even *= float(i); + + // fact_odd will always be smaller than fact_even + fact_odd *= float(i-1); + + // pow(c, float(i/2)) takes at most the value pow(PI, 5), which is approx. 306 + // abs(sum) is at most PI/2.0 + sum = sign * pow(abs(c), float(i/2))/fact_even; + + // abs(sum/fact_odd) is at most PI/2.0 + // cos_c is always bound in the range [-1.0, 1.0) + cos_c += pow(abs(c), float(i/2))*(sum/fact_odd); + + sign = -sign; + } + + gl_FragColor = vec4(0.5 * cos_c + 0.5, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_vert_xvary.vert new file mode 100644 index 00000000000..ff1bf21def6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + color = vec4(0.5 * cos(2.0 * M_PI * gtf_Color.r) + 0.5, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..a47efbfbbed --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_float_vert_xvary_ref.vert @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 2.0 * M_PI * gtf_Color.r; + float sign = -1.0; + float cos_c = 1.0; + float fact = 1.0; + + // Taylor-Maclaurin series expansion for cosine + for(int i = 2; i <= 20; i += 2) + { + fact *= float(i)*float(i-1); + cos_c += sign*pow(c, float(i))/fact; + sign = -sign; + } + + color = vec4(0.5 * cos_c + 0.5, 0.0, 0.0, 1.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_frag_xvary.frag new file mode 100644 index 00000000000..303bcd98565 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + gl_FragColor = vec4(0.5 * cos(2.0 * M_PI * color.rg) + 0.5, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..4b1c833cf58 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_frag_xvary_ref.frag @@ -0,0 +1,74 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * M_PI * ( fract(abs(color.rg)) - 0.5 ); + float sign = 1.0; + vec2 cos_c = vec2(-1.0, -1.0); + float fact_even = 1.0; + float fact_odd = 1.0; + vec2 sum; + vec2 exp; + + // At this point c is in the range [-PI, PI) + + // Taylor-Maclaurin series expansion for cosine + // + // Apply the property that pow(a, b + c) = pow(a, b) * pow(a, c) + // and the property that 1.0/(a*b) = 1.0/a * 1.0/b + // to make sure no register ever overflows the range (-16384, +16384) + // mandated for mediump variables. + + for(int i = 2; i <= 10; i += 2) + { + // fact_even will hold at most the value 3840. + fact_even *= float(i); + + // fact_odd will always be smaller than fact_even + fact_odd *= float(i-1); + + // exp is at most (5,5) + exp = vec2(float(i/2), float(i/2)); + + // pow(c, exp) takes at most the value pow(PI, 5), which is approx. 306 + // abs(sum) is at most PI/2.0 + sum = sign * pow(abs(c), exp)/fact_even; + + // abs(sum/fact_odd) is at most PI/2.0 + // cos_c is always bound in the range [-1.0, 1.0) + cos_c += pow(abs(c), exp)*(sum/fact_odd); + + sign = -sign; + } + + gl_FragColor = vec4(0.5 * cos_c + 0.5, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_vert_xvary.vert new file mode 100644 index 00000000000..6c9daf513ba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + color = vec4(0.5 * cos(2.0 * M_PI * gtf_Color.rg) + 0.5, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..9aab45e87bb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec2_vert_xvary_ref.vert @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * M_PI * gtf_Color.rg; + float sign = -1.0; + vec2 cos_c = vec2(1.0, 1.0); + float fact = 1.0; + + // Taylor-Maclaurin series expansion for cosine + for(int i = 2; i <= 20; i += 2) + { + fact *= float(i)*float(i-1); + cos_c += sign*pow(c, vec2(float(i), float(i)))/fact; + sign = -sign; + } + + color = vec4(0.5 * cos_c + 0.5, 0.0, 1.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_frag_xvary.frag new file mode 100644 index 00000000000..2470106a75f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + gl_FragColor = vec4(0.5 * cos(2.0 * M_PI * color.rgb) + 0.5, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..948400d9dfc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_frag_xvary_ref.frag @@ -0,0 +1,74 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * M_PI * ( fract(abs(color.rgb)) - 0.5 ); + float sign = 1.0; + vec3 cos_c = vec3(-1.0, -1.0, -1.0); + float fact_even = 1.0; + float fact_odd = 1.0; + vec3 sum; + vec3 exp; + + // At this point c is in the range [-PI, PI) + + // Taylor-Maclaurin series expansion for cosine + // + // Apply the property that pow(a, b + c) = pow(a, b) * pow(a, c) + // and the property that 1.0/(a*b) = 1.0/a * 1.0/b + // to make sure no register ever overflows the range (-16384, +16384) + // mandated for mediump variables. + + for(int i = 2; i <= 10; i += 2) + { + // fact_even will hold at most the value 3840. + fact_even *= float(i); + + // fact_odd will always be smaller than fact_even + fact_odd *= float(i-1); + + // exp is at most (5,5,5) + exp = vec3(float(i/2), float(i/2), float(i/2)); + + // pow(c, exp) takes at most the value pow(PI, 5), which is approx. 306 + // abs(sum) is at most PI/2.0 + sum = sign * pow(abs(c), exp)/fact_even; + + // abs(sum/fact_odd) is at most PI/2.0 + // cos_c is always bound in the range [-1.0, 1.0) + cos_c += pow(abs(c), exp)*(sum/fact_odd); + + sign = -sign; + } + + gl_FragColor = vec4(0.5 * cos_c + 0.5, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_vert_xvary.vert new file mode 100644 index 00000000000..bde69506c4d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + color = vec4(0.5 * cos(2.0 * M_PI * gtf_Color.rgb) + 0.5, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..cd8f9d83796 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/cos_vec3_vert_xvary_ref.vert @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * M_PI * gtf_Color.rgb; + float sign = -1.0; + vec3 cos_c = vec3(1.0,1.0,1.0); + float fact = 1.0; + + // Taylor-Maclaurin series expansion for cosine + for(int i = 2; i <= 20; i += 2) + { + fact *= float(i)*float(i-1); + cos_c += sign*pow(c, vec3(float(i),float(i),float(i)))/fact; + sign = -sign; + } + + color = vec4(0.5 * cos_c + 0.5, 1.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/input.run.txt new file mode 100644 index 00000000000..64f23d8c397 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cos/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +cos_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_001_to_002.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_001_to_002.html new file mode 100644 index 00000000000..c0c5bc44c56 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_001_to_002.html @@ -0,0 +1,79 @@ + + + + + +WebGL GLSL conformance test: cross_001_to_002.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_frag_xvaryyconst.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_frag_xvaryyconst.frag new file mode 100644 index 00000000000..3baaed5449c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_frag_xvaryyconst.frag @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = vec3(1.0, 0.0, 0.0); + + + float theta = color.g * 2.0 * M_PI; + float phi = color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + + gl_FragColor = vec4((cross(v1, v2) + 1.0) / 2.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_frag_xvaryyconst_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_frag_xvaryyconst_ref.frag new file mode 100644 index 00000000000..7d1f2161339 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_frag_xvaryyconst_ref.frag @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = vec3(1.0, 0.0, 0.0); + vec3 v3; + + float theta = color.g * 2.0 * M_PI; + float phi = color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + v3.x = v1.y * v2.z - v2.y * v1.z; + v3.y = v2.x * v1.z - v1.x * v2.z; + v3.z = v1.x * v2.y - v2.x * v1.y; + gl_FragColor = vec4((v3 + 1.0) / 2.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_vert_xvaryyconst.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_vert_xvaryyconst.vert new file mode 100644 index 00000000000..6a3345f28ad --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_vert_xvaryyconst.vert @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = vec3(1.0, 0.0, 0.0); + + float theta = gtf_Color.g * 2.0 * M_PI; + float phi = gtf_Color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + color = vec4((cross(v1, v2) + 1.0) / 2.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_vert_xvaryyconst_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_vert_xvaryyconst_ref.vert new file mode 100644 index 00000000000..7680ae03517 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/cross_vec3_vert_xvaryyconst_ref.vert @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = vec3(1.0, 0.0, 0.0); + vec3 v3; + + float theta = gtf_Color.g * 2.0 * M_PI; + float phi = gtf_Color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + v3.x = v1.y * v2.z - v2.y * v1.z; + v3.y = v2.x * v1.z - v1.x * v2.z; + v3.z = v1.x * v2.y - v2.x * v1.y; + color = vec4((v3 + 1.0) / 2.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/input.run.txt new file mode 100644 index 00000000000..4ce9794db51 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/cross/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +cross_001_to_002.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default.frag new file mode 100644 index 00000000000..e9d460fb20c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default.vert new file mode 100644 index 00000000000..72e83fd0322 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + gl_PointSize = 1.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default_001_to_001.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default_001_to_001.html new file mode 100644 index 00000000000..1a9e6c32143 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default_001_to_001.html @@ -0,0 +1,66 @@ + + + + + +WebGL GLSL conformance test: default_001_to_001.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default_textured.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default_textured.frag new file mode 100644 index 00000000000..8db3c6954f7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default_textured.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform sampler2D gtf_Texture0; +varying vec4 color; +varying vec4 gtf_TexCoord[1]; + +void main (void) +{ + gl_FragColor = texture2D(gtf_Texture0, gtf_TexCoord[0].xy); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default_textured.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default_textured.vert new file mode 100644 index 00000000000..1b5b7831a46 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/default_textured.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 gtf_TexCoord[1]; +attribute vec4 gtf_MultiTexCoord0; +varying vec4 color; + +void main (void) +{ + color = gtf_Color; + gtf_TexCoord[0] = gtf_MultiTexCoord0; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + gl_PointSize = 1.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/expected.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/expected.frag new file mode 100644 index 00000000000..3d543f343ba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/expected.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform vec4 result; + +void main (void) +{ + gl_FragColor = result; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/input.run.txt new file mode 100644 index 00000000000..44c03e906b0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/default/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +default_001_to_001.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_001_to_006.html new file mode 100644 index 00000000000..1e29130a3dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: degrees_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_frag_xvary.frag new file mode 100644 index 00000000000..52d2e724a12 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 2.0 * M_PI * 2.0 * (color.r - 0.5); + gl_FragColor = vec4(degrees(c) / (2.0 * 360.0) + 0.5, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..b3675b0454c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_frag_xvary_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 2.0 * M_PI * 2.0 * (color.r - 0.5); + gl_FragColor = vec4((c * 180.0 / M_PI) / (2.0 * 360.0) + 0.5, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_vert_xvary.vert new file mode 100644 index 00000000000..69b026d7db1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 2.0 * M_PI * 2.0 * (gtf_Color.r - 0.5); + color = vec4(degrees(c) / (2.0 * 360.0) + 0.5, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..4b919b44bb9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_float_vert_xvary_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 2.0 * M_PI * 2.0 * (gtf_Color.r - 0.5); + color = vec4((c * 180.0 / M_PI) / (2.0 * 360.0) + 0.5, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_frag_xvary.frag new file mode 100644 index 00000000000..3c01fb83eb0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * M_PI * 2.0 * (color.rg - 0.5); + gl_FragColor = vec4(degrees(c) / (2.0 * 360.0) + 0.5, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..0706159c0ee --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_frag_xvary_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * M_PI * 2.0 * (color.rg - 0.5); + gl_FragColor = vec4((c * 180.0 / M_PI) / (2.0 * 360.0) + 0.5, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_vert_xvary.vert new file mode 100644 index 00000000000..e7c59c30052 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * M_PI * 2.0 * (gtf_Color.rg - 0.5); + color = vec4(degrees(c) / (2.0 * 360.0) + 0.5, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..f2d52d129ec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec2_vert_xvary_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * M_PI * 2.0 * (gtf_Color.rg - 0.5); + color = vec4((c * 180.0 / M_PI) / (2.0 * 360.0) + 0.5, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_frag_xvary.frag new file mode 100644 index 00000000000..48c5cb1de39 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * M_PI * 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4(degrees(c) / (2.0 * 360.0) + 0.5, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..e970bd14115 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_frag_xvary_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * M_PI * 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4((c * 180.0 / M_PI) / (2.0 * 360.0) + 0.5, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_vert_xvary.vert new file mode 100644 index 00000000000..520f0bb652f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * M_PI * 2.0 * (gtf_Color.rgb - 0.5); + color = vec4(degrees(c) / (2.0 * 360.0) + 0.5, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..ef8d0e4ab9b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/degrees_vec3_vert_xvary_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * M_PI * 2.0 * (gtf_Color.rgb - 0.5); + color = vec4((c * 180.0 / M_PI) / (2.0 * 360.0) + 0.5, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/input.run.txt new file mode 100644 index 00000000000..caa0c110d0d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/degrees/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +degrees_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_001_to_002.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_001_to_002.html new file mode 100644 index 00000000000..0efbe81fb49 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_001_to_002.html @@ -0,0 +1,91 @@ + + + + + +WebGL GLSL conformance test: discard_001_to_002.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_cond_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_cond_frag.frag new file mode 100644 index 00000000000..89c664cdf3e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_cond_frag.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + bool toDiscard = false; + if(color.r > 0.75) toDiscard = true; + else if(color.g > 0.75) toDiscard = true; + else if(color.b > 0.75) toDiscard = true; + + if (toDiscard) discard; + + gl_FragColor = color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_cond_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_cond_frag_ref.frag new file mode 100644 index 00000000000..05bb08a0391 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_cond_frag_ref.frag @@ -0,0 +1,44 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + if(color.r > 0.75 || color.g > 0.75 || color.b > 0.75) + { + /* The background color is black by default. + * Setting the fragment color to it simulates a discarded fragment. + */ + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } + else + { + gl_FragColor = color; + } +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_frag.frag new file mode 100644 index 00000000000..6420e95bf70 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/discard_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = color; + discard; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/input.run.txt new file mode 100644 index 00000000000..ff9bfa993dd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/discard/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +discard_001_to_002.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_001_to_006.html new file mode 100644 index 00000000000..7ad48ff83b8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: distance_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_frag_xvaryyhalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_frag_xvaryyhalf.frag new file mode 100644 index 00000000000..90d38ddcffb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_frag_xvaryyhalf.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(distance(color.r, 0.5)), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_frag_xvaryyhalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_frag_xvaryyhalf_ref.frag new file mode 100644 index 00000000000..d5c87c09ee3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_frag_xvaryyhalf_ref.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(sqrt(pow(abs(color.r - 0.5), 2.0))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_vert_xvaryyhalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_vert_xvaryyhalf.vert new file mode 100644 index 00000000000..574bf00c331 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_vert_xvaryyhalf.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(distance(gtf_Color.r, 0.5)), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_vert_xvaryyhalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_vert_xvaryyhalf_ref.vert new file mode 100644 index 00000000000..694c7d1f7d0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_float_vert_xvaryyhalf_ref.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(sqrt(pow(abs(gtf_Color.r - 0.5), 2.0))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_frag_xvaryyhalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_frag_xvaryyhalf.frag new file mode 100644 index 00000000000..c39308d1e65 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_frag_xvaryyhalf.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(distance(color.rg, vec2(0.5))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_frag_xvaryyhalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_frag_xvaryyhalf_ref.frag new file mode 100644 index 00000000000..61e18003227 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_frag_xvaryyhalf_ref.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(sqrt(pow(abs(color.r - 0.5), 2.0) + pow(abs(color.g - 0.5), 2.0))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_vert_xvaryyhalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_vert_xvaryyhalf.vert new file mode 100644 index 00000000000..9807d91fed7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_vert_xvaryyhalf.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(distance(gtf_Color.rg, vec2(0.5))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_vert_xvaryyhalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_vert_xvaryyhalf_ref.vert new file mode 100644 index 00000000000..f70d7a78c91 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec2_vert_xvaryyhalf_ref.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(sqrt(pow(abs(gtf_Color.r - 0.5), 2.0) + pow(abs(gtf_Color.g - 0.5), 2.0))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_frag_xvaryyhalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_frag_xvaryyhalf.frag new file mode 100644 index 00000000000..c356d342409 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_frag_xvaryyhalf.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(distance(color.rgb, vec3(0.5))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_frag_xvaryyhalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_frag_xvaryyhalf_ref.frag new file mode 100644 index 00000000000..b016b64db9e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_frag_xvaryyhalf_ref.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(sqrt(pow(abs(color.r - 0.5), 2.0) + pow(abs(color.g - 0.5), 2.0) + pow(abs(color.b - 0.5), 2.0))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_vert_xvaryyhalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_vert_xvaryyhalf.vert new file mode 100644 index 00000000000..f0ce5c4bd4c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_vert_xvaryyhalf.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(distance(gtf_Color.rgb, vec3(0.5))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_vert_xvaryyhalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_vert_xvaryyhalf_ref.vert new file mode 100644 index 00000000000..7fdd7f986fd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/distance_vec3_vert_xvaryyhalf_ref.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(sqrt(pow(abs(gtf_Color.r - 0.5), 2.0) + pow(abs(gtf_Color.g - 0.5), 2.0) + pow(abs(gtf_Color.b - 0.5), 2.0))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/input.run.txt new file mode 100644 index 00000000000..bfbce99ed16 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/distance/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +distance_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_001_to_006.html new file mode 100644 index 00000000000..35af74a12af --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: dot_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_frag_xvaryyone.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_frag_xvaryyone.frag new file mode 100644 index 00000000000..4dfef129c0a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_frag_xvaryyone.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(dot(color.r, 1.0)), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_frag_xvaryyone_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_frag_xvaryyone_ref.frag new file mode 100644 index 00000000000..1d8b5594dab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_frag_xvaryyone_ref.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(color.r), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_vert_xvaryyone.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_vert_xvaryyone.vert new file mode 100644 index 00000000000..d1df51840b2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_vert_xvaryyone.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(dot(gtf_Color.r, 1.0)), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_vert_xvaryyone_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_vert_xvaryyone_ref.vert new file mode 100644 index 00000000000..3d37b84fddd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_float_vert_xvaryyone_ref.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(gtf_Color.r), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_frag_xvaryyhalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_frag_xvaryyhalf.frag new file mode 100644 index 00000000000..dc4389716de --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_frag_xvaryyhalf.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(dot(color.rg, vec2(0.5))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_frag_xvaryyhalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_frag_xvaryyhalf_ref.frag new file mode 100644 index 00000000000..515e4965183 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_frag_xvaryyhalf_ref.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(color.r + color.g) * 0.5, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_vert_xvaryyhalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_vert_xvaryyhalf.vert new file mode 100644 index 00000000000..48cc60154d7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_vert_xvaryyhalf.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(dot(gtf_Color.rg, vec2(0.5))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_vert_xvaryyhalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_vert_xvaryyhalf_ref.vert new file mode 100644 index 00000000000..d5e6df67b18 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec2_vert_xvaryyhalf_ref.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(gtf_Color.r + gtf_Color.g) * 0.5, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_frag_xvaryythird.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_frag_xvaryythird.frag new file mode 100644 index 00000000000..55205c28490 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_frag_xvaryythird.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(dot(color.rgb, vec3(0.3333))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_frag_xvaryythird_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_frag_xvaryythird_ref.frag new file mode 100644 index 00000000000..cc4a934fb26 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_frag_xvaryythird_ref.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(color.r + color.g + color.b) * 0.3333, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_vert_xvaryythird.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_vert_xvaryythird.vert new file mode 100644 index 00000000000..69493de3ee2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_vert_xvaryythird.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(dot(gtf_Color.rgb, vec3(0.3333))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_vert_xvaryythird_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_vert_xvaryythird_ref.vert new file mode 100644 index 00000000000..5fc4c88057d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/dot_vec3_vert_xvaryythird_ref.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(gtf_Color.r + gtf_Color.g + gtf_Color.b) * 0.3333, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/input.run.txt new file mode 100644 index 00000000000..e87547fd338 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/dot/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +dot_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_001_to_008.html new file mode 100644 index 00000000000..4266061afe9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_001_to_008.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: equal_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_009_to_012.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_009_to_012.html new file mode 100644 index 00000000000..f5af33c3dba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_009_to_012.html @@ -0,0 +1,105 @@ + + + + + +WebGL GLSL conformance test: equal_009_to_012.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_frag.frag new file mode 100644 index 00000000000..f934ea91c04 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(1.5 * color.rg); // 1/3 true, 2/3 false + vec2 result = vec2(equal(bvec2(c), bvec2(true))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_frag_ref.frag new file mode 100644 index 00000000000..574f95e09b8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_frag_ref.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +bvec2 eq(in bvec2 a, in bvec2 b) +{ + bvec2 result; + if(a[0] == b[0]) result[0] = true; + else result[0] = false; + if(a[1] == b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(1.5 * color.rg); // 1/3 true, 2/3 false + vec2 result = vec2(eq(bvec2(c), bvec2(true))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_vert.vert new file mode 100644 index 00000000000..0644c69de81 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(1.5 * gtf_Color.rg); // 1/3 true, 2/3 false + vec2 result = vec2(equal(bvec2(c), bvec2(true))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_vert_ref.vert new file mode 100644 index 00000000000..fefac95747f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec2_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 eq(in bvec2 a, in bvec2 b) +{ + bvec2 result; + if(a[0] == b[0]) result[0] = true; + else result[0] = false; + if(a[1] == b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(1.5 * gtf_Color.rg); // 1/3 true, 2/3 false + vec2 result = vec2(eq(bvec2(c), bvec2(true))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_frag.frag new file mode 100644 index 00000000000..f35039b8258 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(1.5 * color.rgb); // 1/3 true, 2/3 false + vec3 result = vec3(equal(bvec3(c), bvec3(true))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_frag_ref.frag new file mode 100644 index 00000000000..e9047836e6e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_frag_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 eq(in bvec3 a, in bvec3 b) +{ + bvec3 result; + if(a[0] == b[0]) result[0] = true; + else result[0] = false; + if(a[1] == b[1]) result[1] = true; + else result[1] = false; + if(a[2] == b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(1.5 * color.rgb); // 1/3 true, 2/3 false + vec3 result = vec3(eq(bvec3(c), bvec3(true))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_vert.vert new file mode 100644 index 00000000000..8fd3ac79cf0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(1.5 * gtf_Color.rgb); // 1/3 true, 2/3 false + vec3 result = vec3(equal(bvec3(c), bvec3(true))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_vert_ref.vert new file mode 100644 index 00000000000..528c56cc5a7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_bvec3_vert_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 eq(in bvec3 a, in bvec3 b) +{ + bvec3 result; + if(a[0] == b[0]) result[0] = true; + else result[0] = false; + if(a[1] == b[1]) result[1] = true; + else result[1] = false; + if(a[2] == b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(1.5 * gtf_Color.rgb); // 1/3 true, 2/3 false + vec3 result = vec3(eq(bvec3(c), bvec3(true))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_frag.frag new file mode 100644 index 00000000000..03586f30372 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(equal(ivec2(c), ivec2(0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_frag_ref.frag new file mode 100644 index 00000000000..0d714400ed4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_frag_ref.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec2 eq(in ivec2 a, in ivec2 b) +{ + bvec2 result; + if(a[0] == b[0]) result[0] = true; + else result[0] = false; + if(a[1] == b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(eq(ivec2(c), ivec2(0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_vert.vert new file mode 100644 index 00000000000..eab3324fd66 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(equal(ivec2(c), ivec2(0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_vert_ref.vert new file mode 100644 index 00000000000..738a3d93b46 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec2_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 eq(in ivec2 a, in ivec2 b) +{ + bvec2 result; + if(a[0] == b[0]) result[0] = true; + else result[0] = false; + if(a[1] == b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(eq(ivec2(c), ivec2(0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_frag.frag new file mode 100644 index 00000000000..34ab9ce3eea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(equal(ivec3(c), ivec3(0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_frag_ref.frag new file mode 100644 index 00000000000..3b6b2bc1bbd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_frag_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 eq(in ivec3 a, in ivec3 b) +{ + bvec3 result; + if(a[0] == b[0]) result[0] = true; + else result[0] = false; + if(a[1] == b[1]) result[1] = true; + else result[1] = false; + if(a[2] == b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(eq(ivec3(c), ivec3(0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_vert.vert new file mode 100644 index 00000000000..dd847155526 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(equal(ivec3(c), ivec3(0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_vert_ref.vert new file mode 100644 index 00000000000..5884c39a2a8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_ivec3_vert_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 eq(in ivec3 a, in ivec3 b) +{ + bvec3 result; + if(a[0] == b[0]) result[0] = true; + else result[0] = false; + if(a[1] == b[1]) result[1] = true; + else result[1] = false; + if(a[2] == b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(eq(ivec3(c), ivec3(0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_frag.frag new file mode 100644 index 00000000000..33723d45353 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(equal(c, vec2(0.0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_frag_ref.frag new file mode 100644 index 00000000000..b343d82a2dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_frag_ref.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +bvec2 eq(in vec2 a, in vec2 b) +{ + bvec2 result; + if(a[0] == b[0]) result[0] = true; + else result[0] = false; + if(a[1] == b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(eq(c, vec2(0.0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_vert.vert new file mode 100644 index 00000000000..bebfbb5e682 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(equal(c, vec2(0.0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_vert_ref.vert new file mode 100644 index 00000000000..89290a76066 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec2_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 eq(in vec2 a, in vec2 b) +{ + bvec2 result; + if(a[0] == b[0]) result[0] = true; + else result[0] = false; + if(a[1] == b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(eq(c, vec2(0.0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_frag.frag new file mode 100644 index 00000000000..fdccc651017 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(equal(c, vec3(0.0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_frag_ref.frag new file mode 100644 index 00000000000..541de85710d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_frag_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 eq(in vec3 a, in vec3 b) +{ + bvec3 result; + if(a[0] == b[0]) result[0] = true; + else result[0] = false; + if(a[1] == b[1]) result[1] = true; + else result[1] = false; + if(a[2] == b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(eq(c, vec3(0.0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_vert.vert new file mode 100644 index 00000000000..d975735f3e0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(equal(c, vec3(0.0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_vert_ref.vert new file mode 100644 index 00000000000..1dc5e80eac6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/equal_vec3_vert_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 eq(in vec3 a, in vec3 b) +{ + bvec3 result; + if(a[0] == b[0]) result[0] = true; + else result[0] = false; + if(a[1] == b[1]) result[1] = true; + else result[1] = false; + if(a[2] == b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(eq(c, vec3(0.0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/input.run.txt new file mode 100644 index 00000000000..cd4a81eb519 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/equal/input.run.txt @@ -0,0 +1,3 @@ +# this file is auto-generated. DO NOT EDIT. +equal_001_to_008.html +equal_009_to_012.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_001_to_008.html new file mode 100644 index 00000000000..a0ce6c06418 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_001_to_008.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: exp_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_009_to_012.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_009_to_012.html new file mode 100644 index 00000000000..ddf15b619a1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_009_to_012.html @@ -0,0 +1,105 @@ + + + + + +WebGL GLSL conformance test: exp_009_to_012.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvary.frag new file mode 100644 index 00000000000..86ed7588cd0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float exp3 = 20.0855; + float c = color.r; + gl_FragColor = vec4(exp(3.0 * c) / exp3, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..f13fca97d9e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvary_ref.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float exp1 = 2.7183; + const float exp3 = 20.0855; + float c = color.r; + gl_FragColor = vec4(pow(exp1, 3.0 * c) / exp3, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvaryneg.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvaryneg.frag new file mode 100644 index 00000000000..785a464714c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvaryneg.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = -color.r; + gl_FragColor = vec4(exp(3.0 * c), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvaryneg_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvaryneg_ref.frag new file mode 100644 index 00000000000..08503fa51dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_frag_xvaryneg_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float exp1 = 2.7183; + float c = color.r; + gl_FragColor = vec4(1.0 / pow(exp1, 3.0 * c), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvary.vert new file mode 100644 index 00000000000..df41faff3a1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float exp3 = 20.0855; + float c = gtf_Color.r; + color = vec4(exp(3.0 * c) / exp3, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..f83a25bb8e9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvary_ref.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float exp1 = 2.7183; + const float exp3 = 20.0855; + float c = gtf_Color.r; + color = vec4(pow(exp1, 3.0 * c) / exp3, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvaryneg.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvaryneg.vert new file mode 100644 index 00000000000..7d1f08a6bbf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvaryneg.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = -gtf_Color.r; + color = vec4(exp(3.0 * c), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvaryneg_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvaryneg_ref.vert new file mode 100644 index 00000000000..b429ff8ff82 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_float_vert_xvaryneg_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float exp1 = 2.7183; + float c = gtf_Color.r; + color = vec4(1.0 / pow(exp1, 3.0 * c), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvary.frag new file mode 100644 index 00000000000..be85cb373bc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float exp3 = 20.0855; + vec2 c = color.rg; + gl_FragColor = vec4(exp(3.0 * c) / exp3, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..9b11c76721a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvary_ref.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float exp1 = 2.7183; + const float exp3 = 20.0855; + vec2 c = color.rg; + gl_FragColor = vec4(pow(vec2(exp1), 3.0 * c) / exp3, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvaryneg.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvaryneg.frag new file mode 100644 index 00000000000..5a81055ee72 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvaryneg.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = -color.rg; + gl_FragColor = vec4(exp(3.0 * c), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvaryneg_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvaryneg_ref.frag new file mode 100644 index 00000000000..ddfeae7f811 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_frag_xvaryneg_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float exp1 = 2.7183; + vec2 c = color.rg; + gl_FragColor = vec4(1.0 / pow(vec2(exp1), 3.0 * c), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvary.vert new file mode 100644 index 00000000000..c22d89ed377 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float exp3 = 20.0855; + vec2 c = gtf_Color.rg; + color = vec4(exp(3.0 * c) / exp3, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..47a68f504a8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvary_ref.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float exp1 = 2.7183; + const float exp3 = 20.0855; + vec2 c = gtf_Color.rg; + color = vec4(pow(vec2(exp1), 3.0 * c) / exp3, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvaryneg.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvaryneg.vert new file mode 100644 index 00000000000..aae926d6cfe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvaryneg.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = -gtf_Color.rg; + color = vec4(exp(3.0 * c), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvaryneg_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvaryneg_ref.vert new file mode 100644 index 00000000000..90069564842 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec2_vert_xvaryneg_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float exp1 = 2.7183; + vec2 c = gtf_Color.rg; + color = vec4(1.0 / pow(vec2(exp1), 3.0 * c), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvary.frag new file mode 100644 index 00000000000..446532a2ef3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float exp3 = 20.0855; + vec3 c = color.rgb; + gl_FragColor = vec4(exp(3.0 * c) / exp3, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..b481b7dcd6b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvary_ref.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float exp1 = 2.7183; + const float exp3 = 20.0855; + vec3 c = color.rgb; + gl_FragColor = vec4(pow(vec3(exp1), 3.0 * c) / exp3, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvaryneg.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvaryneg.frag new file mode 100644 index 00000000000..a836e87868d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvaryneg.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = -color.rgb; + gl_FragColor = vec4(exp(3.0 * c), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvaryneg_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvaryneg_ref.frag new file mode 100644 index 00000000000..e710a7973a5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_frag_xvaryneg_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float exp1 = 2.7183; + vec3 c = color.rgb; + gl_FragColor = vec4(1.0 / pow(vec3(exp1), 3.0 * c), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvary.vert new file mode 100644 index 00000000000..b1056c28a24 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float exp3 = 20.0855; + vec3 c = gtf_Color.rgb; + color = vec4(exp(3.0 * c) / exp3, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..f1385688cac --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvary_ref.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float exp1 = 2.7183; + const float exp3 = 20.0855; + vec3 c = gtf_Color.rgb; + color = vec4(pow(vec3(exp1), 3.0 * c) / exp3, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvaryneg.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvaryneg.vert new file mode 100644 index 00000000000..d6c6c56446e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvaryneg.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = -gtf_Color.rgb; + color = vec4(exp(3.0 * c), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvaryneg_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvaryneg_ref.vert new file mode 100644 index 00000000000..f361d9febf8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/exp_vec3_vert_xvaryneg_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float exp1 = 2.7183; + vec3 c = gtf_Color.rgb; + color = vec4(1.0 / pow(vec3(exp1), 3.0 * c), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/input.run.txt new file mode 100644 index 00000000000..4f56a2b3297 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp/input.run.txt @@ -0,0 +1,3 @@ +# this file is auto-generated. DO NOT EDIT. +exp_001_to_008.html +exp_009_to_012.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_001_to_008.html new file mode 100644 index 00000000000..7b64d838de8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_001_to_008.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: exp2_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_009_to_012.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_009_to_012.html new file mode 100644 index 00000000000..2b29d52bd01 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_009_to_012.html @@ -0,0 +1,105 @@ + + + + + +WebGL GLSL conformance test: exp2_009_to_012.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvary.frag new file mode 100644 index 00000000000..922a733df7c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = color.r; + gl_FragColor = vec4(exp2(5.0 * c) / 32.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..88a6eae8e24 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = color.r; + gl_FragColor = vec4(pow(2.0, 5.0 * c) / 32.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvaryneg.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvaryneg.frag new file mode 100644 index 00000000000..9140264056f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvaryneg.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = -color.r; + gl_FragColor = vec4(exp2(5.0 * c), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvaryneg_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvaryneg_ref.frag new file mode 100644 index 00000000000..d8167046f1f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_frag_xvaryneg_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = color.r; + gl_FragColor = vec4(1.0 / pow(2.0, 5.0 * c), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvary.vert new file mode 100644 index 00000000000..c3b914833a8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = gtf_Color.r; + color = vec4(exp2(5.0 * c) / 32.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..69898a60302 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = gtf_Color.r; + color = vec4(pow(2.0, 5.0 * c) / 32.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvaryneg.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvaryneg.vert new file mode 100644 index 00000000000..8955e3cfb0c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvaryneg.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = -gtf_Color.r; + color = vec4(exp2(5.0 * c), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvaryneg_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvaryneg_ref.vert new file mode 100644 index 00000000000..2fc614e5a3f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_float_vert_xvaryneg_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = gtf_Color.r; + color = vec4(1.0 / pow(2.0, 5.0 * c), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvary.frag new file mode 100644 index 00000000000..8af82a79b24 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = color.rg; + gl_FragColor = vec4(exp2(5.0 * c) / 32.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..77c44ff3d4d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = color.rg; + gl_FragColor = vec4(pow(vec2(2.0), 5.0 * c) / 32.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvaryneg.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvaryneg.frag new file mode 100644 index 00000000000..b7805beadfb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvaryneg.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = -color.rg; + gl_FragColor = vec4(exp2(5.0 * c), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvaryneg_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvaryneg_ref.frag new file mode 100644 index 00000000000..ddfaea25027 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_frag_xvaryneg_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = color.rg; + gl_FragColor = vec4(1.0 / pow(vec2(2.0), 5.0 * c), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvary.vert new file mode 100644 index 00000000000..9903e66923b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = gtf_Color.rg; + color = vec4(exp2(5.0 * c) / 32.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..da02403b26d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = gtf_Color.rg; + color = vec4(pow(vec2(2.0), 5.0 * c) / 32.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvaryneg.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvaryneg.vert new file mode 100644 index 00000000000..b94b23dd354 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvaryneg.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = -gtf_Color.rg; + color = vec4(exp2(5.0 * c), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvaryneg_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvaryneg_ref.vert new file mode 100644 index 00000000000..8284a474ecf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec2_vert_xvaryneg_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = gtf_Color.rg; + color = vec4(1.0 / pow(vec2(2.0), 5.0 * c), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvary.frag new file mode 100644 index 00000000000..1f289ce1556 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = color.rgb; + gl_FragColor = vec4(exp2(5.0 * c) / 32.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..b75546900e9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = color.rgb; + gl_FragColor = vec4(pow(vec3(2.0), 5.0 * c) / 32.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvaryneg.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvaryneg.frag new file mode 100644 index 00000000000..c401e57d88e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvaryneg.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = -color.rgb; + gl_FragColor = vec4(exp2(5.0 * c), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvaryneg_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvaryneg_ref.frag new file mode 100644 index 00000000000..6f945903d5f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_frag_xvaryneg_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = color.rgb; + gl_FragColor = vec4(1.0 / pow(vec3(2.0), 5.0 * c), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvary.vert new file mode 100644 index 00000000000..d59cb3ef5f8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = gtf_Color.rgb; + color = vec4(exp2(5.0 * c) / 32.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..3e8cc48a036 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = gtf_Color.rgb; + color = vec4(pow(vec3(2.0), 5.0 * c) / 32.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvaryneg.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvaryneg.vert new file mode 100644 index 00000000000..4d154bc17cd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvaryneg.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = -gtf_Color.rgb; + color = vec4(exp2(5.0 * c), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvaryneg_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvaryneg_ref.vert new file mode 100644 index 00000000000..b0bc7818d32 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/exp2_vec3_vert_xvaryneg_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = gtf_Color.rgb; + color = vec4(1.0 / pow(vec3(2.0), 5.0 * c), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/input.run.txt new file mode 100644 index 00000000000..f893cd413eb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/exp2/input.run.txt @@ -0,0 +1,3 @@ +# this file is auto-generated. DO NOT EDIT. +exp2_001_to_008.html +exp2_009_to_012.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_001_to_006.html new file mode 100644 index 00000000000..c70334794cc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: faceforward_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_frag_nvaryiconst.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_frag_nvaryiconst.frag new file mode 100644 index 00000000000..07ef6fbf0db --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_frag_nvaryiconst.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + float v1 = (color.g * 2.0) - 1.0; + float v2 = (color.b * 2.0) - 1.0; + + gl_FragColor = vec4((faceforward(v1, v2, v1) + 1.0) / 2.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_frag_nvaryiconst_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_frag_nvaryiconst_ref.frag new file mode 100644 index 00000000000..5b5b2fd3e9d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_frag_nvaryiconst_ref.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + float v1 = (color.g * 2.0) - 1.0; + float v2 = (color.b * 2.0) - 1.0; + + if(dot(v1, v2) >= 0.0) v1 *= -1.0; + gl_FragColor = vec4((v1 + 1.0) / 2.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_vert_nvaryiconst.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_vert_nvaryiconst.vert new file mode 100644 index 00000000000..77d5d796ecc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_vert_nvaryiconst.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + float v1 = (gtf_Color.g * 2.0) - 1.0; + float v2 = (gtf_Color.b * 2.0) - 1.0; + + color = vec4((faceforward(v1, v2, v1) + 1.0) / 2.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_vert_nvaryiconst_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_vert_nvaryiconst_ref.vert new file mode 100644 index 00000000000..0e1d365b3bc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_float_vert_nvaryiconst_ref.vert @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + float v1 = (gtf_Color.g * 2.0) - 1.0; + float v2 = (gtf_Color.b * 2.0) - 1.0; + + if(dot(v1, v2) >= 0.0) v1 *= -1.0; + color = vec4((v1 + 1.0) / 2.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_frag_nvaryiconst.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_frag_nvaryiconst.frag new file mode 100644 index 00000000000..ec0f1c2f357 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_frag_nvaryiconst.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec2 v1; + vec2 v2 = normalize(vec2(1.0, 1.0)); + + + float theta = color.g * 2.0 * M_PI; + float phi = color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + + gl_FragColor = vec4((faceforward(v1, v2, v1) + 1.0) / 2.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_frag_nvaryiconst_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_frag_nvaryiconst_ref.frag new file mode 100644 index 00000000000..a50f4548506 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_frag_nvaryiconst_ref.frag @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec2 v1; + vec2 v2 = normalize(vec2(1.0, 1.0)); + + + float theta = color.g * 2.0 * M_PI; + float phi = color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + + if(dot(v1, v2) >= 0.0) v1 *= -1.0; + gl_FragColor = vec4((v1 + 1.0) / 2.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_vert_nvaryiconst.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_vert_nvaryiconst.vert new file mode 100644 index 00000000000..80d186c978a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_vert_nvaryiconst.vert @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec2 v1; + vec2 v2 = normalize(vec2(1.0, 1.0)); + + float theta = gtf_Color.g * 2.0 * M_PI; + float phi = gtf_Color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + + color = vec4((faceforward(v1, v2, v1) + 1.0) / 2.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_vert_nvaryiconst_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_vert_nvaryiconst_ref.vert new file mode 100644 index 00000000000..41a04ef6035 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec2_vert_nvaryiconst_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec2 v1; + vec2 v2 = normalize(vec2(1.0, 1.0)); + + float theta = gtf_Color.g * 2.0 * M_PI; + float phi = gtf_Color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + + if(dot(v1, v2) >= 0.0) v1 *= -1.0; + color = vec4((v1 + 1.0) / 2.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_frag_nvaryiconst.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_frag_nvaryiconst.frag new file mode 100644 index 00000000000..5db1d0fc5fc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_frag_nvaryiconst.frag @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = normalize(vec3(1.0, 1.0, 1.0)); + + + float theta = color.g * 2.0 * M_PI; + float phi = color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + + gl_FragColor = vec4((faceforward(v1, v2, v1) + 1.0) / 2.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_frag_nvaryiconst_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_frag_nvaryiconst_ref.frag new file mode 100644 index 00000000000..fb68855f7fd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_frag_nvaryiconst_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = normalize(vec3(1.0, 1.0, 1.0)); + + + float theta = color.g * 2.0 * M_PI; + float phi = color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + + if(dot(v1, v2) >= 0.0) v1 *= -1.0; + gl_FragColor = vec4((v1 + 1.0) / 2.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_vert_nvaryiconst.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_vert_nvaryiconst.vert new file mode 100644 index 00000000000..a745681dd55 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_vert_nvaryiconst.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = normalize(vec3(1.0, 1.0, 1.0)); + + float theta = gtf_Color.g * 2.0 * M_PI; + float phi = gtf_Color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + + color = vec4((faceforward(v1, v2, v1) + 1.0) / 2.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_vert_nvaryiconst_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_vert_nvaryiconst_ref.vert new file mode 100644 index 00000000000..d08a74620a8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/faceforward_vec3_vert_nvaryiconst_ref.vert @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = normalize(vec3(1.0, 1.0, 1.0)); + + float theta = gtf_Color.g * 2.0 * M_PI; + float phi = gtf_Color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + + if(dot(v1, v2) >= 0.0) v1 *= -1.0; + color = vec4((v1 + 1.0) / 2.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/input.run.txt new file mode 100644 index 00000000000..4107e639799 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/faceforward/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +faceforward_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_001_to_006.html new file mode 100644 index 00000000000..75d2d91675c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: floor_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_frag_xvary.frag new file mode 100644 index 00000000000..3f918841870 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 10.0 * 2.0 * (color.r - 0.5); + gl_FragColor = vec4((floor(c) + 10.0) / 20.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..11ec5e6e275 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_frag_xvary_ref.frag @@ -0,0 +1,44 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +float floor_ref(float x) +{ + if(x >= 0.0) + x = float(int(x)); + else + x = float(int(x) - 1); + return x; +} + +void main (void) +{ + float c = 10.0 * 2.0 * (color.r - 0.5); + gl_FragColor = vec4((floor_ref(c) + 10.0) / 20.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_vert_xvary.vert new file mode 100644 index 00000000000..1ed8d39c665 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 10.0 * 2.0 * (gtf_Color.r - 0.5); + color = vec4((floor(c) + 10.0) / 20.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..5be14322e69 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_float_vert_xvary_ref.vert @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +float floor_ref(float x) +{ + if(x >= 0.0) + x = float(int(x)); + else + x = float(int(x) - 1); + return x; +} + +void main (void) +{ + float c = 10.0 * 2.0 * (gtf_Color.r - 0.5); + color = vec4((floor_ref(c) + 10.0) / 20.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_frag_xvary.frag new file mode 100644 index 00000000000..1a56a4fcf47 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (color.rg - 0.5); + gl_FragColor = vec4((floor(c) + 10.0) / 20.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..f8aba8d5e62 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_frag_xvary_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +vec2 floor_ref(vec2 x) +{ + if(x[0] >= 0.0) + x[0] = float(int(x[0])); + else + x[0] = float(int(x[0]) - 1); + if(x[1] >= 0.0) + x[1] = float(int(x[1])); + else + x[1] = float(int(x[1]) - 1); + return x; +} + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (color.rg - 0.5); + gl_FragColor = vec4((floor_ref(c) + 10.0) / 20.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_vert_xvary.vert new file mode 100644 index 00000000000..c977d879b22 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (gtf_Color.rg - 0.5); + color = vec4((floor(c) + 10.0) / 20.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..232d5fee3a5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec2_vert_xvary_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +vec2 floor_ref(vec2 x) +{ + if(x[0] >= 0.0) + x[0] = float(int(x[0])); + else + x[0] = float(int(x[0]) - 1); + if(x[1] >= 0.0) + x[1] = float(int(x[1])); + else + x[1] = float(int(x[1]) - 1); + return x; +} + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (gtf_Color.rg - 0.5); + color = vec4((floor_ref(c) + 10.0) / 20.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_frag_xvary.frag new file mode 100644 index 00000000000..bb7f72018d7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4((floor(c) + 10.0) / 20.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..1209631ef0f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_frag_xvary_ref.frag @@ -0,0 +1,52 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +vec3 floor_ref(vec3 x) +{ + if(x[0] >= 0.0) + x[0] = float(int(x[0])); + else + x[0] = float(int(x[0]) - 1); + if(x[1] >= 0.0) + x[1] = float(int(x[1])); + else + x[1] = float(int(x[1]) - 1); + if(x[2] >= 0.0) + x[2] = float(int(x[2])); + else + x[2] = float(int(x[2]) - 1); + return x; +} + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4((floor_ref(c) + 10.0) / 20.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_vert_xvary.vert new file mode 100644 index 00000000000..febeb930c41 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (gtf_Color.rgb - 0.5); + color = vec4((floor(c) + 10.0) / 20.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..247aa1aa35d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/floor_vec3_vert_xvary_ref.vert @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +vec3 floor_ref(vec3 x) +{ + if(x[0] >= 0.0) + x[0] = float(int(x[0])); + else + x[0] = float(int(x[0]) - 1); + if(x[1] >= 0.0) + x[1] = float(int(x[1])); + else + x[1] = float(int(x[1]) - 1); + if(x[2] >= 0.0) + x[2] = float(int(x[2])); + else + x[2] = float(int(x[2]) - 1); + return x; +} + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (gtf_Color.rgb - 0.5); + color = vec4((floor_ref(c) + 10.0) / 20.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/input.run.txt new file mode 100644 index 00000000000..337787db8b9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/floor/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +floor_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_001_to_006.html new file mode 100644 index 00000000000..0fde847696a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: fract_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_frag_xvary.frag new file mode 100644 index 00000000000..8ad6c92f968 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 10.0 * 2.0 * (color.r - 0.5); + c = abs(fract(c) - 0.5) * 2.0; + gl_FragColor = vec4(c, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..2105d7fcd78 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_frag_xvary_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 10.0 * 2.0 * (color.r - 0.5); + c = abs((c - floor(c)) - 0.5) * 2.0; + gl_FragColor = vec4(c, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_vert_xvary.vert new file mode 100644 index 00000000000..8724037ff68 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 10.0 * 2.0 * (gtf_Color.r - 0.5); + c = abs(fract(c) - 0.5) * 2.0; + color = vec4(c, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..773fd79049a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_float_vert_xvary_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 10.0 * 2.0 * (gtf_Color.r - 0.5); + c = abs((c - floor(c)) - 0.5) * 2.0; + color = vec4(c, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_frag_xvary.frag new file mode 100644 index 00000000000..6d9e3fa0bd1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (color.rg - 0.5); + c = abs(fract(c) - 0.5) * 2.0; + gl_FragColor = vec4(c, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..222b2e96f57 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_frag_xvary_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (color.rg - 0.5); + c = abs((c - floor(c)) - 0.5) * 2.0; + gl_FragColor = vec4(c, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_vert_xvary.vert new file mode 100644 index 00000000000..bb8acce361a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (gtf_Color.rg - 0.5); + c = abs(fract(c) - 0.5) * 2.0; + color = vec4(c, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..31546ff4a82 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec2_vert_xvary_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (gtf_Color.rg - 0.5); + c = abs((c - floor(c)) - 0.5) * 2.0; + color = vec4(c, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_frag_xvary.frag new file mode 100644 index 00000000000..bf409a7a040 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (color.rgb - 0.5); + c = abs(fract(c) - 0.5) * 2.0; + gl_FragColor = vec4(c, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..8a684230394 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_frag_xvary_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (color.rgb - 0.5); + c = abs((c - floor(c)) - 0.5) * 2.0; + gl_FragColor = vec4(c, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_vert_xvary.vert new file mode 100644 index 00000000000..2d83b034800 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (gtf_Color.rgb - 0.5); + c = abs(fract(c) - 0.5) * 2.0; + color = vec4(c, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..5092c853393 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/fract_vec3_vert_xvary_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (gtf_Color.rgb - 0.5); + c = abs((c - floor(c)) - 0.5) * 2.0; + color = vec4(c, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/input.run.txt new file mode 100644 index 00000000000..74ccc68b54c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/fract/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +fract_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/array_float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/array_float_frag.frag new file mode 100644 index 00000000000..594afd9409f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/array_float_frag.frag @@ -0,0 +1,102 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + + + +void qualifiers(in float a[4], out float b[4], inout float c[4], const in float d[4], float e[4]) +{ + b[0] = a[0]; + c[0] += d[0]; + a[0] += 1.0; + e[0] += 1.0; + + b[1] = a[1]; + c[1] += d[1]; + a[1] += 1.0; + e[1] += 1.0; + + b[2] = a[2]; + c[2] += d[2]; + a[2] += 1.0; + e[2] += 1.0; + + b[3] = a[3]; + c[3] += d[3]; + a[3] += 1.0; + e[3] += 1.0; +} + + + +void main (void) +{ + float a[4]; + float b[4]; + float c[4]; + float d[4]; + float e[4]; + float q = 0.0; + float q2 = 0.0; + + a[0] = 1.0; + b[0] = 2.0; + c[0] = 3.0; + d[0] = 4.0; + e[0] = 1.0; + + a[1] = 1.0; + b[1] = 2.0; + c[1] = 3.0; + d[1] = 4.0; + e[1] = 1.0; + + a[2] = 1.0; + b[2] = 2.0; + c[2] = 3.0; + d[2] = 4.0; + e[2] = 1.0; + + a[3] = 1.0; + b[3] = 2.0; + c[3] = 3.0; + d[3] = 4.0; + e[3] = 1.0; + + qualifiers(a, b, c, d, e); + + // randomly test a value + if(a[0] == 1.0) q += 1.0; + if(b[1] == 1.0) q += 2.0; + if(c[2] == 7.0) q += 4.0; + if(d[3] == 4.0) q2 += 1.0; + if(e[0] == 1.0) q2 += 2.0; + + gl_FragColor = vec4(vec2(q / 7.0, q2 / 3.0), 1.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/array_float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/array_float_vert.vert new file mode 100644 index 00000000000..64d23d278ff --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/array_float_vert.vert @@ -0,0 +1,103 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + + + +void qualifiers(in float a[4], out float b[4], inout float c[4], const in float d[4], float e[4]) +{ + b[0] = a[0]; + c[0] += d[0]; + a[0] += 1.0; + e[0] += 1.0; + + b[1] = a[1]; + c[1] += d[1]; + a[1] += 1.0; + e[1] += 1.0; + + b[2] = a[2]; + c[2] += d[2]; + a[2] += 1.0; + e[2] += 1.0; + + b[3] = a[3]; + c[3] += d[3]; + a[3] += 1.0; + e[3] += 1.0; +} + + + + +void main (void) +{ + float a[4]; + float b[4]; + float c[4]; + float d[4]; + float e[4]; + float q = 0.0; + float q2 = 0.0; + + a[0] = 1.0; + b[0] = 2.0; + c[0] = 3.0; + d[0] = 4.0; + e[0] = 1.0; + + a[1] = 1.0; + b[1] = 2.0; + c[1] = 3.0; + d[1] = 4.0; + e[1] = 1.0; + + a[2] = 1.0; + b[2] = 2.0; + c[2] = 3.0; + d[2] = 4.0; + e[2] = 1.0; + + a[3] = 1.0; + b[3] = 2.0; + c[3] = 3.0; + d[3] = 4.0; + e[3] = 1.0; + + qualifiers(a, b, c, d, e); + + // randomly test a value + if(a[0] == 1.0) q += 1.0; + if(b[1] == 1.0) q += 2.0; + if(c[2] == 7.0) q += 4.0; + if(d[3] == 4.0) q2 += 1.0; + if(e[0] == 1.0) q2 += 2.0; + + color = vec4(vec2(q / 7.0, q2 / 3.0), 1.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_array_frag.frag new file mode 100644 index 00000000000..6ba41dea092 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_array_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +bool function(bool par[3]); +bool is_all(const in bool array[3], const in bool value); +void set_all(out bool array[3], const in bool value); + +void main (void) +{ + bool par[3]; + bool ret = false; + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, true); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(is_all(par, true) && ret) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +bool function(bool par[3]) +{ + // Return the value of the array. + if(is_all(par, true)) + { + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return true; + } + else + return false; +} + +bool is_all(const in bool array[3], const in bool value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bool array[3], const in bool value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_array_vert.vert new file mode 100644 index 00000000000..3d643b15239 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_array_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +bool function(bool par[3]); +bool is_all(const in bool array[3], const in bool value); +void set_all(out bool array[3], const in bool value); + +void main (void) +{ + bool par[3]; + bool ret = false; + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, true); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(is_all(par, true) && ret) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +bool function(bool par[3]) +{ + // Return the value of the array. + if(is_all(par, true)) + { + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return true; + } + else + return false; +} + +bool is_all(const in bool array[3], const in bool value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bool array[3], const in bool value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_empty_frag.frag new file mode 100644 index 00000000000..900dbd26306 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_empty_frag.frag @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +bool function(bool par); + +void main (void) +{ + bool par = true; + bool ret = false; + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(par && ret) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +bool function(bool par) +{ + // Return the value of the parameter. + if(par) + { + // Test parameter qualifier (default is "in"). + par = false; + + return true; + } + else + return false; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_empty_vert.vert new file mode 100644 index 00000000000..bbf763e948c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_empty_bool_empty_vert.vert @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +bool function(bool par); + +void main (void) +{ + bool par = true; + bool ret = false; + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(par && ret) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +bool function(bool par) +{ + // Return the value of the parameter. + if(par) + { + // Test parameter qualifier (default is "in"). + par = false; + + return true; + } + else + return false; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_array_frag.frag new file mode 100644 index 00000000000..1d08ca5e063 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_array_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +bool function(in bool par[3]); +bool is_all(const in bool array[3], const in bool value); +void set_all(out bool array[3], const in bool value); + +void main (void) +{ + bool par[3]; + bool ret = false; + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, true); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(is_all(par, true) && ret) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +bool function(in bool par[3]) +{ + // Return the value of the array. + if(is_all(par, true)) + { + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return true; + } + else + return false; +} + +bool is_all(const in bool array[3], const in bool value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bool array[3], const in bool value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_array_vert.vert new file mode 100644 index 00000000000..f8b3ec06553 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_array_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +bool function(in bool par[3]); +bool is_all(const in bool array[3], const in bool value); +void set_all(out bool array[3], const in bool value); + +void main (void) +{ + bool par[3]; + bool ret = false; + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, true); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(is_all(par, true) && ret) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +bool function(in bool par[3]) +{ + // Return the value of the array. + if(is_all(par, true)) + { + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return true; + } + else + return false; +} + +bool is_all(const in bool array[3], const in bool value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bool array[3], const in bool value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_empty_frag.frag new file mode 100644 index 00000000000..bfc49e26f78 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_empty_frag.frag @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +bool function(in bool par); + +void main (void) +{ + bool par = true; + bool ret = false; + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(par && ret) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +bool function(in bool par) +{ + // Return the value of the parameter. + if(par) + { + // Test parameter qualifier (default is "in"). + par = false; + + return true; + } + else + return false; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_empty_vert.vert new file mode 100644 index 00000000000..a2d51b77d9e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_in_bool_empty_vert.vert @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +bool function(in bool par); + +void main (void) +{ + bool par = true; + bool ret = false; + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(par && ret) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +bool function(in bool par) +{ + // Return the value of the parameter. + if(par) + { + // Test parameter qualifier (default is "in"). + par = false; + + return true; + } + else + return false; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_array_frag.frag new file mode 100644 index 00000000000..51adf2723c3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_array_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +bool function(inout bool par[3]); +bool is_all(const in bool array[3], const in bool value); +void set_all(out bool array[3], const in bool value); + +void main (void) +{ + bool par[3]; + bool ret = false; + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, true); + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(is_all(par, false) && ret) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +bool function(inout bool par[3]) +{ + // Return the value of the array. + if(is_all(par, true)) + { + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return true; + } + else + return false; +} + +bool is_all(const in bool array[3], const in bool value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bool array[3], const in bool value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_array_vert.vert new file mode 100644 index 00000000000..43429dc9462 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_array_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +bool function(inout bool par[3]); +bool is_all(const in bool array[3], const in bool value); +void set_all(out bool array[3], const in bool value); + +void main (void) +{ + bool par[3]; + bool ret = false; + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, true); + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(is_all(par, false) && ret) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +bool function(inout bool par[3]) +{ + // Return the value of the array. + if(is_all(par, true)) + { + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return true; + } + else + return false; +} + +bool is_all(const in bool array[3], const in bool value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bool array[3], const in bool value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_empty_frag.frag new file mode 100644 index 00000000000..af091de6bdd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_empty_frag.frag @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +bool function(inout bool par); + +void main (void) +{ + bool par = true; + bool ret = false; + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(!par && ret) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +bool function(inout bool par) +{ + // Return the value of the parameter. + if(par) + { + // Test parameter qualifier (default is "in"). + par = false; + + return true; + } + else + return false; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_empty_vert.vert new file mode 100644 index 00000000000..41552dfeef5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_inout_bool_empty_vert.vert @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +bool function(inout bool par); + +void main (void) +{ + bool par = true; + bool ret = false; + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(!par && ret) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +bool function(inout bool par) +{ + // Return the value of the parameter. + if(par) + { + // Test parameter qualifier (default is "in"). + par = false; + + return true; + } + else + return false; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_array_frag.frag new file mode 100644 index 00000000000..10df063d00c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_array_frag.frag @@ -0,0 +1,85 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +bool function(out bool par[3]); +bool is_all(const in bool array[3], const in bool value); +void set_all(out bool array[3], const in bool value); + +void main (void) +{ + bool par[3]; + bool ret = false; + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, true); + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(is_all(par, false) && ret) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +bool function(out bool par[3]) +{ + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return true; +} + +bool is_all(const in bool array[3], const in bool value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bool array[3], const in bool value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_array_vert.vert new file mode 100644 index 00000000000..85615ac6889 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_array_vert.vert @@ -0,0 +1,85 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +bool function(out bool par[3]); +bool is_all(const in bool array[3], const in bool value); +void set_all(out bool array[3], const in bool value); + +void main (void) +{ + bool par[3]; + bool ret = false; + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, true); + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(is_all(par, false) && ret) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +bool function(out bool par[3]) +{ + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return true; +} + +bool is_all(const in bool array[3], const in bool value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bool array[3], const in bool value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_empty_frag.frag new file mode 100644 index 00000000000..0a67173a243 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_empty_frag.frag @@ -0,0 +1,59 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +bool function(out bool par); + +void main (void) +{ + bool par = true; + bool ret = false; + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(!par && ret) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +bool function(out bool par) +{ + // Test parameter qualifier (default is "in"). + par = false; + + return true; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_empty_vert.vert new file mode 100644 index 00000000000..92a46a9081e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bool_empty_out_bool_empty_vert.vert @@ -0,0 +1,59 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +bool function(out bool par); + +void main (void) +{ + bool par = true; + bool ret = false; + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(!par && ret) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +bool function(out bool par) +{ + // Test parameter qualifier (default is "in"). + par = false; + + return true; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_array_frag.frag new file mode 100644 index 00000000000..f8a77b8988c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_array_frag.frag @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +bvec4 function(bvec4 par[3]); +bool is_all(const in bvec4 par, const in bool value); +bool is_all(const in bvec4 array[3], const in bvec4 value); +void set_all(out bvec4 array[3], const in bvec4 value); + +void main (void) +{ + bvec4 par[3]; + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, bvec4(true, true, true, true)); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(is_all(par, bvec4(true, true, true, true)) && is_all(ret, true)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +bvec4 function(bvec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, bvec4(true, true, true, true))) + { + // Test parameter qualifier (default is "in"). + set_all(par, bvec4(false, false, false, false)); + + return bvec4(true, true, true, true); + } + else + return bvec4(false, false, false, false); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in bvec4 array[3], const in bvec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 array[3], const in bvec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_array_vert.vert new file mode 100644 index 00000000000..1a528b8cfb4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_array_vert.vert @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +bvec4 function(bvec4 par[3]); +bool is_all(const in bvec4 par, const in bool value); +bool is_all(const in bvec4 array[3], const in bvec4 value); +void set_all(out bvec4 array[3], const in bvec4 value); + +void main (void) +{ + bvec4 par[3]; + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, bvec4(true, true, true, true)); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(is_all(par, bvec4(true, true, true, true)) && is_all(ret, true)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +bvec4 function(bvec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, bvec4(true, true, true, true))) + { + // Test parameter qualifier (default is "in"). + set_all(par, bvec4(false, false, false, false)); + + return bvec4(true, true, true, true); + } + else + return bvec4(false, false, false, false); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in bvec4 array[3], const in bvec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 array[3], const in bvec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_empty_frag.frag new file mode 100644 index 00000000000..d2f5c7e2960 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_empty_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +bvec4 function(bvec4 par); +bool is_all(const in bvec4 par, const in bool value); +void set_all(out bvec4 par, const in bool value); + +void main (void) +{ + bvec4 par = bvec4(true, true, true, true); + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(is_all(par, true) && is_all(ret, true)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +bvec4 function(bvec4 par) +{ + // Return the value of the parameter. + if(is_all(par, true)) + { + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return bvec4(true, true, true, true); + } + else + return bvec4(false, false, false, false); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 par, const in bool value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_empty_vert.vert new file mode 100644 index 00000000000..e3354f23b93 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_empty_bvec4_empty_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +bvec4 function(bvec4 par); +bool is_all(const in bvec4 par, const in bool value); +void set_all(out bvec4 par, const in bool value); + +void main (void) +{ + bvec4 par = bvec4(true, true, true, true); + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(is_all(par, true) && is_all(ret, true)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +bvec4 function(bvec4 par) +{ + // Return the value of the parameter. + if(is_all(par, true)) + { + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return bvec4(true, true, true, true); + } + else + return bvec4(false, false, false, false); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 par, const in bool value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_array_frag.frag new file mode 100644 index 00000000000..f4479e6802e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_array_frag.frag @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +bvec4 function(in bvec4 par[3]); +bool is_all(const in bvec4 par, const in bool value); +bool is_all(const in bvec4 array[3], const in bvec4 value); +void set_all(out bvec4 array[3], const in bvec4 value); + +void main (void) +{ + bvec4 par[3]; + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, bvec4(true, true, true, true)); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(is_all(par, bvec4(true, true, true, true)) && is_all(ret, true)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +bvec4 function(in bvec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, bvec4(true, true, true, true))) + { + // Test parameter qualifier (default is "in"). + set_all(par, bvec4(false, false, false, false)); + + return bvec4(true, true, true, true); + } + else + return bvec4(false, false, false, false); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in bvec4 array[3], const in bvec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 array[3], const in bvec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_array_vert.vert new file mode 100644 index 00000000000..ae5dde8038a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_array_vert.vert @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +bvec4 function(in bvec4 par[3]); +bool is_all(const in bvec4 par, const in bool value); +bool is_all(const in bvec4 array[3], const in bvec4 value); +void set_all(out bvec4 array[3], const in bvec4 value); + +void main (void) +{ + bvec4 par[3]; + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, bvec4(true, true, true, true)); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(is_all(par, bvec4(true, true, true, true)) && is_all(ret, true)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +bvec4 function(in bvec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, bvec4(true, true, true, true))) + { + // Test parameter qualifier (default is "in"). + set_all(par, bvec4(false, false, false, false)); + + return bvec4(true, true, true, true); + } + else + return bvec4(false, false, false, false); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in bvec4 array[3], const in bvec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 array[3], const in bvec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_empty_frag.frag new file mode 100644 index 00000000000..a13cee3abae --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_empty_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +bvec4 function(in bvec4 par); +bool is_all(const in bvec4 par, const in bool value); +void set_all(out bvec4 par, const in bool value); + +void main (void) +{ + bvec4 par = bvec4(true, true, true, true); + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(is_all(par, true) && is_all(ret, true)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +bvec4 function(in bvec4 par) +{ + // Return the value of the parameter. + if(is_all(par, true)) + { + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return bvec4(true, true, true, true); + } + else + return bvec4(false, false, false, false); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 par, const in bool value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_empty_vert.vert new file mode 100644 index 00000000000..b919bf6b864 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_in_bvec4_empty_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +bvec4 function(in bvec4 par); +bool is_all(const in bvec4 par, const in bool value); +void set_all(out bvec4 par, const in bool value); + +void main (void) +{ + bvec4 par = bvec4(true, true, true, true); + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return true. + if(is_all(par, true) && is_all(ret, true)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +bvec4 function(in bvec4 par) +{ + // Return the value of the parameter. + if(is_all(par, true)) + { + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return bvec4(true, true, true, true); + } + else + return bvec4(false, false, false, false); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 par, const in bool value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_array_frag.frag new file mode 100644 index 00000000000..e61a00534bd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_array_frag.frag @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +bvec4 function(inout bvec4 par[3]); +bool is_all(const in bvec4 par, const in bool value); +bool is_all(const in bvec4 array[3], const in bvec4 value); +void set_all(out bvec4 array[3], const in bvec4 value); + +void main (void) +{ + bvec4 par[3]; + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, bvec4(true, true, true, true)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(is_all(par, bvec4(false, false, false, false)) && is_all(ret, true)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +bvec4 function(inout bvec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, bvec4(true, true, true, true))) + { + // Test parameter qualifier (default is "in"). + set_all(par, bvec4(false, false, false, false)); + + return bvec4(true, true, true, true); + } + else + return bvec4(false, false, false, false); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in bvec4 array[3], const in bvec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 array[3], const in bvec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_array_vert.vert new file mode 100644 index 00000000000..710ff576a3a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_array_vert.vert @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +bvec4 function(inout bvec4 par[3]); +bool is_all(const in bvec4 par, const in bool value); +bool is_all(const in bvec4 array[3], const in bvec4 value); +void set_all(out bvec4 array[3], const in bvec4 value); + +void main (void) +{ + bvec4 par[3]; + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, bvec4(true, true, true, true)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(is_all(par, bvec4(false, false, false, false)) && is_all(ret, true)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +bvec4 function(inout bvec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, bvec4(true, true, true, true))) + { + // Test parameter qualifier (default is "in"). + set_all(par, bvec4(false, false, false, false)); + + return bvec4(true, true, true, true); + } + else + return bvec4(false, false, false, false); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in bvec4 array[3], const in bvec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 array[3], const in bvec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_bigarray_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_bigarray_frag.frag new file mode 100644 index 00000000000..5a114e9be3e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_bigarray_frag.frag @@ -0,0 +1,129 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +bvec4 function(inout bvec4 par[10]); +bool is_all(const in bvec4 par, const in bool value); +bool is_all(const in bvec4 array[10], const in bvec4 value); +void set_all(out bvec4 array[10], const in bvec4 value); + +void main (void) +{ + bvec4 par[10]; + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, bvec4(true, true, true, true)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(is_all(par, bvec4(false, false, false, false)) && is_all(ret, true)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +bvec4 function(inout bvec4 par[10]) +{ + // Return the value of the array. + if(is_all(par, bvec4(true, true, true, true))) + { + // Test parameter qualifier (default is "in"). + set_all(par, bvec4(false, false, false, false)); + + return bvec4(true, true, true, true); + } + else + return bvec4(false, false, false, false); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in bvec4 array[10], const in bvec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + if(array[3] != value) + ret = false; + if(array[4] != value) + ret = false; + if(array[5] != value) + ret = false; + if(array[6] != value) + ret = false; + if(array[7] != value) + ret = false; + if(array[8] != value) + ret = false; + if(array[9] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 array[10], const in bvec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; + array[3] = value; + array[4] = value; + array[5] = value; + array[6] = value; + array[7] = value; + array[8] = value; + array[9] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_bigarray_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_bigarray_vert.vert new file mode 100644 index 00000000000..92f5db9a4c6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_bigarray_vert.vert @@ -0,0 +1,129 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +bvec4 function(inout bvec4 par[10]); +bool is_all(const in bvec4 par, const in bool value); +bool is_all(const in bvec4 array[10], const in bvec4 value); +void set_all(out bvec4 array[10], const in bvec4 value); + +void main (void) +{ + bvec4 par[10]; + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, bvec4(true, true, true, true)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(is_all(par, bvec4(false, false, false, false)) && is_all(ret, true)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +bvec4 function(inout bvec4 par[10]) +{ + // Return the value of the array. + if(is_all(par, bvec4(true, true, true, true))) + { + // Test parameter qualifier (default is "in"). + set_all(par, bvec4(false, false, false, false)); + + return bvec4(true, true, true, true); + } + else + return bvec4(false, false, false, false); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in bvec4 array[10], const in bvec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + if(array[3] != value) + ret = false; + if(array[4] != value) + ret = false; + if(array[5] != value) + ret = false; + if(array[6] != value) + ret = false; + if(array[7] != value) + ret = false; + if(array[8] != value) + ret = false; + if(array[9] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 array[10], const in bvec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; + array[3] = value; + array[4] = value; + array[5] = value; + array[6] = value; + array[7] = value; + array[8] = value; + array[9] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_empty_frag.frag new file mode 100644 index 00000000000..e1f4a1f915d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_empty_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +bvec4 function(inout bvec4 par); +bool is_all(const in bvec4 par, const in bool value); +void set_all(out bvec4 par, const in bool value); + +void main (void) +{ + bvec4 par = bvec4(true, true, true, true); + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(is_all(par, false) && is_all(ret, true)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +bvec4 function(inout bvec4 par) +{ + // Return the value of the parameter. + if(is_all(par, true)) + { + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return bvec4(true, true, true, true); + } + else + return bvec4(false, false, false, false); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 par, const in bool value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_empty_vert.vert new file mode 100644 index 00000000000..4f8820bc45b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_inout_bvec4_empty_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +bvec4 function(inout bvec4 par); +bool is_all(const in bvec4 par, const in bool value); +void set_all(out bvec4 par, const in bool value); + +void main (void) +{ + bvec4 par = bvec4(true, true, true, true); + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(is_all(par, false) && is_all(ret, true)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +bvec4 function(inout bvec4 par) +{ + // Return the value of the parameter. + if(is_all(par, true)) + { + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return bvec4(true, true, true, true); + } + else + return bvec4(false, false, false, false); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 par, const in bool value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_array_frag.frag new file mode 100644 index 00000000000..e3f50a63f12 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_array_frag.frag @@ -0,0 +1,102 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +bvec4 function(out bvec4 par[3]); +bool is_all(const in bvec4 par, const in bool value); +bool is_all(const in bvec4 array[3], const in bvec4 value); +void set_all(out bvec4 array[3], const in bvec4 value); + +void main (void) +{ + bvec4 par[3]; + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, bvec4(true, true, true, true)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(is_all(par, bvec4(false, false, false, false)) && is_all(ret, true)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +bvec4 function(out bvec4 par[3]) +{ + // Test parameter qualifier (default is "in"). + set_all(par, bvec4(false, false, false, false)); + + return bvec4(true, true, true, true); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in bvec4 array[3], const in bvec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 array[3], const in bvec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_array_vert.vert new file mode 100644 index 00000000000..b64a447b196 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_array_vert.vert @@ -0,0 +1,102 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +bvec4 function(out bvec4 par[3]); +bool is_all(const in bvec4 par, const in bool value); +bool is_all(const in bvec4 array[3], const in bvec4 value); +void set_all(out bvec4 array[3], const in bvec4 value); + +void main (void) +{ + bvec4 par[3]; + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + // Initialize the entire array to true. + set_all(par, bvec4(true, true, true, true)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(is_all(par, bvec4(false, false, false, false)) && is_all(ret, true)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +bvec4 function(out bvec4 par[3]) +{ + // Test parameter qualifier (default is "in"). + set_all(par, bvec4(false, false, false, false)); + + return bvec4(true, true, true, true); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in bvec4 array[3], const in bvec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 array[3], const in bvec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_empty_frag.frag new file mode 100644 index 00000000000..1f923620085 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_empty_frag.frag @@ -0,0 +1,85 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +bvec4 function(out bvec4 par); +bool is_all(const in bvec4 par, const in bool value); +void set_all(out bvec4 par, const in bool value); + +void main (void) +{ + bvec4 par = bvec4(true, true, true, true); + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(is_all(par, false) && is_all(ret, true)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +bvec4 function(out bvec4 par) +{ + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return bvec4(true, true, true, true); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 par, const in bool value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_empty_vert.vert new file mode 100644 index 00000000000..99c318fe7e1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/bvec4_empty_out_bvec4_empty_vert.vert @@ -0,0 +1,85 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +bvec4 function(out bvec4 par); +bool is_all(const in bvec4 par, const in bool value); +void set_all(out bvec4 par, const in bool value); + +void main (void) +{ + bvec4 par = bvec4(true, true, true, true); + bvec4 ret = bvec4(false, false, false, false); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return true. + if(is_all(par, false) && is_all(ret, true)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +bvec4 function(out bvec4 par) +{ + // Test parameter qualifier (default is "in"). + set_all(par, false); + + return bvec4(true, true, true, true); +} + +bool is_all(const in bvec4 par, const in bool value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out bvec4 par, const in bool value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_array_frag.frag new file mode 100644 index 00000000000..b3a130eec1f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_array_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +float function(float par[3]); +bool is_all(const in float array[3], const in float value); +void set_all(out float array[3], const in float value); + +void main (void) +{ + float par[3]; + float ret = 0.0; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, 1.0); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, 1.0) && (ret == 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +float function(float par[3]) +{ + // Return the value of the array. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return 1.0; + } + else + return 0.0; +} + +bool is_all(const in float array[3], const in float value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out float array[3], const in float value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_array_vert.vert new file mode 100644 index 00000000000..4763c1ad8ce --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_array_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +float function(float par[3]); +bool is_all(const in float array[3], const in float value); +void set_all(out float array[3], const in float value); + +void main (void) +{ + float par[3]; + float ret = 0.0; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, 1.0); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, 1.0) && (ret == 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +float function(float par[3]) +{ + // Return the value of the array. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return 1.0; + } + else + return 0.0; +} + +bool is_all(const in float array[3], const in float value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out float array[3], const in float value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_empty_frag.frag new file mode 100644 index 00000000000..51d735717da --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_empty_frag.frag @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +float function(float par); + +void main (void) +{ + float par = 1.0; + float ret = 0.0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if((par == 1.0) && (ret == 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +float function(float par) +{ + // Return the value of the parameter. + if(par == 1.0) + { + // Test parameter qualifier (default is "in"). + par = 0.0; + + return 1.0; + } + else + return 0.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_empty_vert.vert new file mode 100644 index 00000000000..f41995b3ef8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_empty_float_empty_vert.vert @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +float function(float par); + +void main (void) +{ + float par = 1.0; + float ret = 0.0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if((par == 1.0) && (ret == 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +float function(float par) +{ + // Return the value of the parameter. + if(par == 1.0) + { + // Test parameter qualifier (default is "in"). + par = 0.0; + + return 1.0; + } + else + return 0.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_array_frag.frag new file mode 100644 index 00000000000..33e0ab61112 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_array_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +float function(in float par[3]); +bool is_all(const in float array[3], const in float value); +void set_all(out float array[3], const in float value); + +void main (void) +{ + float par[3]; + float ret = 0.0; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, 1.0); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, 1.0) && (ret == 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +float function(in float par[3]) +{ + // Return the value of the array. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return 1.0; + } + else + return 0.0; +} + +bool is_all(const in float array[3], const in float value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out float array[3], const in float value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_array_vert.vert new file mode 100644 index 00000000000..a685e7345ef --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_array_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +float function(in float par[3]); +bool is_all(const in float array[3], const in float value); +void set_all(out float array[3], const in float value); + +void main (void) +{ + float par[3]; + float ret = 0.0; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, 1.0); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, 1.0) && (ret == 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +float function(in float par[3]) +{ + // Return the value of the array. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return 1.0; + } + else + return 0.0; +} + +bool is_all(const in float array[3], const in float value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out float array[3], const in float value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_empty_frag.frag new file mode 100644 index 00000000000..09870afe500 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_empty_frag.frag @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +float function(in float par); + +void main (void) +{ + float par = 1.0; + float ret = 0.0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if((par == 1.0) && (ret == 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +float function(in float par) +{ + // Return the value of the parameter. + if(par == 1.0) + { + // Test parameter qualifier (default is "in"). + par = 0.0; + + return 1.0; + } + else + return 0.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_empty_vert.vert new file mode 100644 index 00000000000..f1f47f3034a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_in_float_empty_vert.vert @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +float function(in float par); + +void main (void) +{ + float par = 1.0; + float ret = 0.0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if((par == 1.0) && (ret == 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +float function(in float par) +{ + // Return the value of the parameter. + if(par == 1.0) + { + // Test parameter qualifier (default is "in"). + par = 0.0; + + return 1.0; + } + else + return 0.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_array_frag.frag new file mode 100644 index 00000000000..fd0fa109691 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_array_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +float function(inout float par[3]); +bool is_all(const in float array[3], const in float value); +void set_all(out float array[3], const in float value); + +void main (void) +{ + float par[3]; + float ret = 0.0; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, 1.0); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, 0.0) && (ret == 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +float function(inout float par[3]) +{ + // Return the value of the array. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return 1.0; + } + else + return 0.0; +} + +bool is_all(const in float array[3], const in float value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out float array[3], const in float value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_array_vert.vert new file mode 100644 index 00000000000..d4c82f266a7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_array_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +float function(inout float par[3]); +bool is_all(const in float array[3], const in float value); +void set_all(out float array[3], const in float value); + +void main (void) +{ + float par[3]; + float ret = 0.0; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, 1.0); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, 0.0) && (ret == 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +float function(inout float par[3]) +{ + // Return the value of the array. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return 1.0; + } + else + return 0.0; +} + +bool is_all(const in float array[3], const in float value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out float array[3], const in float value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_empty_frag.frag new file mode 100644 index 00000000000..ce0d3d0c5b9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_empty_frag.frag @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +float function(inout float par); + +void main (void) +{ + float par = 1.0; + float ret = 0.0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if((par == 0.0) && (ret == 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +float function(inout float par) +{ + // Return the value of the parameter. + if(par == 1.0) + { + // Test parameter qualifier (default is "in"). + par = 0.0; + + return 1.0; + } + else + return 0.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_empty_vert.vert new file mode 100644 index 00000000000..04d063561ae --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_inout_float_empty_vert.vert @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +float function(inout float par); + +void main (void) +{ + float par = 1.0; + float ret = 0.0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if((par == 0.0) && (ret == 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +float function(inout float par) +{ + // Return the value of the parameter. + if(par == 1.0) + { + // Test parameter qualifier (default is "in"). + par = 0.0; + + return 1.0; + } + else + return 0.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_array_frag.frag new file mode 100644 index 00000000000..3df81949369 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_array_frag.frag @@ -0,0 +1,85 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +float function(out float par[3]); +bool is_all(const in float array[3], const in float value); +void set_all(out float array[3], const in float value); + +void main (void) +{ + float par[3]; + float ret = 0.0; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, 1.0); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, 0.0) && (ret == 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +float function(out float par[3]) +{ + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return 1.0; +} + +bool is_all(const in float array[3], const in float value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out float array[3], const in float value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_array_vert.vert new file mode 100644 index 00000000000..212f4e846b3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_array_vert.vert @@ -0,0 +1,85 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +float function(out float par[3]); +bool is_all(const in float array[3], const in float value); +void set_all(out float array[3], const in float value); + +void main (void) +{ + float par[3]; + float ret = 0.0; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, 1.0); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, 0.0) && (ret == 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +float function(out float par[3]) +{ + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return 1.0; +} + +bool is_all(const in float array[3], const in float value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out float array[3], const in float value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_empty_frag.frag new file mode 100644 index 00000000000..c0aafb071e5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_empty_frag.frag @@ -0,0 +1,59 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +float function(out float par); + +void main (void) +{ + float par = 1.0; + float ret = 0.0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if((par == 0.0) && (ret == 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +float function(out float par) +{ + // Test parameter qualifier (default is "in"). + par = 0.0; + + return 1.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_empty_vert.vert new file mode 100644 index 00000000000..48837c9f3d8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/float_empty_out_float_empty_vert.vert @@ -0,0 +1,59 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +float function(out float par); + +void main (void) +{ + float par = 1.0; + float ret = 0.0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if((par == 0.0) && (ret == 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +float function(out float par) +{ + // Test parameter qualifier (default is "in"). + par = 0.0; + + return 1.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_001_to_008.html new file mode 100644 index 00000000000..309e4b49178 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_001_to_008.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_009_to_016.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_009_to_016.html new file mode 100644 index 00000000000..3a055a2e567 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_009_to_016.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_009_to_016.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_017_to_024.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_017_to_024.html new file mode 100644 index 00000000000..72e2585af43 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_017_to_024.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_017_to_024.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_025_to_032.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_025_to_032.html new file mode 100644 index 00000000000..32a7ef534df --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_025_to_032.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_025_to_032.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_033_to_040.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_033_to_040.html new file mode 100644 index 00000000000..4a8723664b2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_033_to_040.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_033_to_040.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_041_to_048.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_041_to_048.html new file mode 100644 index 00000000000..0d3aee92783 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_041_to_048.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_041_to_048.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_049_to_056.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_049_to_056.html new file mode 100644 index 00000000000..4cbdf62fc97 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_049_to_056.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_049_to_056.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_057_to_064.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_057_to_064.html new file mode 100644 index 00000000000..2c2545718b7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_057_to_064.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_057_to_064.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_065_to_072.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_065_to_072.html new file mode 100644 index 00000000000..d01ded0bd32 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_065_to_072.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_065_to_072.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_073_to_080.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_073_to_080.html new file mode 100644 index 00000000000..969754f71ef --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_073_to_080.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_073_to_080.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_081_to_088.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_081_to_088.html new file mode 100644 index 00000000000..08c0e1163e4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_081_to_088.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_081_to_088.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_089_to_096.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_089_to_096.html new file mode 100644 index 00000000000..35158155869 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_089_to_096.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_089_to_096.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_097_to_104.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_097_to_104.html new file mode 100644 index 00000000000..2d5ef101d9f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_097_to_104.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_097_to_104.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_105_to_112.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_105_to_112.html new file mode 100644 index 00000000000..7d826450fd4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_105_to_112.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_105_to_112.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_113_to_120.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_113_to_120.html new file mode 100644 index 00000000000..c97b0c2d4a2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_113_to_120.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: functions_113_to_120.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_121_to_126.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_121_to_126.html new file mode 100644 index 00000000000..10eaee12a88 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/functions_121_to_126.html @@ -0,0 +1,203 @@ + + + + + +WebGL GLSL conformance test: functions_121_to_126.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/input.run.txt new file mode 100644 index 00000000000..00b4fa8fa64 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/input.run.txt @@ -0,0 +1,17 @@ +# this file is auto-generated. DO NOT EDIT. +functions_001_to_008.html +functions_009_to_016.html +functions_017_to_024.html +functions_025_to_032.html +functions_033_to_040.html +functions_041_to_048.html +functions_049_to_056.html +functions_057_to_064.html +functions_065_to_072.html +functions_073_to_080.html +functions_081_to_088.html +functions_089_to_096.html +functions_097_to_104.html +functions_105_to_112.html +functions_113_to_120.html +functions_121_to_126.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_array_frag.frag new file mode 100644 index 00000000000..59a502afe66 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_array_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +int function(int par[3]); +bool is_all(const in int array[3], const in int value); +void set_all(out int array[3], const in int value); + +void main (void) +{ + int par[3]; + int ret = 0; + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, 1); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if(is_all(par, 1) && (ret == 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +int function(int par[3]) +{ + // Return the value of the array. + if(is_all(par, 1)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return 1; + } + else + return 0; +} + +bool is_all(const in int array[3], const in int value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out int array[3], const in int value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_array_vert.vert new file mode 100644 index 00000000000..8b9e0417deb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_array_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +int function(int par[3]); +bool is_all(const in int array[3], const in int value); +void set_all(out int array[3], const in int value); + +void main (void) +{ + int par[3]; + int ret = 0; + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, 1); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if(is_all(par, 1) && (ret == 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +int function(int par[3]) +{ + // Return the value of the array. + if(is_all(par, 1)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return 1; + } + else + return 0; +} + +bool is_all(const in int array[3], const in int value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out int array[3], const in int value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_empty_frag.frag new file mode 100644 index 00000000000..3f9fc443807 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_empty_frag.frag @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +int function(int par); + +void main (void) +{ + int par = 1; + int ret = 0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if((par == 1) && (ret == 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +int function(int par) +{ + // Return the value of the parameter. + if(par == 1) + { + // Test parameter qualifier (default is "in"). + par = 0; + + return 1; + } + else + return 0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_empty_vert.vert new file mode 100644 index 00000000000..73e895d7f43 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_empty_int_empty_vert.vert @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +int function(int par); + +void main (void) +{ + int par = 1; + int ret = 0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if((par == 1) && (ret == 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +int function(int par) +{ + // Return the value of the parameter. + if(par == 1) + { + // Test parameter qualifier (default is "in"). + par = 0; + + return 1; + } + else + return 0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_array_frag.frag new file mode 100644 index 00000000000..b9e2910bcc4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_array_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +int function(in int par[3]); +bool is_all(const in int array[3], const in int value); +void set_all(out int array[3], const in int value); + +void main (void) +{ + int par[3]; + int ret = 0; + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, 1); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if(is_all(par, 1) && (ret == 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +int function(in int par[3]) +{ + // Return the value of the array. + if(is_all(par, 1)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return 1; + } + else + return 0; +} + +bool is_all(const in int array[3], const in int value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out int array[3], const in int value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_array_vert.vert new file mode 100644 index 00000000000..3d807a18ebc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_array_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +int function(in int par[3]); +bool is_all(const in int array[3], const in int value); +void set_all(out int array[3], const in int value); + +void main (void) +{ + int par[3]; + int ret = 0; + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, 1); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if(is_all(par, 1) && (ret == 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +int function(in int par[3]) +{ + // Return the value of the array. + if(is_all(par, 1)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return 1; + } + else + return 0; +} + +bool is_all(const in int array[3], const in int value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out int array[3], const in int value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_empty_frag.frag new file mode 100644 index 00000000000..4be3d649c7d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_empty_frag.frag @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +int function(in int par); + +void main (void) +{ + int par = 1; + int ret = 0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if((par == 1) && (ret == 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +int function(in int par) +{ + // Return the value of the parameter. + if(par == 1) + { + // Test parameter qualifier (default is "in"). + par = 0; + + return 1; + } + else + return 0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_empty_vert.vert new file mode 100644 index 00000000000..020d7949257 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_in_int_empty_vert.vert @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +int function(in int par); + +void main (void) +{ + int par = 1; + int ret = 0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if((par == 1) && (ret == 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +int function(in int par) +{ + // Return the value of the parameter. + if(par == 1) + { + // Test parameter qualifier (default is "in"). + par = 0; + + return 1; + } + else + return 0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_array_frag.frag new file mode 100644 index 00000000000..91d71268d7a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_array_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +int function(inout int par[3]); +bool is_all(const in int array[3], const in int value); +void set_all(out int array[3], const in int value); + +void main (void) +{ + int par[3]; + int ret = 0; + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, 1); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if(is_all(par, 0) && (ret == 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +int function(inout int par[3]) +{ + // Return the value of the array. + if(is_all(par, 1)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return 1; + } + else + return 0; +} + +bool is_all(const in int array[3], const in int value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out int array[3], const in int value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_array_vert.vert new file mode 100644 index 00000000000..efaf9f449c7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_array_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +int function(inout int par[3]); +bool is_all(const in int array[3], const in int value); +void set_all(out int array[3], const in int value); + +void main (void) +{ + int par[3]; + int ret = 0; + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, 1); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if(is_all(par, 0) && (ret == 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +int function(inout int par[3]) +{ + // Return the value of the array. + if(is_all(par, 1)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return 1; + } + else + return 0; +} + +bool is_all(const in int array[3], const in int value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out int array[3], const in int value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_empty_frag.frag new file mode 100644 index 00000000000..e2780c41cab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_empty_frag.frag @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +int function(inout int par); + +void main (void) +{ + int par = 1; + int ret = 0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if((par == 0) && (ret == 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +int function(inout int par) +{ + // Return the value of the parameter. + if(par == 1) + { + // Test parameter qualifier (default is "in"). + par = 0; + + return 1; + } + else + return 0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_empty_vert.vert new file mode 100644 index 00000000000..e252ac4cf45 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_inout_int_empty_vert.vert @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +int function(inout int par); + +void main (void) +{ + int par = 1; + int ret = 0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if((par == 0) && (ret == 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +int function(inout int par) +{ + // Return the value of the parameter. + if(par == 1) + { + // Test parameter qualifier (default is "in"). + par = 0; + + return 1; + } + else + return 0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_array_frag.frag new file mode 100644 index 00000000000..a46c860f841 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_array_frag.frag @@ -0,0 +1,85 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +int function(out int par[3]); +bool is_all(const in int array[3], const in int value); +void set_all(out int array[3], const in int value); + +void main (void) +{ + int par[3]; + int ret = 0; + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, 1); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if(is_all(par, 0) && (ret == 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +int function(out int par[3]) +{ + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return 1; +} + +bool is_all(const in int array[3], const in int value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out int array[3], const in int value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_array_vert.vert new file mode 100644 index 00000000000..5dd10b83375 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_array_vert.vert @@ -0,0 +1,85 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +int function(out int par[3]); +bool is_all(const in int array[3], const in int value); +void set_all(out int array[3], const in int value); + +void main (void) +{ + int par[3]; + int ret = 0; + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, 1); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if(is_all(par, 0) && (ret == 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +int function(out int par[3]) +{ + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return 1; +} + +bool is_all(const in int array[3], const in int value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out int array[3], const in int value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_empty_frag.frag new file mode 100644 index 00000000000..822948a2d9e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_empty_frag.frag @@ -0,0 +1,59 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +int function(out int par); + +void main (void) +{ + int par = 1; + int ret = 0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if((par == 0) && (ret == 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +int function(out int par) +{ + // Test parameter qualifier (default is "in"). + par = 0; + + return 1; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_empty_vert.vert new file mode 100644 index 00000000000..6a5d0b85c32 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/int_empty_out_int_empty_vert.vert @@ -0,0 +1,59 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +int function(out int par); + +void main (void) +{ + int par = 1; + int ret = 0; + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if((par == 0) && (ret == 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +int function(out int par) +{ + // Test parameter qualifier (default is "in"). + par = 0; + + return 1; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_array_frag.frag new file mode 100644 index 00000000000..1ee72fd7fe6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_array_frag.frag @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +ivec4 function(ivec4 par[3]); +bool is_all(const in ivec4 par, const in int value); +bool is_all(const in ivec4 array[3], const in ivec4 value); +void set_all(out ivec4 array[3], const in ivec4 value); + +void main (void) +{ + ivec4 par[3]; + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, ivec4(1, 1, 1, 1)); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if(is_all(par, ivec4(1, 1, 1, 1)) && is_all(ret, 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +ivec4 function(ivec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, ivec4(1, 1, 1, 1))) + { + // Test parameter qualifier (default is "in"). + set_all(par, ivec4(0, 0, 0, 0)); + + return ivec4(1, 1, 1, 1); + } + else + return ivec4(0, 0, 0, 0); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in ivec4 array[3], const in ivec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 array[3], const in ivec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_array_vert.vert new file mode 100644 index 00000000000..82be12d556d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_array_vert.vert @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +ivec4 function(ivec4 par[3]); +bool is_all(const in ivec4 par, const in int value); +bool is_all(const in ivec4 array[3], const in ivec4 value); +void set_all(out ivec4 array[3], const in ivec4 value); + +void main (void) +{ + ivec4 par[3]; + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, ivec4(1, 1, 1, 1)); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if(is_all(par, ivec4(1, 1, 1, 1)) && is_all(ret, 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +ivec4 function(ivec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, ivec4(1, 1, 1, 1))) + { + // Test parameter qualifier (default is "in"). + set_all(par, ivec4(0, 0, 0, 0)); + + return ivec4(1, 1, 1, 1); + } + else + return ivec4(0, 0, 0, 0); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in ivec4 array[3], const in ivec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 array[3], const in ivec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_empty_frag.frag new file mode 100644 index 00000000000..1a66f95e7a6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_empty_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +ivec4 function(ivec4 par); +bool is_all(const in ivec4 par, const in int value); +void set_all(out ivec4 par, const in int value); + +void main (void) +{ + ivec4 par = ivec4(1, 1, 1, 1); + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if(is_all(par, 1) && is_all(ret, 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +ivec4 function(ivec4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return ivec4(1, 1, 1, 1); + } + else + return ivec4(0, 0, 0, 0); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 par, const in int value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_empty_vert.vert new file mode 100644 index 00000000000..3680ca05101 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_empty_ivec4_empty_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +ivec4 function(ivec4 par); +bool is_all(const in ivec4 par, const in int value); +void set_all(out ivec4 par, const in int value); + +void main (void) +{ + ivec4 par = ivec4(1, 1, 1, 1); + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if(is_all(par, 1) && is_all(ret, 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +ivec4 function(ivec4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return ivec4(1, 1, 1, 1); + } + else + return ivec4(0, 0, 0, 0); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 par, const in int value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_array_frag.frag new file mode 100644 index 00000000000..7aa71b48a26 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_array_frag.frag @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +ivec4 function(in ivec4 par[3]); +bool is_all(const in ivec4 par, const in int value); +bool is_all(const in ivec4 array[3], const in ivec4 value); +void set_all(out ivec4 array[3], const in ivec4 value); + +void main (void) +{ + ivec4 par[3]; + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, ivec4(1, 1, 1, 1)); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if(is_all(par, ivec4(1, 1, 1, 1)) && is_all(ret, 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +ivec4 function(in ivec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, ivec4(1, 1, 1, 1))) + { + // Test parameter qualifier (default is "in"). + set_all(par, ivec4(0, 0, 0, 0)); + + return ivec4(1, 1, 1, 1); + } + else + return ivec4(0, 0, 0, 0); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in ivec4 array[3], const in ivec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 array[3], const in ivec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_array_vert.vert new file mode 100644 index 00000000000..df24cc8ff79 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_array_vert.vert @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +ivec4 function(in ivec4 par[3]); +bool is_all(const in ivec4 par, const in int value); +bool is_all(const in ivec4 array[3], const in ivec4 value); +void set_all(out ivec4 array[3], const in ivec4 value); + +void main (void) +{ + ivec4 par[3]; + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, ivec4(1, 1, 1, 1)); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if(is_all(par, ivec4(1, 1, 1, 1)) && is_all(ret, 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +ivec4 function(in ivec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, ivec4(1, 1, 1, 1))) + { + // Test parameter qualifier (default is "in"). + set_all(par, ivec4(0, 0, 0, 0)); + + return ivec4(1, 1, 1, 1); + } + else + return ivec4(0, 0, 0, 0); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in ivec4 array[3], const in ivec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 array[3], const in ivec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_empty_frag.frag new file mode 100644 index 00000000000..bc6c03adc4e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_empty_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +ivec4 function(in ivec4 par); +bool is_all(const in ivec4 par, const in int value); +void set_all(out ivec4 par, const in int value); + +void main (void) +{ + ivec4 par = ivec4(1, 1, 1, 1); + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if(is_all(par, 1) && is_all(ret, 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +ivec4 function(in ivec4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return ivec4(1, 1, 1, 1); + } + else + return ivec4(0, 0, 0, 0); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 par, const in int value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_empty_vert.vert new file mode 100644 index 00000000000..1f0e3cd2b13 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_in_ivec4_empty_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +ivec4 function(in ivec4 par); +bool is_all(const in ivec4 par, const in int value); +void set_all(out ivec4 par, const in int value); + +void main (void) +{ + ivec4 par = ivec4(1, 1, 1, 1); + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1. + if(is_all(par, 1) && is_all(ret, 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +ivec4 function(in ivec4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return ivec4(1, 1, 1, 1); + } + else + return ivec4(0, 0, 0, 0); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 par, const in int value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_array_frag.frag new file mode 100644 index 00000000000..4aae9eebf67 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_array_frag.frag @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +ivec4 function(inout ivec4 par[3]); +bool is_all(const in ivec4 par, const in int value); +bool is_all(const in ivec4 array[3], const in ivec4 value); +void set_all(out ivec4 array[3], const in ivec4 value); + +void main (void) +{ + ivec4 par[3]; + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, ivec4(1, 1, 1, 1)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if(is_all(par, ivec4(0, 0, 0, 0)) && is_all(ret, 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +ivec4 function(inout ivec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, ivec4(1, 1, 1, 1))) + { + // Test parameter qualifier (default is "in"). + set_all(par, ivec4(0, 0, 0, 0)); + + return ivec4(1, 1, 1, 1); + } + else + return ivec4(0, 0, 0, 0); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in ivec4 array[3], const in ivec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 array[3], const in ivec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_array_vert.vert new file mode 100644 index 00000000000..069dae62c65 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_array_vert.vert @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +ivec4 function(inout ivec4 par[3]); +bool is_all(const in ivec4 par, const in int value); +bool is_all(const in ivec4 array[3], const in ivec4 value); +void set_all(out ivec4 array[3], const in ivec4 value); + +void main (void) +{ + ivec4 par[3]; + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, ivec4(1, 1, 1, 1)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if(is_all(par, ivec4(0, 0, 0, 0)) && is_all(ret, 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +ivec4 function(inout ivec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, ivec4(1, 1, 1, 1))) + { + // Test parameter qualifier (default is "in"). + set_all(par, ivec4(0, 0, 0, 0)); + + return ivec4(1, 1, 1, 1); + } + else + return ivec4(0, 0, 0, 0); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in ivec4 array[3], const in ivec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 array[3], const in ivec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_bigarray_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_bigarray_frag.frag new file mode 100644 index 00000000000..d2f509df7dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_bigarray_frag.frag @@ -0,0 +1,129 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +ivec4 function(inout ivec4 par[10]); +bool is_all(const in ivec4 par, const in int value); +bool is_all(const in ivec4 array[10], const in ivec4 value); +void set_all(out ivec4 array[10], const in ivec4 value); + +void main (void) +{ + ivec4 par[10]; + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, ivec4(1, 1, 1, 1)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if(is_all(par, ivec4(0, 0, 0, 0)) && is_all(ret, 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +ivec4 function(inout ivec4 par[10]) +{ + // Return the value of the array. + if(is_all(par, ivec4(1, 1, 1, 1))) + { + // Test parameter qualifier (default is "in"). + set_all(par, ivec4(0, 0, 0, 0)); + + return ivec4(1, 1, 1, 1); + } + else + return ivec4(0, 0, 0, 0); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in ivec4 array[10], const in ivec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + if(array[3] != value) + ret = false; + if(array[4] != value) + ret = false; + if(array[5] != value) + ret = false; + if(array[6] != value) + ret = false; + if(array[7] != value) + ret = false; + if(array[8] != value) + ret = false; + if(array[9] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 array[10], const in ivec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; + array[3] = value; + array[4] = value; + array[5] = value; + array[6] = value; + array[7] = value; + array[8] = value; + array[9] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_bigarray_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_bigarray_vert.vert new file mode 100644 index 00000000000..0c69946a165 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_bigarray_vert.vert @@ -0,0 +1,129 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +ivec4 function(inout ivec4 par[10]); +bool is_all(const in ivec4 par, const in int value); +bool is_all(const in ivec4 array[10], const in ivec4 value); +void set_all(out ivec4 array[10], const in ivec4 value); + +void main (void) +{ + ivec4 par[10]; + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, ivec4(1, 1, 1, 1)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if(is_all(par, ivec4(0, 0, 0, 0)) && is_all(ret, 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +ivec4 function(inout ivec4 par[10]) +{ + // Return the value of the array. + if(is_all(par, ivec4(1, 1, 1, 1))) + { + // Test parameter qualifier (default is "in"). + set_all(par, ivec4(0, 0, 0, 0)); + + return ivec4(1, 1, 1, 1); + } + else + return ivec4(0, 0, 0, 0); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in ivec4 array[10], const in ivec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + if(array[3] != value) + ret = false; + if(array[4] != value) + ret = false; + if(array[5] != value) + ret = false; + if(array[6] != value) + ret = false; + if(array[7] != value) + ret = false; + if(array[8] != value) + ret = false; + if(array[9] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 array[10], const in ivec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; + array[3] = value; + array[4] = value; + array[5] = value; + array[6] = value; + array[7] = value; + array[8] = value; + array[9] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_empty_frag.frag new file mode 100644 index 00000000000..aa75e3262b5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_empty_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +ivec4 function(inout ivec4 par); +bool is_all(const in ivec4 par, const in int value); +void set_all(out ivec4 par, const in int value); + +void main (void) +{ + ivec4 par = ivec4(1, 1, 1, 1); + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if(is_all(par, 0) && is_all(ret, 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +ivec4 function(inout ivec4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return ivec4(1, 1, 1, 1); + } + else + return ivec4(0, 0, 0, 0); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 par, const in int value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_empty_vert.vert new file mode 100644 index 00000000000..40e9db60ca9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_inout_ivec4_empty_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +ivec4 function(inout ivec4 par); +bool is_all(const in ivec4 par, const in int value); +void set_all(out ivec4 par, const in int value); + +void main (void) +{ + ivec4 par = ivec4(1, 1, 1, 1); + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if(is_all(par, 0) && is_all(ret, 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +ivec4 function(inout ivec4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return ivec4(1, 1, 1, 1); + } + else + return ivec4(0, 0, 0, 0); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 par, const in int value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_array_frag.frag new file mode 100644 index 00000000000..88ec4b637a8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_array_frag.frag @@ -0,0 +1,102 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +ivec4 function(out ivec4 par[3]); +bool is_all(const in ivec4 par, const in int value); +bool is_all(const in ivec4 array[3], const in ivec4 value); +void set_all(out ivec4 array[3], const in ivec4 value); + +void main (void) +{ + ivec4 par[3]; + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, ivec4(1, 1, 1, 1)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if(is_all(par, ivec4(0, 0, 0, 0)) && is_all(ret, 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +ivec4 function(out ivec4 par[3]) +{ + // Test parameter qualifier (default is "in"). + set_all(par, ivec4(0, 0, 0, 0)); + + return ivec4(1, 1, 1, 1); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in ivec4 array[3], const in ivec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 array[3], const in ivec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_array_vert.vert new file mode 100644 index 00000000000..c33908198fd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_array_vert.vert @@ -0,0 +1,102 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +ivec4 function(out ivec4 par[3]); +bool is_all(const in ivec4 par, const in int value); +bool is_all(const in ivec4 array[3], const in ivec4 value); +void set_all(out ivec4 array[3], const in ivec4 value); + +void main (void) +{ + ivec4 par[3]; + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + // Initialize the entire array to 1. + set_all(par, ivec4(1, 1, 1, 1)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if(is_all(par, ivec4(0, 0, 0, 0)) && is_all(ret, 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +ivec4 function(out ivec4 par[3]) +{ + // Test parameter qualifier (default is "in"). + set_all(par, ivec4(0, 0, 0, 0)); + + return ivec4(1, 1, 1, 1); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in ivec4 array[3], const in ivec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 array[3], const in ivec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_empty_frag.frag new file mode 100644 index 00000000000..9886a204f3e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_empty_frag.frag @@ -0,0 +1,85 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +ivec4 function(out ivec4 par); +bool is_all(const in ivec4 par, const in int value); +void set_all(out ivec4 par, const in int value); + +void main (void) +{ + ivec4 par = ivec4(1, 1, 1, 1); + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if(is_all(par, 0) && is_all(ret, 1)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +ivec4 function(out ivec4 par) +{ + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return ivec4(1, 1, 1, 1); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 par, const in int value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_empty_vert.vert new file mode 100644 index 00000000000..1e376e399a4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/ivec4_empty_out_ivec4_empty_vert.vert @@ -0,0 +1,85 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +ivec4 function(out ivec4 par); +bool is_all(const in ivec4 par, const in int value); +void set_all(out ivec4 par, const in int value); + +void main (void) +{ + ivec4 par = ivec4(1, 1, 1, 1); + ivec4 ret = ivec4(0, 0, 0, 0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1. + if(is_all(par, 0) && is_all(ret, 1)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +ivec4 function(out ivec4 par) +{ + // Test parameter qualifier (default is "in"). + set_all(par, 0); + + return ivec4(1, 1, 1, 1); +} + +bool is_all(const in ivec4 par, const in int value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out ivec4 par, const in int value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_array_frag.frag new file mode 100644 index 00000000000..9ee51b4a870 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_array_frag.frag @@ -0,0 +1,141 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +const mat4 mat_ones = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); +const mat4 mat_zeros = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + +// Function declarations. +mat4 function(mat4 par[2]); +bool is_all(const in mat4 par, const in float value); +bool is_all(const in mat4 array[2], const in mat4 value); +void set_all(out mat4 array[2], const in mat4 value); + +void main (void) +{ + mat4 par[2]; + mat4 ret = mat_zeros; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, mat_ones); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, mat_ones) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +mat4 function(mat4 par[2]) +{ + // Return the value of the array. + if(is_all(par, mat_ones)) + { + // Test parameter qualifier (default is "in"). + set_all(par, mat_zeros); + + return mat_ones; + } + else + return mat_zeros; +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +bool is_all(const in mat4 array[2], const in mat4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 array[2], const in mat4 value) +{ + array[0] = value; + array[1] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_array_vert.vert new file mode 100644 index 00000000000..fd810d298a5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_array_vert.vert @@ -0,0 +1,141 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +const mat4 mat_ones = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); +const mat4 mat_zeros = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + +// Function declarations. +mat4 function(mat4 par[2]); +bool is_all(const in mat4 par, const in float value); +bool is_all(const in mat4 array[2], const in mat4 value); +void set_all(out mat4 array[2], const in mat4 value); + +void main (void) +{ + mat4 par[2]; + mat4 ret = mat_zeros; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, mat_ones); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, mat_ones) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +mat4 function(mat4 par[2]) +{ + // Return the value of the array. + if(is_all(par, mat_ones)) + { + // Test parameter qualifier (default is "in"). + set_all(par, mat_zeros); + + return mat_ones; + } + else + return mat_zeros; +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +bool is_all(const in mat4 array[2], const in mat4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 array[2], const in mat4 value) +{ + array[0] = value; + array[1] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_empty_frag.frag new file mode 100644 index 00000000000..284dcaa2e57 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_empty_frag.frag @@ -0,0 +1,145 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +mat4 function(mat4 par); +bool is_all(const in mat4 par, const in float value); +void set_all(out mat4 par, const in float value); + +void main (void) +{ + mat4 par = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); + mat4 ret = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, 1.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +mat4 function(mat4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); + } + else + return mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 par, const in float value) +{ + par[0][0] = value; + par[0][1] = value; + par[0][2] = value; + par[0][3] = value; + + par[1][0] = value; + par[1][1] = value; + par[1][2] = value; + par[1][3] = value; + + par[2][0] = value; + par[2][1] = value; + par[2][2] = value; + par[2][3] = value; + + par[3][0] = value; + par[3][1] = value; + par[3][2] = value; + par[3][3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_empty_vert.vert new file mode 100644 index 00000000000..c3e32d3887f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_empty_mat4_empty_vert.vert @@ -0,0 +1,145 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +mat4 function(mat4 par); +bool is_all(const in mat4 par, const in float value); +void set_all(out mat4 par, const in float value); + +void main (void) +{ + mat4 par = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); + mat4 ret = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, 1.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +mat4 function(mat4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); + } + else + return mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 par, const in float value) +{ + par[0][0] = value; + par[0][1] = value; + par[0][2] = value; + par[0][3] = value; + + par[1][0] = value; + par[1][1] = value; + par[1][2] = value; + par[1][3] = value; + + par[2][0] = value; + par[2][1] = value; + par[2][2] = value; + par[2][3] = value; + + par[3][0] = value; + par[3][1] = value; + par[3][2] = value; + par[3][3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_array_frag.frag new file mode 100644 index 00000000000..4f17432df39 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_array_frag.frag @@ -0,0 +1,141 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +const mat4 mat_ones = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); +const mat4 mat_zeros = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + +// Function declarations. +mat4 function(in mat4 par[2]); +bool is_all(const in mat4 par, const in float value); +bool is_all(const in mat4 array[2], const in mat4 value); +void set_all(out mat4 array[2], const in mat4 value); + +void main (void) +{ + mat4 par[2]; + mat4 ret = mat_zeros; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, mat_ones); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, mat_ones) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +mat4 function(in mat4 par[2]) +{ + // Return the value of the array. + if(is_all(par, mat_ones)) + { + // Test parameter qualifier (default is "in"). + set_all(par, mat_zeros); + + return mat_ones; + } + else + return mat_zeros; +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +bool is_all(const in mat4 array[2], const in mat4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 array[2], const in mat4 value) +{ + array[0] = value; + array[1] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_array_vert.vert new file mode 100644 index 00000000000..9d28c3693b2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_array_vert.vert @@ -0,0 +1,141 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +const mat4 mat_ones = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); +const mat4 mat_zeros = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + +// Function declarations. +mat4 function(in mat4 par[2]); +bool is_all(const in mat4 par, const in float value); +bool is_all(const in mat4 array[2], const in mat4 value); +void set_all(out mat4 array[2], const in mat4 value); + +void main (void) +{ + mat4 par[2]; + mat4 ret = mat_zeros; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, mat_ones); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, mat_ones) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +mat4 function(in mat4 par[2]) +{ + // Return the value of the array. + if(is_all(par, mat_ones)) + { + // Test parameter qualifier (default is "in"). + set_all(par, mat_zeros); + + return mat_ones; + } + else + return mat_zeros; +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +bool is_all(const in mat4 array[2], const in mat4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 array[2], const in mat4 value) +{ + array[0] = value; + array[1] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_empty_frag.frag new file mode 100644 index 00000000000..fd1faebce18 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_empty_frag.frag @@ -0,0 +1,145 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +mat4 function(in mat4 par); +bool is_all(const in mat4 par, const in float value); +void set_all(out mat4 par, const in float value); + +void main (void) +{ + mat4 par = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); + mat4 ret = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, 1.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +mat4 function(in mat4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); + } + else + return mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 par, const in float value) +{ + par[0][0] = value; + par[0][1] = value; + par[0][2] = value; + par[0][3] = value; + + par[1][0] = value; + par[1][1] = value; + par[1][2] = value; + par[1][3] = value; + + par[2][0] = value; + par[2][1] = value; + par[2][2] = value; + par[2][3] = value; + + par[3][0] = value; + par[3][1] = value; + par[3][2] = value; + par[3][3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_empty_vert.vert new file mode 100644 index 00000000000..d606b7a43f4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_in_mat4_empty_vert.vert @@ -0,0 +1,145 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +mat4 function(in mat4 par); +bool is_all(const in mat4 par, const in float value); +void set_all(out mat4 par, const in float value); + +void main (void) +{ + mat4 par = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); + mat4 ret = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, 1.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +mat4 function(in mat4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); + } + else + return mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 par, const in float value) +{ + par[0][0] = value; + par[0][1] = value; + par[0][2] = value; + par[0][3] = value; + + par[1][0] = value; + par[1][1] = value; + par[1][2] = value; + par[1][3] = value; + + par[2][0] = value; + par[2][1] = value; + par[2][2] = value; + par[2][3] = value; + + par[3][0] = value; + par[3][1] = value; + par[3][2] = value; + par[3][3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_array_frag.frag new file mode 100644 index 00000000000..e0d21a4f444 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_array_frag.frag @@ -0,0 +1,141 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +const mat4 mat_ones = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); +const mat4 mat_zeros = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + +// Function declarations. +mat4 function(inout mat4 par[2]); +bool is_all(const in mat4 par, const in float value); +bool is_all(const in mat4 array[2], const in mat4 value); +void set_all(out mat4 array[2], const in mat4 value); + +void main (void) +{ + mat4 par[2]; + mat4 ret = mat_zeros; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, mat_ones); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, mat_zeros) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +mat4 function(inout mat4 par[2]) +{ + // Return the value of the array. + if(is_all(par, mat_ones)) + { + // Test parameter qualifier (default is "in"). + set_all(par, mat_zeros); + + return mat_ones; + } + else + return mat_zeros; +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +bool is_all(const in mat4 array[2], const in mat4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 array[2], const in mat4 value) +{ + array[0] = value; + array[1] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_array_vert.vert new file mode 100644 index 00000000000..981a119721e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_array_vert.vert @@ -0,0 +1,141 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +const mat4 mat_ones = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); +const mat4 mat_zeros = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + +// Function declarations. +mat4 function(inout mat4 par[2]); +bool is_all(const in mat4 par, const in float value); +bool is_all(const in mat4 array[2], const in mat4 value); +void set_all(out mat4 array[2], const in mat4 value); + +void main (void) +{ + mat4 par[2]; + mat4 ret = mat_zeros; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, mat_ones); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, mat_zeros) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +mat4 function(inout mat4 par[2]) +{ + // Return the value of the array. + if(is_all(par, mat_ones)) + { + // Test parameter qualifier (default is "in"). + set_all(par, mat_zeros); + + return mat_ones; + } + else + return mat_zeros; +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +bool is_all(const in mat4 array[2], const in mat4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 array[2], const in mat4 value) +{ + array[0] = value; + array[1] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_empty_frag.frag new file mode 100644 index 00000000000..5ad7e175521 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_empty_frag.frag @@ -0,0 +1,145 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +mat4 function(inout mat4 par); +bool is_all(const in mat4 par, const in float value); +void set_all(out mat4 par, const in float value); + +void main (void) +{ + mat4 par = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); + mat4 ret = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, 0.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +mat4 function(inout mat4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); + } + else + return mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 par, const in float value) +{ + par[0][0] = value; + par[0][1] = value; + par[0][2] = value; + par[0][3] = value; + + par[1][0] = value; + par[1][1] = value; + par[1][2] = value; + par[1][3] = value; + + par[2][0] = value; + par[2][1] = value; + par[2][2] = value; + par[2][3] = value; + + par[3][0] = value; + par[3][1] = value; + par[3][2] = value; + par[3][3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_empty_vert.vert new file mode 100644 index 00000000000..b56fe2a97c5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_inout_mat4_empty_vert.vert @@ -0,0 +1,145 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +mat4 function(inout mat4 par); +bool is_all(const in mat4 par, const in float value); +void set_all(out mat4 par, const in float value); + +void main (void) +{ + mat4 par = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); + mat4 ret = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, 0.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +mat4 function(inout mat4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); + } + else + return mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 par, const in float value) +{ + par[0][0] = value; + par[0][1] = value; + par[0][2] = value; + par[0][3] = value; + + par[1][0] = value; + par[1][1] = value; + par[1][2] = value; + par[1][3] = value; + + par[2][0] = value; + par[2][1] = value; + par[2][2] = value; + par[2][3] = value; + + par[3][0] = value; + par[3][1] = value; + par[3][2] = value; + par[3][3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_array_frag.frag new file mode 100644 index 00000000000..61b5da60481 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_array_frag.frag @@ -0,0 +1,135 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +const mat4 mat_ones = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); +const mat4 mat_zeros = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + +// Function declarations. +mat4 function(out mat4 par[2]); +bool is_all(const in mat4 par, const in float value); +bool is_all(const in mat4 array[2], const in mat4 value); +void set_all(out mat4 array[2], const in mat4 value); + +void main (void) +{ + mat4 par[2]; + mat4 ret = mat_zeros; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, mat_ones); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, mat_zeros) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +mat4 function(out mat4 par[2]) +{ + // Test parameter qualifier (default is "in"). + set_all(par, mat_zeros); + + return mat_ones; +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +bool is_all(const in mat4 array[2], const in mat4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 array[2], const in mat4 value) +{ + array[0] = value; + array[1] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_array_vert.vert new file mode 100644 index 00000000000..dcccaa317c8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_array_vert.vert @@ -0,0 +1,135 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +const mat4 mat_ones = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); +const mat4 mat_zeros = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + +// Function declarations. +mat4 function(out mat4 par[2]); +bool is_all(const in mat4 par, const in float value); +bool is_all(const in mat4 array[2], const in mat4 value); +void set_all(out mat4 array[2], const in mat4 value); + +void main (void) +{ + mat4 par[2]; + mat4 ret = mat_zeros; + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, mat_ones); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, mat_zeros) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +mat4 function(out mat4 par[2]) +{ + // Test parameter qualifier (default is "in"). + set_all(par, mat_zeros); + + return mat_ones; +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +bool is_all(const in mat4 array[2], const in mat4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 array[2], const in mat4 value) +{ + array[0] = value; + array[1] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_empty_frag.frag new file mode 100644 index 00000000000..870ee304c73 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_empty_frag.frag @@ -0,0 +1,136 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +mat4 function(out mat4 par); +bool is_all(const in mat4 par, const in float value); +void set_all(out mat4 par, const in float value); + +void main (void) +{ + mat4 par = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); + mat4 ret = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, 0.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +mat4 function(out mat4 par) +{ + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 par, const in float value) +{ + par[0][0] = value; + par[0][1] = value; + par[0][2] = value; + par[0][3] = value; + + par[1][0] = value; + par[1][1] = value; + par[1][2] = value; + par[1][3] = value; + + par[2][0] = value; + par[2][1] = value; + par[2][2] = value; + par[2][3] = value; + + par[3][0] = value; + par[3][1] = value; + par[3][2] = value; + par[3][3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_empty_vert.vert new file mode 100644 index 00000000000..12a42d34395 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/mat4_empty_out_mat4_empty_vert.vert @@ -0,0 +1,136 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +mat4 function(out mat4 par); +bool is_all(const in mat4 par, const in float value); +void set_all(out mat4 par, const in float value); + +void main (void) +{ + mat4 par = mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); + mat4 ret = mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, 0.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +mat4 function(out mat4 par) +{ + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return mat4(1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0); +} + +bool is_all(const in mat4 par, const in float value) +{ + bool ret = true; + + if(par[0][0] != value) + ret = false; + if(par[0][1] != value) + ret = false; + if(par[0][2] != value) + ret = false; + if(par[0][3] != value) + ret = false; + + if(par[1][0] != value) + ret = false; + if(par[1][1] != value) + ret = false; + if(par[1][2] != value) + ret = false; + if(par[1][3] != value) + ret = false; + + if(par[2][0] != value) + ret = false; + if(par[2][1] != value) + ret = false; + if(par[2][2] != value) + ret = false; + if(par[2][3] != value) + ret = false; + + if(par[3][0] != value) + ret = false; + if(par[3][1] != value) + ret = false; + if(par[3][2] != value) + ret = false; + if(par[3][3] != value) + ret = false; + + return ret; +} + +void set_all(out mat4 par, const in float value) +{ + par[0][0] = value; + par[0][1] = value; + par[0][2] = value; + par[0][3] = value; + + par[1][0] = value; + par[1][1] = value; + par[1][2] = value; + par[1][3] = value; + + par[2][0] = value; + par[2][1] = value; + par[2][2] = value; + par[2][3] = value; + + par[3][0] = value; + par[3][1] = value; + par[3][2] = value; + par[3][3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_float_frag.frag new file mode 100644 index 00000000000..2328826d691 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_float_frag.frag @@ -0,0 +1,59 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + + + +float qualifiers(in float a, out float b, inout float c, const in float d, float e) +{ + b = a; + c += d; + a += 1.0; + return e; +} + + + +void main (void) +{ + float a = 1.0, b = 2.0, c = 3.0, d = 4.0, e = 1.0, f = 0.0; + float q = 0.0; + float q2 = 0.0; + + f = qualifiers(a, b, c, d, e); + + if(a == 1.0) q += 1.0; + if(b == 1.0) q += 2.0; + if(c == 7.0) q += 4.0; + if(d == 4.0) q2 += 1.0; + if(e == 1.0) q2 += 2.0; + if(f == 1.0) q2 += 4.0; + + gl_FragColor = vec4(vec2(q / 7.0, q2 / 7.0), 1.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_float_vert.vert new file mode 100644 index 00000000000..b5b7095b43e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_float_vert.vert @@ -0,0 +1,59 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + + + +float qualifiers(in float a, out float b, inout float c, const in float d, float e) +{ + b = a; + c += d; + a += 1.0; + return e; +} + + + +void main (void) +{ + float a = 1.0, b = 2.0, c = 3.0, d = 4.0, e = 1.0, f = 0.0; + float q = 0.0; + float q2 = 0.0; + + f = qualifiers(a, b, c, d, e); + + if(a == 1.0) q += 1.0; + if(b == 1.0) q += 2.0; + if(c == 7.0) q += 4.0; + if(d == 4.0) q2 += 1.0; + if(e == 1.0) q2 += 2.0; + if(f == 1.0) q2 += 4.0; + + color = vec4(vec2(q / 7.0, q2 / 7.0), 1.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_struct_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_struct_frag.frag new file mode 100644 index 00000000000..f176cdb0e4b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_struct_frag.frag @@ -0,0 +1,83 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct sabcd +{ + float a; + float b; + float c; + float d; +}; + + + +sabcd qualifiers(in sabcd a, out sabcd b, inout sabcd c, const in sabcd d, +sabcd e) +{ + sabcd one = sabcd(1.0, 1.0, 1.0, 1.0); + + b = a; + + c.a += d.a; + c.b += d.b; + c.c += d.c; + c.d += d.d; + + a.a += one.a; + a.b += one.b; + a.c += one.c; + a.d += one.d; + + return e; +} + +void main (void) +{ + sabcd a = sabcd(1.0, 1.0, 1.0, 1.0); + sabcd b = sabcd(2.0, 2.0, 2.0, 2.0); + sabcd c = sabcd(3.0, 3.0, 3.0, 3.0); + sabcd d = sabcd(4.0, 4.0, 4.0, 4.0); + sabcd e = sabcd(1.0, 1.0, 1.0, 1.0); + sabcd f = sabcd(0.0, 0.0, 0.0, 0.0); + sabcd one = sabcd(1.0, 1.0, 1.0, 1.0); + sabcd four = sabcd(4.0, 4.0, 4.0, 4.0); + sabcd seven = sabcd(7.0, 7.0, 7.0, 7.0); + float q = 0.0; + float q2 = 0.0; + + f = qualifiers(a, b, c, d, e); + + if(a == one) q += 1.0; + if(b == one) q += 2.0; + if(c == seven) q += 4.0; + if(d == four) q2 += 1.0; + if(e == one) q2 += 2.0; + if(f == one) q2 += 4.0; + + gl_FragColor = vec4(vec2(q / 7.0, q2 / 7.0), 1.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_struct_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_struct_vert.vert new file mode 100644 index 00000000000..8d0b205be5b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/qualifiers_struct_vert.vert @@ -0,0 +1,87 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + + + +struct sabcd +{ + float a; + float b; + float c; + float d; +}; + + + +sabcd qualifiers(in sabcd a, out sabcd b, inout sabcd c, const in sabcd d, +sabcd e) +{ + sabcd one = sabcd(1.0, 1.0, 1.0, 1.0); + + b = a; + + c.a += d.a; + c.b += d.b; + c.c += d.c; + c.d += d.d; + + a.a += one.a; + a.b += one.b; + a.c += one.c; + a.d += one.d; + + return e; +} + +void main (void) +{ + sabcd a = sabcd(1.0, 1.0, 1.0, 1.0); + sabcd b = sabcd(2.0, 2.0, 2.0, 2.0); + sabcd c = sabcd(3.0, 3.0, 3.0, 3.0); + sabcd d = sabcd(4.0, 4.0, 4.0, 4.0); + sabcd e = sabcd(1.0, 1.0, 1.0, 1.0); + sabcd f = sabcd(0.0, 0.0, 0.0, 0.0); + sabcd one = sabcd(1.0, 1.0, 1.0, 1.0); + sabcd four = sabcd(4.0, 4.0, 4.0, 4.0); + sabcd seven = sabcd(7.0, 7.0, 7.0, 7.0); + float q = 0.0; + float q2 = 0.0; + + f = qualifiers(a, b, c, d, e); + + if(a == one) q += 1.0; + if(b == one) q += 2.0; + if(c == seven) q += 4.0; + if(d == four) q2 += 1.0; + if(e == one) q2 += 2.0; + if(f == one) q2 += 4.0; + + color = vec4(vec2(q / 7.0, q2 / 7.0), 1.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_array_frag.frag new file mode 100644 index 00000000000..1ffc79ea334 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_array_frag.frag @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +vec4 function(vec4 par[3]); +bool is_all(const in vec4 par, const in float value); +bool is_all(const in vec4 array[3], const in vec4 value); +void set_all(out vec4 array[3], const in vec4 value); + +void main (void) +{ + vec4 par[3]; + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, vec4(1.0, 1.0, 1.0, 1.0)); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, vec4(1.0, 1.0, 1.0, 1.0)) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +vec4 function(vec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, vec4(1.0, 1.0, 1.0, 1.0))) + { + // Test parameter qualifier (default is "in"). + set_all(par, vec4(0.0, 0.0, 0.0, 0.0)); + + return vec4(1.0, 1.0, 1.0, 1.0); + } + else + return vec4(0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in vec4 array[3], const in vec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 array[3], const in vec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_array_vert.vert new file mode 100644 index 00000000000..df7c8af7780 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_array_vert.vert @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +vec4 function(vec4 par[3]); +bool is_all(const in vec4 par, const in float value); +bool is_all(const in vec4 array[3], const in vec4 value); +void set_all(out vec4 array[3], const in vec4 value); + +void main (void) +{ + vec4 par[3]; + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, vec4(1.0, 1.0, 1.0, 1.0)); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, vec4(1.0, 1.0, 1.0, 1.0)) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +vec4 function(vec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, vec4(1.0, 1.0, 1.0, 1.0))) + { + // Test parameter qualifier (default is "in"). + set_all(par, vec4(0.0, 0.0, 0.0, 0.0)); + + return vec4(1.0, 1.0, 1.0, 1.0); + } + else + return vec4(0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in vec4 array[3], const in vec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 array[3], const in vec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_empty_frag.frag new file mode 100644 index 00000000000..59691446f31 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_empty_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +vec4 function(vec4 par); +bool is_all(const in vec4 par, const in float value); +void set_all(out vec4 par, const in float value); + +void main (void) +{ + vec4 par = vec4(1.0, 1.0, 1.0, 1.0); + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, 1.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +vec4 function(vec4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return vec4(1.0, 1.0, 1.0, 1.0); + } + else + return vec4(0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 par, const in float value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_empty_vert.vert new file mode 100644 index 00000000000..f6ca32e1019 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_empty_vec4_empty_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +vec4 function(vec4 par); +bool is_all(const in vec4 par, const in float value); +void set_all(out vec4 par, const in float value); + +void main (void) +{ + vec4 par = vec4(1.0, 1.0, 1.0, 1.0); + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, 1.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +vec4 function(vec4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return vec4(1.0, 1.0, 1.0, 1.0); + } + else + return vec4(0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 par, const in float value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_array_frag.frag new file mode 100644 index 00000000000..9120bb3812f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_array_frag.frag @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +vec4 function(in vec4 par[3]); +bool is_all(const in vec4 par, const in float value); +bool is_all(const in vec4 array[3], const in vec4 value); +void set_all(out vec4 array[3], const in vec4 value); + +void main (void) +{ + vec4 par[3]; + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, vec4(1.0, 1.0, 1.0, 1.0)); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, vec4(1.0, 1.0, 1.0, 1.0)) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +vec4 function(in vec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, vec4(1.0, 1.0, 1.0, 1.0))) + { + // Test parameter qualifier (default is "in"). + set_all(par, vec4(0.0, 0.0, 0.0, 0.0)); + + return vec4(1.0, 1.0, 1.0, 1.0); + } + else + return vec4(0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in vec4 array[3], const in vec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 array[3], const in vec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_array_vert.vert new file mode 100644 index 00000000000..4805d42fd51 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_array_vert.vert @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +vec4 function(in vec4 par[3]); +bool is_all(const in vec4 par, const in float value); +bool is_all(const in vec4 array[3], const in vec4 value); +void set_all(out vec4 array[3], const in vec4 value); + +void main (void) +{ + vec4 par[3]; + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, vec4(1.0, 1.0, 1.0, 1.0)); + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, vec4(1.0, 1.0, 1.0, 1.0)) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +vec4 function(in vec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, vec4(1.0, 1.0, 1.0, 1.0))) + { + // Test parameter qualifier (default is "in"). + set_all(par, vec4(0.0, 0.0, 0.0, 0.0)); + + return vec4(1.0, 1.0, 1.0, 1.0); + } + else + return vec4(0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in vec4 array[3], const in vec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 array[3], const in vec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_empty_frag.frag new file mode 100644 index 00000000000..bbe63fa2874 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_empty_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +vec4 function(in vec4 par); +bool is_all(const in vec4 par, const in float value); +void set_all(out vec4 par, const in float value); + +void main (void) +{ + vec4 par = vec4(1.0, 1.0, 1.0, 1.0); + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, 1.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +vec4 function(in vec4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return vec4(1.0, 1.0, 1.0, 1.0); + } + else + return vec4(0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 par, const in float value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_empty_vert.vert new file mode 100644 index 00000000000..c6ab4b4e519 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_in_vec4_empty_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +vec4 function(in vec4 par); +bool is_all(const in vec4 par, const in float value); +void set_all(out vec4 par, const in float value); + +void main (void) +{ + vec4 par = vec4(1.0, 1.0, 1.0, 1.0); + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should remain unchanged by the function and the function should return 1.0. + if(is_all(par, 1.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +vec4 function(in vec4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return vec4(1.0, 1.0, 1.0, 1.0); + } + else + return vec4(0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 par, const in float value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_array_frag.frag new file mode 100644 index 00000000000..3aafe12675a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_array_frag.frag @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +vec4 function(inout vec4 par[3]); +bool is_all(const in vec4 par, const in float value); +bool is_all(const in vec4 array[3], const in vec4 value); +void set_all(out vec4 array[3], const in vec4 value); + +void main (void) +{ + vec4 par[3]; + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, vec4(1.0, 1.0, 1.0, 1.0)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, vec4(0.0, 0.0, 0.0, 0.0)) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +vec4 function(inout vec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, vec4(1.0, 1.0, 1.0, 1.0))) + { + // Test parameter qualifier (default is "in"). + set_all(par, vec4(0.0, 0.0, 0.0, 0.0)); + + return vec4(1.0, 1.0, 1.0, 1.0); + } + else + return vec4(0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in vec4 array[3], const in vec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 array[3], const in vec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_array_vert.vert new file mode 100644 index 00000000000..1c0d0451144 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_array_vert.vert @@ -0,0 +1,108 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +vec4 function(inout vec4 par[3]); +bool is_all(const in vec4 par, const in float value); +bool is_all(const in vec4 array[3], const in vec4 value); +void set_all(out vec4 array[3], const in vec4 value); + +void main (void) +{ + vec4 par[3]; + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, vec4(1.0, 1.0, 1.0, 1.0)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, vec4(0.0, 0.0, 0.0, 0.0)) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +vec4 function(inout vec4 par[3]) +{ + // Return the value of the array. + if(is_all(par, vec4(1.0, 1.0, 1.0, 1.0))) + { + // Test parameter qualifier (default is "in"). + set_all(par, vec4(0.0, 0.0, 0.0, 0.0)); + + return vec4(1.0, 1.0, 1.0, 1.0); + } + else + return vec4(0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in vec4 array[3], const in vec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 array[3], const in vec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_bigarray_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_bigarray_frag.frag new file mode 100644 index 00000000000..3f28f2822c3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_bigarray_frag.frag @@ -0,0 +1,129 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +vec4 function(inout vec4 par[10]); +bool is_all(const in vec4 par, const in float value); +bool is_all(const in vec4 array[10], const in vec4 value); +void set_all(out vec4 array[10], const in vec4 value); + +void main (void) +{ + vec4 par[10]; + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, vec4(1.0, 1.0, 1.0, 1.0)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, vec4(0.0, 0.0, 0.0, 0.0)) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +vec4 function(inout vec4 par[10]) +{ + // Return the value of the array. + if(is_all(par, vec4(1.0, 1.0, 1.0, 1.0))) + { + // Test parameter qualifier (default is "in"). + set_all(par, vec4(0.0, 0.0, 0.0, 0.0)); + + return vec4(1.0, 1.0, 1.0, 1.0); + } + else + return vec4(0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in vec4 array[10], const in vec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + if(array[3] != value) + ret = false; + if(array[4] != value) + ret = false; + if(array[5] != value) + ret = false; + if(array[6] != value) + ret = false; + if(array[7] != value) + ret = false; + if(array[8] != value) + ret = false; + if(array[9] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 array[10], const in vec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; + array[3] = value; + array[4] = value; + array[5] = value; + array[6] = value; + array[7] = value; + array[8] = value; + array[9] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_bigarray_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_bigarray_vert.vert new file mode 100644 index 00000000000..7a3ba4e2e69 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_bigarray_vert.vert @@ -0,0 +1,129 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +vec4 function(inout vec4 par[10]); +bool is_all(const in vec4 par, const in float value); +bool is_all(const in vec4 array[10], const in vec4 value); +void set_all(out vec4 array[10], const in vec4 value); + +void main (void) +{ + vec4 par[10]; + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, vec4(1.0, 1.0, 1.0, 1.0)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, vec4(0.0, 0.0, 0.0, 0.0)) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +vec4 function(inout vec4 par[10]) +{ + // Return the value of the array. + if(is_all(par, vec4(1.0, 1.0, 1.0, 1.0))) + { + // Test parameter qualifier (default is "in"). + set_all(par, vec4(0.0, 0.0, 0.0, 0.0)); + + return vec4(1.0, 1.0, 1.0, 1.0); + } + else + return vec4(0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in vec4 array[10], const in vec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + if(array[3] != value) + ret = false; + if(array[4] != value) + ret = false; + if(array[5] != value) + ret = false; + if(array[6] != value) + ret = false; + if(array[7] != value) + ret = false; + if(array[8] != value) + ret = false; + if(array[9] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 array[10], const in vec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; + array[3] = value; + array[4] = value; + array[5] = value; + array[6] = value; + array[7] = value; + array[8] = value; + array[9] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_empty_frag.frag new file mode 100644 index 00000000000..04a76748b73 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_empty_frag.frag @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +vec4 function(inout vec4 par); +bool is_all(const in vec4 par, const in float value); +void set_all(out vec4 par, const in float value); + +void main (void) +{ + vec4 par = vec4(1.0, 1.0, 1.0, 1.0); + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, 0.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +vec4 function(inout vec4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return vec4(1.0, 1.0, 1.0, 1.0); + } + else + return vec4(0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 par, const in float value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_empty_vert.vert new file mode 100644 index 00000000000..f35fbdd856d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_inout_vec4_empty_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +vec4 function(inout vec4 par); +bool is_all(const in vec4 par, const in float value); +void set_all(out vec4 par, const in float value); + +void main (void) +{ + vec4 par = vec4(1.0, 1.0, 1.0, 1.0); + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, 0.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +vec4 function(inout vec4 par) +{ + // Return the value of the parameter. + if(is_all(par, 1.0)) + { + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return vec4(1.0, 1.0, 1.0, 1.0); + } + else + return vec4(0.0, 0.0, 0.0, 0.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 par, const in float value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_array_frag.frag new file mode 100644 index 00000000000..c8ebf2cf6be --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_array_frag.frag @@ -0,0 +1,102 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declarations. +vec4 function(out vec4 par[3]); +bool is_all(const in vec4 par, const in float value); +bool is_all(const in vec4 array[3], const in vec4 value); +void set_all(out vec4 array[3], const in vec4 value); + +void main (void) +{ + vec4 par[3]; + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, vec4(1.0, 1.0, 1.0, 1.0)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, vec4(0.0, 0.0, 0.0, 0.0)) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definitions. +vec4 function(out vec4 par[3]) +{ + // Test parameter qualifier (default is "in"). + set_all(par, vec4(0.0, 0.0, 0.0, 0.0)); + + return vec4(1.0, 1.0, 1.0, 1.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in vec4 array[3], const in vec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 array[3], const in vec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_array_vert.vert new file mode 100644 index 00000000000..df37032afb8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_array_vert.vert @@ -0,0 +1,102 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declarations. +vec4 function(out vec4 par[3]); +bool is_all(const in vec4 par, const in float value); +bool is_all(const in vec4 array[3], const in vec4 value); +void set_all(out vec4 array[3], const in vec4 value); + +void main (void) +{ + vec4 par[3]; + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + // Initialize the entire array to 1.0. + set_all(par, vec4(1.0, 1.0, 1.0, 1.0)); + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, vec4(0.0, 0.0, 0.0, 0.0)) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definitions. +vec4 function(out vec4 par[3]) +{ + // Test parameter qualifier (default is "in"). + set_all(par, vec4(0.0, 0.0, 0.0, 0.0)); + + return vec4(1.0, 1.0, 1.0, 1.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +bool is_all(const in vec4 array[3], const in vec4 value) +{ + bool ret = true; + + if(array[0] != value) + ret = false; + if(array[1] != value) + ret = false; + if(array[2] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 array[3], const in vec4 value) +{ + array[0] = value; + array[1] = value; + array[2] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_empty_frag.frag new file mode 100644 index 00000000000..403d8756505 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_empty_frag.frag @@ -0,0 +1,85 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +// Function declaration. +vec4 function(out vec4 par); +bool is_all(const in vec4 par, const in float value); +void set_all(out vec4 par, const in float value); + +void main (void) +{ + vec4 par = vec4(1.0, 1.0, 1.0, 1.0); + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, 0.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +vec4 function(out vec4 par) +{ + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return vec4(1.0, 1.0, 1.0, 1.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 par, const in float value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_empty_vert.vert new file mode 100644 index 00000000000..070945644da --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/vec4_empty_out_vec4_empty_vert.vert @@ -0,0 +1,85 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +// Function declaration. +vec4 function(out vec4 par); +bool is_all(const in vec4 par, const in float value); +void set_all(out vec4 par, const in float value); + +void main (void) +{ + vec4 par = vec4(1.0, 1.0, 1.0, 1.0); + vec4 ret = vec4(0.0, 0.0, 0.0, 0.0); + + float gray = 0.0; + + ret = function(par); + + // The parameter should be changed by the function and the function should return 1.0. + if(is_all(par, 0.0) && is_all(ret, 1.0)) + { + gray = 1.0; + } + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +vec4 function(out vec4 par) +{ + // Test parameter qualifier (default is "in"). + set_all(par, 0.0); + + return vec4(1.0, 1.0, 1.0, 1.0); +} + +bool is_all(const in vec4 par, const in float value) +{ + bool ret = true; + + if(par[0] != value) + ret = false; + if(par[1] != value) + ret = false; + if(par[2] != value) + ret = false; + if(par[3] != value) + ret = false; + + return ret; +} + +void set_all(out vec4 par, const in float value) +{ + par[0] = value; + par[1] = value; + par[2] = value; + par[3] = value; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/void_empty_empty_void_empty_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/void_empty_empty_void_empty_frag.frag new file mode 100644 index 00000000000..c926874adbd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/void_empty_empty_void_empty_frag.frag @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +float gray = 0.0; + +// Function declaration. +void function(void); + +void main (void) +{ + gray = 0.0; + + function(); + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + +// Function definition. +void function(void) +{ + gray = 1.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/void_empty_empty_void_empty_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/void_empty_empty_void_empty_vert.vert new file mode 100644 index 00000000000..ebb2711cee2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/functions/void_empty_empty_void_empty_vert.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +float gray = 0.0; + +// Function declaration. +void function(void); + +void main (void) +{ + gray = 0.0; + + function(); + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + +// Function definition. +void function(void) +{ + gray = 1.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_001_to_003.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_001_to_003.html new file mode 100644 index 00000000000..674ce26dc77 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_001_to_003.html @@ -0,0 +1,112 @@ + + + + + +WebGL GLSL conformance test: gl_FragCoord_001_to_003.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_w_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_w_frag.frag new file mode 100644 index 00000000000..3efa089c7a5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_w_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main(void) +{ + gl_FragColor = vec4(vec3(gl_FragCoord.w), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_xy_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_xy_frag.frag new file mode 100644 index 00000000000..722b9a70ead --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_xy_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float viewportwidth; +uniform float viewportheight; + +void main(void) +{ + // The image width is 500 so scale the position to 0...1 for color + gl_FragColor = vec4(gl_FragCoord.x /viewportwidth , gl_FragCoord.y/viewportheight, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_xy_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_xy_frag_ref.frag new file mode 100644 index 00000000000..29a66e1b0b6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_xy_frag_ref.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main(void) +{ + // The image width is 500x500 and the rectangle is 434x434 + // The green component corresponds to x (0...1 left to right) and the + // blue component corresponds to y (0...1 bottom to top) + gl_FragColor = vec4((434.0 / 500.0) * (color.gb - 0.5) + 0.5, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_z_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_z_frag.frag new file mode 100644 index 00000000000..a18d52494fc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_z_frag.frag @@ -0,0 +1,32 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main(void) +{ + gl_FragColor = vec4(vec3(gl_FragCoord.z), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_z_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_z_frag_ref.frag new file mode 100644 index 00000000000..7be3a42faad --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_z_frag_ref.frag @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 position; + +void main(void) +{ + // Normalized device coordinates + float z = position.z / position.w; + float f = gl_DepthRange.far; + float n = gl_DepthRange.near; + + // Window coordinates + z = ((f - n) / 2.0) * z + (f + n) / 2.0; + + gl_FragColor = vec4(vec3(z), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_z_frag_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_z_frag_ref.vert new file mode 100644 index 00000000000..2779f89e2c8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_z_frag_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 position; + +void main(void) +{ + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + + // Vertex's clip coordinates + position = gl_Position; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/input.run.txt new file mode 100644 index 00000000000..588cde7bff1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FragCoord/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +gl_FragCoord_001_to_003.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FrontFacing/gl_FrontFacing_001_to_001.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FrontFacing/gl_FrontFacing_001_to_001.html new file mode 100644 index 00000000000..ace8b2aa6a0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FrontFacing/gl_FrontFacing_001_to_001.html @@ -0,0 +1,66 @@ + + + + + +WebGL GLSL conformance test: gl_FrontFacing_001_to_001.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FrontFacing/gl_FrontFacing_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FrontFacing/gl_FrontFacing_frag.frag new file mode 100644 index 00000000000..0c8d629ba2e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FrontFacing/gl_FrontFacing_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +void main(void) +{ + if(gl_FrontFacing) + gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); + else + gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FrontFacing/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FrontFacing/input.run.txt new file mode 100644 index 00000000000..6244419195c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/gl_FrontFacing/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +gl_FrontFacing_001_to_001.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_001_to_008.html new file mode 100644 index 00000000000..7fee4bb8e35 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_001_to_008.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: greaterThan_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_frag.frag new file mode 100644 index 00000000000..1a1f2f3b77f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(greaterThan(ivec2(c), ivec2(0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_frag_ref.frag new file mode 100644 index 00000000000..055d2c28e74 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_frag_ref.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec2 gt(in ivec2 a, in ivec2 b) +{ + bvec2 result; + if(a[0] > b[0]) result[0] = true; + else result[0] = false; + if(a[1] > b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(gt(ivec2(c), ivec2(0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_vert.vert new file mode 100644 index 00000000000..f883a87a25f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(greaterThan(ivec2(c), ivec2(0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_vert_ref.vert new file mode 100644 index 00000000000..5c62957a35a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec2_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 gt(in ivec2 a, in ivec2 b) +{ + bvec2 result; + if(a[0] > b[0]) result[0] = true; + else result[0] = false; + if(a[1] > b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(gt(ivec2(c), ivec2(0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_frag.frag new file mode 100644 index 00000000000..438a85f7d7c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(greaterThan(ivec3(c), ivec3(0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_frag_ref.frag new file mode 100644 index 00000000000..9c673688a6c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_frag_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 gt(in ivec3 a, in ivec3 b) +{ + bvec3 result; + if(a[0] > b[0]) result[0] = true; + else result[0] = false; + if(a[1] > b[1]) result[1] = true; + else result[1] = false; + if(a[2] > b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(gt(ivec3(c), ivec3(0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_vert.vert new file mode 100644 index 00000000000..6f7adb3febe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(greaterThan(ivec3(c), ivec3(0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_vert_ref.vert new file mode 100644 index 00000000000..7499d53ffa0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_ivec3_vert_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 gt(in ivec3 a, in ivec3 b) +{ + bvec3 result; + if(a[0] > b[0]) result[0] = true; + else result[0] = false; + if(a[1] > b[1]) result[1] = true; + else result[1] = false; + if(a[2] > b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(gt(ivec3(c), ivec3(0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_frag.frag new file mode 100644 index 00000000000..b5f5e8e9122 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(greaterThan(c, vec2(0.0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_frag_ref.frag new file mode 100644 index 00000000000..9265f2b4d07 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_frag_ref.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +bvec2 gt(in vec2 a, in vec2 b) +{ + bvec2 result; + if(a[0] > b[0]) result[0] = true; + else result[0] = false; + if(a[1] > b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(gt(c, vec2(0.0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_vert.vert new file mode 100644 index 00000000000..3354f3a37ea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(greaterThan(c, vec2(0.0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_vert_ref.vert new file mode 100644 index 00000000000..02bcfe21389 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec2_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 gt(in vec2 a, in vec2 b) +{ + bvec2 result; + if(a[0] > b[0]) result[0] = true; + else result[0] = false; + if(a[1] > b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(gt(c, vec2(0.0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_frag.frag new file mode 100644 index 00000000000..9be0df0e462 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(greaterThan(c, vec3(0.0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_frag_ref.frag new file mode 100644 index 00000000000..2f57d508f62 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_frag_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 gt(in vec3 a, in vec3 b) +{ + bvec3 result; + if(a[0] > b[0]) result[0] = true; + else result[0] = false; + if(a[1] > b[1]) result[1] = true; + else result[1] = false; + if(a[2] > b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(gt(c, vec3(0.0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_vert.vert new file mode 100644 index 00000000000..64740d8046a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(greaterThan(c, vec3(0.0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_vert_ref.vert new file mode 100644 index 00000000000..9cb21174257 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/greaterThan_vec3_vert_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 gt(in vec3 a, in vec3 b) +{ + bvec3 result; + if(a[0] > b[0]) result[0] = true; + else result[0] = false; + if(a[1] > b[1]) result[1] = true; + else result[1] = false; + if(a[2] > b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(gt(c, vec3(0.0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/input.run.txt new file mode 100644 index 00000000000..9d2acae74dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThan/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +greaterThan_001_to_008.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_001_to_008.html new file mode 100644 index 00000000000..2d854b04380 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_001_to_008.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: greaterThanEqual_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_frag.frag new file mode 100644 index 00000000000..b58ffc8c1ee --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(greaterThanEqual(ivec2(c), ivec2(0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_frag_ref.frag new file mode 100644 index 00000000000..1981e884885 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_frag_ref.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec2 gte(in ivec2 a, in ivec2 b) +{ + bvec2 result; + if(a[0] >= b[0]) result[0] = true; + else result[0] = false; + if(a[1] >= b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(gte(ivec2(c), ivec2(0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_vert.vert new file mode 100644 index 00000000000..a3d858e9ada --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(greaterThanEqual(ivec2(c), ivec2(0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_vert_ref.vert new file mode 100644 index 00000000000..bc91611ee07 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec2_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 gte(in ivec2 a, in ivec2 b) +{ + bvec2 result; + if(a[0] >= b[0]) result[0] = true; + else result[0] = false; + if(a[1] >= b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(gte(ivec2(c), ivec2(0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_frag.frag new file mode 100644 index 00000000000..d4f61eb6935 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(greaterThanEqual(ivec3(c), ivec3(0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_frag_ref.frag new file mode 100644 index 00000000000..673621f85fd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_frag_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 gte(in ivec3 a, in ivec3 b) +{ + bvec3 result; + if(a[0] >= b[0]) result[0] = true; + else result[0] = false; + if(a[1] >= b[1]) result[1] = true; + else result[1] = false; + if(a[2] >= b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(gte(ivec3(c), ivec3(0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_vert.vert new file mode 100644 index 00000000000..7047c75d1ce --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(greaterThanEqual(ivec3(c), ivec3(0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_vert_ref.vert new file mode 100644 index 00000000000..b98de4a4c8f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_ivec3_vert_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 gte(in ivec3 a, in ivec3 b) +{ + bvec3 result; + if(a[0] >= b[0]) result[0] = true; + else result[0] = false; + if(a[1] >= b[1]) result[1] = true; + else result[1] = false; + if(a[2] >= b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(gte(ivec3(c), ivec3(0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_frag.frag new file mode 100644 index 00000000000..33bb5d47e0b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(greaterThanEqual(c, vec2(0.0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_frag_ref.frag new file mode 100644 index 00000000000..43c2c8574df --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_frag_ref.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +bvec2 gte(in vec2 a, in vec2 b) +{ + bvec2 result; + if(a[0] >= b[0]) result[0] = true; + else result[0] = false; + if(a[1] >= b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(gte(c, vec2(0.0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_vert.vert new file mode 100644 index 00000000000..877bab3ad15 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(greaterThanEqual(c, vec2(0.0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_vert_ref.vert new file mode 100644 index 00000000000..0c5f0b7327d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec2_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 gte(in vec2 a, in vec2 b) +{ + bvec2 result; + if(a[0] >= b[0]) result[0] = true; + else result[0] = false; + if(a[1] >= b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(gte(c, vec2(0.0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_frag.frag new file mode 100644 index 00000000000..324f6a8f762 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(greaterThanEqual(c, vec3(0.0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_frag_ref.frag new file mode 100644 index 00000000000..d6f22f6bc25 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_frag_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 gte(in vec3 a, in vec3 b) +{ + bvec3 result; + if(a[0] >= b[0]) result[0] = true; + else result[0] = false; + if(a[1] >= b[1]) result[1] = true; + else result[1] = false; + if(a[2] >= b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(gte(c, vec3(0.0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_vert.vert new file mode 100644 index 00000000000..238e9395890 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(greaterThanEqual(c, vec3(0.0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_vert_ref.vert new file mode 100644 index 00000000000..d120e79a158 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_vec3_vert_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 gte(in vec3 a, in vec3 b) +{ + bvec3 result; + if(a[0] >= b[0]) result[0] = true; + else result[0] = false; + if(a[1] >= b[1]) result[1] = true; + else result[1] = false; + if(a[2] >= b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(gte(c, vec3(0.0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/input.run.txt new file mode 100644 index 00000000000..45628830136 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/greaterThanEqual/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +greaterThanEqual_001_to_008.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/input.run.txt new file mode 100644 index 00000000000..6eb579d476f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +inversesqrt_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_001_to_006.html new file mode 100644 index 00000000000..c48b075aeb9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: inversesqrt_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_frag_xvary.frag new file mode 100644 index 00000000000..f0e12695424 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = (color.r * 99.0) + 1.0; + gl_FragColor = vec4(inversesqrt(c), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..440b90b6ea8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_frag_xvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = (color.r * 99.0) + 1.0; + gl_FragColor = vec4(1.0 / sqrt(c), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_vert_xvary.vert new file mode 100644 index 00000000000..07f52dfcbf6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = (gtf_Color.r * 99.0) + 1.0; + color = vec4(inversesqrt(c), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..293646aab5b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_float_vert_xvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = (gtf_Color.r * 99.0) + 1.0; + color = vec4(1.0 / sqrt(c), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_frag_xvary.frag new file mode 100644 index 00000000000..b7bfff05259 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = (color.rg * 99.0) + 1.0; + gl_FragColor = vec4(inversesqrt(c), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..073da26ec36 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_frag_xvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = (color.rg * 99.0) + 1.0; + gl_FragColor = vec4(1.0 / sqrt(c), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_vert_xvary.vert new file mode 100644 index 00000000000..cab16ca1803 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = (gtf_Color.rg * 99.0) + 1.0; + color = vec4(inversesqrt(c), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..5fa9496931e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec2_vert_xvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = (gtf_Color.rg * 99.0) + 1.0; + color = vec4(1.0 / sqrt(c), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_frag_xvary.frag new file mode 100644 index 00000000000..935fd3ef744 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = (color.rgb * 99.0) + 1.0; + gl_FragColor = vec4(inversesqrt(c), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..60825321149 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_frag_xvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = (color.rgb * 99.0) + 1.0; + gl_FragColor = vec4(1.0 / sqrt(c), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_vert_xvary.vert new file mode 100644 index 00000000000..2cdd7593792 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = (gtf_Color.rgb * 99.0) + 1.0; + color = vec4(inversesqrt(c), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..f69629c7955 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/inversesqrt/inversesqrt_vec3_vert_xvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = (gtf_Color.rgb * 99.0) + 1.0; + color = vec4(1.0 / sqrt(c), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/input.run.txt new file mode 100644 index 00000000000..9a3147ec3cb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +length_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_001_to_006.html new file mode 100644 index 00000000000..d5848dce1f3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: length_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_frag_xvary.frag new file mode 100644 index 00000000000..a82c9d35b09 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_frag_xvary.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(length(color.r)), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..1d8b5594dab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_frag_xvary_ref.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(color.r), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_vert_xvary.vert new file mode 100644 index 00000000000..97fc87505db --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_vert_xvary.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(length(gtf_Color.r)), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..3d37b84fddd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_float_vert_xvary_ref.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(gtf_Color.r), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_frag_xvary.frag new file mode 100644 index 00000000000..2d824ff60d8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_frag_xvary.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(length(color.rg) / 2.0), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..f322b4d5fc3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_frag_xvary_ref.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(sqrt(color.r*color.r + color.g*color.g) / 2.0), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_vert_xvary.vert new file mode 100644 index 00000000000..5becfad2122 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_vert_xvary.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(length(gtf_Color.rg) / 2.0), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..37f22c220b6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec2_vert_xvary_ref.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(sqrt(gtf_Color.r*gtf_Color.r + gtf_Color.g*gtf_Color.g) / 2.0), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_frag_xvary.frag new file mode 100644 index 00000000000..7423f4c4c49 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_frag_xvary.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(length(color.rgb) / 3.0), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..f817d2b0fd1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_frag_xvary_ref.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(vec3(sqrt(color.r*color.r + color.g*color.g + color.b*color.b) / 3.0), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_vert_xvary.vert new file mode 100644 index 00000000000..2dc32aceb9f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_vert_xvary.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(length(gtf_Color.rgb) / 3.0), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..a4c07f034f5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/length/length_vec3_vert_xvary_ref.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(vec3(sqrt(gtf_Color.r*gtf_Color.r + gtf_Color.g*gtf_Color.g + gtf_Color.b*gtf_Color.b) / 3.0), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/input.run.txt new file mode 100644 index 00000000000..f49c916d979 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +lessThan_001_to_008.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_001_to_008.html new file mode 100644 index 00000000000..0c4b5d7c87c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_001_to_008.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: lessThan_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_frag.frag new file mode 100644 index 00000000000..fa927f84441 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lessThan(ivec2(c), ivec2(0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_frag_ref.frag new file mode 100644 index 00000000000..a7919ceb1bc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_frag_ref.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec2 lt(in ivec2 a, in ivec2 b) +{ + bvec2 result; + if(a[0] < b[0]) result[0] = true; + else result[0] = false; + if(a[1] < b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lt(ivec2(c), ivec2(0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_vert.vert new file mode 100644 index 00000000000..3b68c5ff9e7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lessThan(ivec2(c), ivec2(0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_vert_ref.vert new file mode 100644 index 00000000000..34d5aa12349 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec2_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 lt(in ivec2 a, in ivec2 b) +{ + bvec2 result; + if(a[0] < b[0]) result[0] = true; + else result[0] = false; + if(a[1] < b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lt(ivec2(c), ivec2(0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_frag.frag new file mode 100644 index 00000000000..c6c65d17fd0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lessThan(ivec3(c), ivec3(0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_frag_ref.frag new file mode 100644 index 00000000000..ca4af5661f4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_frag_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 lt(in ivec3 a, in ivec3 b) +{ + bvec3 result; + if(a[0] < b[0]) result[0] = true; + else result[0] = false; + if(a[1] < b[1]) result[1] = true; + else result[1] = false; + if(a[2] < b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lt(ivec3(c), ivec3(0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_vert.vert new file mode 100644 index 00000000000..1368d20563c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lessThan(ivec3(c), ivec3(0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_vert_ref.vert new file mode 100644 index 00000000000..427e564bcce --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_ivec3_vert_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 lt(in ivec3 a, in ivec3 b) +{ + bvec3 result; + if(a[0] < b[0]) result[0] = true; + else result[0] = false; + if(a[1] < b[1]) result[1] = true; + else result[1] = false; + if(a[2] < b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lt(ivec3(c), ivec3(0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_frag.frag new file mode 100644 index 00000000000..fb8235bd322 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lessThan(c, vec2(0.0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_frag_ref.frag new file mode 100644 index 00000000000..239c3c03628 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_frag_ref.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +bvec2 lt(in vec2 a, in vec2 b) +{ + bvec2 result; + if(a[0] < b[0]) result[0] = true; + else result[0] = false; + if(a[1] < b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lt(c, vec2(0.0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_vert.vert new file mode 100644 index 00000000000..1c7a299b27e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lessThan(c, vec2(0.0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_vert_ref.vert new file mode 100644 index 00000000000..e2a09eb1b60 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec2_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 lt(in vec2 a, in vec2 b) +{ + bvec2 result; + if(a[0] < b[0]) result[0] = true; + else result[0] = false; + if(a[1] < b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lt(c, vec2(0.0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_frag.frag new file mode 100644 index 00000000000..380c28d3c53 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lessThan(c, vec3(0.0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_frag_ref.frag new file mode 100644 index 00000000000..e2306c5d2d1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_frag_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 lt(in vec3 a, in vec3 b) +{ + bvec3 result; + if(a[0] < b[0]) result[0] = true; + else result[0] = false; + if(a[1] < b[1]) result[1] = true; + else result[1] = false; + if(a[2] < b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lt(c, vec3(0.0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_vert.vert new file mode 100644 index 00000000000..194a1953e83 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lessThan(c, vec3(0.0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_vert_ref.vert new file mode 100644 index 00000000000..9902018fc37 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThan/lessThan_vec3_vert_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 lt(in vec3 a, in vec3 b) +{ + bvec3 result; + if(a[0] < b[0]) result[0] = true; + else result[0] = false; + if(a[1] < b[1]) result[1] = true; + else result[1] = false; + if(a[2] < b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lt(c, vec3(0.0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/input.run.txt new file mode 100644 index 00000000000..656332cccac --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +lessThanEqual_001_to_008.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_001_to_008.html new file mode 100644 index 00000000000..aca9d7b94d1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_001_to_008.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: lessThanEqual_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_frag.frag new file mode 100644 index 00000000000..397a2732b72 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lessThanEqual(ivec2(c), ivec2(0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_frag_ref.frag new file mode 100644 index 00000000000..554f4ea3f5c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_frag_ref.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec2 lte(in ivec2 a, in ivec2 b) +{ + bvec2 result; + if(a[0] <= b[0]) result[0] = true; + else result[0] = false; + if(a[1] <= b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lte(ivec2(c), ivec2(0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_vert.vert new file mode 100644 index 00000000000..83a770a4825 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lessThanEqual(ivec2(c), ivec2(0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_vert_ref.vert new file mode 100644 index 00000000000..6b40030ca1a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec2_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 lte(in ivec2 a, in ivec2 b) +{ + bvec2 result; + if(a[0] <= b[0]) result[0] = true; + else result[0] = false; + if(a[1] <= b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lte(ivec2(c), ivec2(0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_frag.frag new file mode 100644 index 00000000000..6e06ffe5475 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lessThanEqual(ivec3(c), ivec3(0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_frag_ref.frag new file mode 100644 index 00000000000..29c7453b2e4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_frag_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 lte(in ivec3 a, in ivec3 b) +{ + bvec3 result; + if(a[0] <= b[0]) result[0] = true; + else result[0] = false; + if(a[1] <= b[1]) result[1] = true; + else result[1] = false; + if(a[2] <= b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lte(ivec3(c), ivec3(0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_vert.vert new file mode 100644 index 00000000000..748b3ba828d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lessThanEqual(ivec3(c), ivec3(0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_vert_ref.vert new file mode 100644 index 00000000000..89b39f51d60 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_ivec3_vert_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 lte(in ivec3 a, in ivec3 b) +{ + bvec3 result; + if(a[0] <= b[0]) result[0] = true; + else result[0] = false; + if(a[1] <= b[1]) result[1] = true; + else result[1] = false; + if(a[2] <= b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lte(ivec3(c), ivec3(0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_frag.frag new file mode 100644 index 00000000000..71d7501c1d4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lessThanEqual(c, vec2(0.0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_frag_ref.frag new file mode 100644 index 00000000000..c14f657593a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_frag_ref.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +bvec2 lte(in vec2 a, in vec2 b) +{ + bvec2 result; + if(a[0] <= b[0]) result[0] = true; + else result[0] = false; + if(a[1] <= b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lte(c, vec2(0.0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_vert.vert new file mode 100644 index 00000000000..ebc94285ff3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lessThanEqual(c, vec2(0.0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_vert_ref.vert new file mode 100644 index 00000000000..07a77b0a18f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec2_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 lte(in vec2 a, in vec2 b) +{ + bvec2 result; + if(a[0] <= b[0]) result[0] = true; + else result[0] = false; + if(a[1] <= b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(lte(c, vec2(0.0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_frag.frag new file mode 100644 index 00000000000..7351a8d0f7d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lessThanEqual(c, vec3(0.0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_frag_ref.frag new file mode 100644 index 00000000000..d33f35d0f40 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_frag_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 lte(in vec3 a, in vec3 b) +{ + bvec3 result; + if(a[0] <= b[0]) result[0] = true; + else result[0] = false; + if(a[1] <= b[1]) result[1] = true; + else result[1] = false; + if(a[2] <= b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lte(c, vec3(0.0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_vert.vert new file mode 100644 index 00000000000..4ac0e0a8276 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lessThanEqual(c, vec3(0.0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_vert_ref.vert new file mode 100644 index 00000000000..52b55abb15b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/lessThanEqual/lessThanEqual_vec3_vert_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 lte(in vec3 a, in vec3 b) +{ + bvec3 result; + if(a[0] <= b[0]) result[0] = true; + else result[0] = false; + if(a[1] <= b[1]) result[1] = true; + else result[1] = false; + if(a[2] <= b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(lte(c, vec3(0.0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/input.run.txt new file mode 100644 index 00000000000..beb1561c1be --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/input.run.txt @@ -0,0 +1,3 @@ +# this file is auto-generated. DO NOT EDIT. +log_001_to_008.html +log_009_to_012.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_001_to_008.html new file mode 100644 index 00000000000..f80f7395e06 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_001_to_008.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: log_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_009_to_012.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_009_to_012.html new file mode 100644 index 00000000000..1e362043d85 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_009_to_012.html @@ -0,0 +1,105 @@ + + + + + +WebGL GLSL conformance test: log_009_to_012.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary.frag new file mode 100644 index 00000000000..c4685cc82dd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 31.0 * color.r + 1.0; + gl_FragColor = vec4(log(c) / 3.466, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary01.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary01.frag new file mode 100644 index 00000000000..c9a26bc037b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary01.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = (color.r + 0.01) / 1.01; + gl_FragColor = vec4(log(c) / -4.61, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary01_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary01_ref.frag new file mode 100644 index 00000000000..c255e618b92 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary01_ref.frag @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float x = (color.r + 0.01) / 1.01; + float y = 0.0; + float z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + // Note: z will always be negative between 0.01 and 1.0 and + // so will y since it is raised to an odd power, and the shader spec + // does not support pow(-x, y) where y is not a compile time constant + z = abs((x - 1.0) / (x + 1.0)); + float p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= -2.0; + + gl_FragColor = vec4(y / -4.61, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..472235d605e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_frag_xvary_ref.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float x = 31.0 * color.r + 1.0; + float y = 0.0; + float z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + z = (x - 1.0) / (x + 1.0); + float p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= 2.0; + + gl_FragColor = vec4(y / 3.466, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary.vert new file mode 100644 index 00000000000..b6361d1d663 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 31.0 * gtf_Color.r + 1.0; + color = vec4(log(c) / 3.466, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary01.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary01.vert new file mode 100644 index 00000000000..258894e5a6a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary01.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = (gtf_Color.r + 0.01) / 1.01; + color = vec4(log(c) / -4.61, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary01_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary01_ref.vert new file mode 100644 index 00000000000..fb19501b226 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary01_ref.vert @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float x = (gtf_Color.r + 0.01) / 1.01; + float y = 0.0; + float z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + // Note: z will always be negative between 0.01 and 1.0 and + // so will y since it is raised to an odd power, and the shader spec + // does not support pow(-x, y) where y is not a compile time constant + z = abs((x - 1.0) / (x + 1.0)); + float p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= -2.0; + + color = vec4(y / -4.61, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..4df24e358f8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_float_vert_xvary_ref.vert @@ -0,0 +1,51 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float x = 31.0 * gtf_Color.r + 1.0; + float y = 0.0; + float z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + z = (x - 1.0) / (x + 1.0); + float p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= 2.0; + + color = vec4(y / 3.466, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary.frag new file mode 100644 index 00000000000..9ecfb257690 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 31.0 * color.rg + 1.0; + gl_FragColor = vec4(log(c) / 3.466, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary01.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary01.frag new file mode 100644 index 00000000000..9b36e90c380 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary01.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = (color.rg + 0.01) / 1.01; + gl_FragColor = vec4(log(c) / -4.61, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary01_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary01_ref.frag new file mode 100644 index 00000000000..5496f9db10c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary01_ref.frag @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 x = (color.rg + 0.01) / 1.01; + vec2 y = vec2(0.0); + vec2 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + // Note: z will always be negative between 0.01 and 1.0 and + // so will y since it is raised to an odd power, and the shader spec + // does not support pow(-x, y) where y is not a compile time constant + z = abs((x - 1.0) / (x + 1.0)); + vec2 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= -2.0; + + gl_FragColor = vec4(y / -4.61, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..01d706c9dfe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_frag_xvary_ref.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 x = 31.0 * color.rg + 1.0; + vec2 y = vec2(0.0); + vec2 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + z = (x - 1.0) / (x + 1.0); + vec2 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= 2.0; + + gl_FragColor = vec4(y / 3.466, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary.vert new file mode 100644 index 00000000000..95dbc058b43 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 31.0 * gtf_Color.rg + 1.0; + color = vec4(log(c) / 3.466, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary01.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary01.vert new file mode 100644 index 00000000000..9bd23ab760e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary01.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = (gtf_Color.rg + 0.01) / 1.01; + color = vec4(log(c) / -4.61, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary01_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary01_ref.vert new file mode 100644 index 00000000000..3a23b5aa61e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary01_ref.vert @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 x = (gtf_Color.rg + 0.01) / 1.01; + vec2 y = vec2(0.0); + vec2 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + // Note: z will always be negative between 0.01 and 1.0 and + // so will y since it is raised to an odd power, and the shader spec + // does not support pow(-x, y) where y is not a compile time constant + z = abs((x - 1.0) / (x + 1.0)); + vec2 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= -2.0; + + color = vec4(y / -4.61, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..4996ed1ee48 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec2_vert_xvary_ref.vert @@ -0,0 +1,51 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 x = 31.0 * gtf_Color.rg + 1.0; + vec2 y = vec2(0.0); + vec2 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + z = (x - 1.0) / (x + 1.0); + vec2 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= 2.0; + + color = vec4(y / 3.466, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary.frag new file mode 100644 index 00000000000..eb2db1ac8be --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 31.0 * color.rgb + 1.0; + gl_FragColor = vec4(log(c) / 3.466, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary01.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary01.frag new file mode 100644 index 00000000000..a19f80ebc74 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary01.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = (color.rgb + 0.01) / 1.01; + gl_FragColor = vec4(log(c) / -4.61, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary01_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary01_ref.frag new file mode 100644 index 00000000000..1bdcbc69042 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary01_ref.frag @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 x = (color.rgb + 0.01) / 1.01; + vec3 y = vec3(0.0); + vec3 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + // Note: z will always be negative between 0.01 and 1.0 and + // so will y since it is raised to an odd power, and the shader spec + // does not support pow(-x, y) where y is not a compile time constant + z = abs((x - 1.0) / (x + 1.0)); + vec3 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= -2.0; + + gl_FragColor = vec4(y / -4.61, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..74f4cd89008 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_frag_xvary_ref.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 x = 31.0 * color.rgb + 1.0; + vec3 y = vec3(0.0); + vec3 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + z = (x - 1.0) / (x + 1.0); + vec3 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= 2.0; + + gl_FragColor = vec4(y / 3.466, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary.vert new file mode 100644 index 00000000000..76627e5fde3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 31.0 * gtf_Color.rgb + 1.0; + color = vec4(log(c) / 3.466, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary01.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary01.vert new file mode 100644 index 00000000000..48d13cd75e9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary01.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = (gtf_Color.rgb + 0.01) / 1.01; + color = vec4(log(c) / -4.61, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary01_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary01_ref.vert new file mode 100644 index 00000000000..3905ef7cb9b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary01_ref.vert @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 x = (gtf_Color.rgb + 0.01) / 1.01; + vec3 y = vec3(0.0); + vec3 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + // Note: z will always be negative between 0.01 and 1.0 and + // so will y since it is raised to an odd power, and the shader spec + // does not support pow(-x, y) where y is not a compile time constant + z = abs((x - 1.0) / (x + 1.0)); + vec3 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= -2.0; + + color = vec4(y / -4.61, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..c17738cfbcf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log/log_vec3_vert_xvary_ref.vert @@ -0,0 +1,51 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 x = 31.0 * gtf_Color.rgb + 1.0; + vec3 y = vec3(0.0); + vec3 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + z = (x - 1.0) / (x + 1.0); + vec3 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= 2.0; + + color = vec4(y / 3.466, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/input.run.txt new file mode 100644 index 00000000000..4205bf17ca3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/input.run.txt @@ -0,0 +1,3 @@ +# this file is auto-generated. DO NOT EDIT. +log2_001_to_008.html +log2_009_to_012.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_001_to_008.html new file mode 100644 index 00000000000..fef4f328e40 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_001_to_008.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: log2_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_009_to_012.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_009_to_012.html new file mode 100644 index 00000000000..e7abb0ba78f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_009_to_012.html @@ -0,0 +1,105 @@ + + + + + +WebGL GLSL conformance test: log2_009_to_012.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary.frag new file mode 100644 index 00000000000..06c6a090a54 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 31.0 * color.r + 1.0; + gl_FragColor = vec4(log2(c) / 5.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary01.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary01.frag new file mode 100644 index 00000000000..a6f3341cee6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary01.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = (color.r + 0.01) / 1.01; + gl_FragColor = vec4(log2(c) / -8.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary01_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary01_ref.frag new file mode 100644 index 00000000000..2185924efca --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary01_ref.frag @@ -0,0 +1,56 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +const float ln2 = 0.69314718055994530941723212145818; + + + +void main (void) +{ + float x = (color.r + 0.01) / 1.01; + float y = 0.0; + float z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + // Note: z will always be negative between 0.01 and 1.0 and + // so will y since it is raised to an odd power, and the shader spec + // does not support pow(-x, y) where y is not a compile time constant + z = abs((x - 1.0) / (x + 1.0)); + float p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= -2.0 / ln2; + + gl_FragColor = vec4(y / -8.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..c43ea54d06f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_frag_xvary_ref.frag @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +const float ln2 = 0.69314718055994530941723212145818; + + + +void main (void) +{ + float x = 31.0 * color.r + 1.0; + float y = 0.0; + float z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + z = (x - 1.0) / (x + 1.0); + float p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= 2.0 / ln2; + + gl_FragColor = vec4(y / 5.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary.vert new file mode 100644 index 00000000000..51123e0cd2b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 31.0 * gtf_Color.r + 1.0; + color = vec4(log2(c) / 5.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary01.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary01.vert new file mode 100644 index 00000000000..1356d8dbd49 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary01.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = (gtf_Color.r + 0.01) / 1.01; + color = vec4(log2(c) / -8.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary01_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary01_ref.vert new file mode 100644 index 00000000000..4871f988b78 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary01_ref.vert @@ -0,0 +1,57 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; +const float ln2 = 0.69314718055994530941723212145818; + + + +void main (void) +{ + float x = (gtf_Color.r + 0.01) / 1.01; + float y = 0.0; + float z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + // Note: z will always be negative between 0.01 and 1.0 and + // so will y since it is raised to an odd power, and the shader spec + // does not support pow(-x, y) where y is not a compile time constant + z = abs((x - 1.0) / (x + 1.0)); + float p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= -2.0 / ln2; + + color = vec4(y / -8.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..ba305ff36cc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_float_vert_xvary_ref.vert @@ -0,0 +1,52 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; +const float ln2 = 0.69314718055994530941723212145818; + +void main (void) +{ + float x = 31.0 * gtf_Color.r + 1.0; + float y = 0.0; + float z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + z = (x - 1.0) / (x + 1.0); + float p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= 2.0 / ln2; + + color = vec4(y / 5.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary.frag new file mode 100644 index 00000000000..e103f8fe58d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 31.0 * color.rg + 1.0; + gl_FragColor = vec4(log2(c) / 5.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary01.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary01.frag new file mode 100644 index 00000000000..c1646e3b0ba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary01.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = (color.rg + 0.01) / 1.01; + gl_FragColor = vec4(log2(c) / -8.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary01_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary01_ref.frag new file mode 100644 index 00000000000..b360fd2d9ce --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary01_ref.frag @@ -0,0 +1,56 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +const float ln2 = 0.69314718055994530941723212145818; + + + +void main (void) +{ + vec2 x = (color.rg + 0.01) / 1.01; + vec2 y = vec2(0.0); + vec2 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + // Note: z will always be negative between 0.01 and 1.0 and + // so will y since it is raised to an odd power, and the shader spec + // does not support pow(-x, y) where y is not a compile time constant + z = abs((x - 1.0) / (x + 1.0)); + vec2 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= -2.0 / ln2; + + gl_FragColor = vec4(y / -8.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..ba37c09cca2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_frag_xvary_ref.frag @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +const float ln2 = 0.69314718055994530941723212145818; + + + +void main (void) +{ + vec2 x = 31.0 * color.rg + 1.0; + vec2 y = vec2(0.0); + vec2 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + z = (x - 1.0) / (x + 1.0); + vec2 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= 2.0 / ln2; + + gl_FragColor = vec4(y / 5.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary.vert new file mode 100644 index 00000000000..81f012a4514 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 31.0 * gtf_Color.rg + 1.0; + color = vec4(log2(c) / 5.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary01.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary01.vert new file mode 100644 index 00000000000..0cfaf57468b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary01.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = (gtf_Color.rg + 0.01) / 1.01; + color = vec4(log2(c) / -8.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary01_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary01_ref.vert new file mode 100644 index 00000000000..835f3da1cb2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary01_ref.vert @@ -0,0 +1,57 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; +const float ln2 = 0.69314718055994530941723212145818; + + + +void main (void) +{ + vec2 x = (gtf_Color.rg + 0.01) / 1.01; + vec2 y = vec2(0.0); + vec2 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + // Note: z will always be negative between 0.01 and 1.0 and + // so will y since it is raised to an odd power, and the shader spec + // does not support pow(-x, y) where y is not a compile time constant + z = abs((x - 1.0) / (x + 1.0)); + vec2 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= -2.0 / ln2; + + color = vec4(y / -8.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..8f79dd44697 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec2_vert_xvary_ref.vert @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; +const float ln2 = 0.69314718055994530941723212145818; + + + +void main (void) +{ + vec2 x = 31.0 * gtf_Color.rg + 1.0; + vec2 y = vec2(0.0); + vec2 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + z = (x - 1.0) / (x + 1.0); + vec2 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= 2.0 / ln2; + + color = vec4(y / 5.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary.frag new file mode 100644 index 00000000000..2b406997e16 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 31.0 * color.rgb + 1.0; + gl_FragColor = vec4(log2(c) / 5.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary01.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary01.frag new file mode 100644 index 00000000000..614a6db9eae --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary01.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = (color.rgb + 0.01) / 1.01; + gl_FragColor = vec4(log2(c) / -8.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary01_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary01_ref.frag new file mode 100644 index 00000000000..32020337fb4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary01_ref.frag @@ -0,0 +1,56 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +const float ln2 = 0.69314718055994530941723212145818; + + + +void main (void) +{ + vec3 x = (color.rgb + 0.01) / 1.01; + vec3 y = vec3(0.0); + vec3 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + // Note: z will always be negative between 0.01 and 1.0 and + // so will y since it is raised to an odd power, and the shader spec + // does not support pow(-x, y) where y is not a compile time constant + z = abs((x - 1.0) / (x + 1.0)); + vec3 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= -2.0 / ln2; + + gl_FragColor = vec4(y / -8.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..f84f000e1df --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_frag_xvary_ref.frag @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +const float ln2 = 0.69314718055994530941723212145818; + + + +void main (void) +{ + vec3 x = 31.0 * color.rgb + 1.0; + vec3 y = vec3(0.0); + vec3 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + z = (x - 1.0) / (x + 1.0); + vec3 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= 2.0 / ln2; + + gl_FragColor = vec4(y / 5.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary.vert new file mode 100644 index 00000000000..e98b3703e5f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 31.0 * gtf_Color.rgb + 1.0; + color = vec4(log2(c) / 5.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary01.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary01.vert new file mode 100644 index 00000000000..779abfe8458 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary01.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = (gtf_Color.rgb + 0.01) / 1.01; + color = vec4(log2(c) / -8.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary01_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary01_ref.vert new file mode 100644 index 00000000000..fda8284a53c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary01_ref.vert @@ -0,0 +1,57 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; +const float ln2 = 0.69314718055994530941723212145818; + + + +void main (void) +{ + vec3 x = (gtf_Color.rgb + 0.01) / 1.01; + vec3 y = vec3(0.0); + vec3 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + // Note: z will always be negative between 0.01 and 1.0 and + // so will y since it is raised to an odd power, and the shader spec + // does not support pow(-x, y) where y is not a compile time constant + z = abs((x - 1.0) / (x + 1.0)); + vec3 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= -2.0 / ln2; + + color = vec4(y / -8.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..9c8454faf82 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/log2/log2_vec3_vert_xvary_ref.vert @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; +const float ln2 = 0.69314718055994530941723212145818; + + + +void main (void) +{ + vec3 x = 31.0 * gtf_Color.rgb + 1.0; + vec3 y = vec3(0.0); + vec3 z; // x-1 / x+1 + int n = 50; + + // ln(x) = 2[x-1 + 1 (x-1)^3 + 1 (x-1)^5 + ...] for x > 0 + // [x+1 3 (x+1) 5 (x+1) ] + z = (x - 1.0) / (x + 1.0); + vec3 p = z; + for(int i = 1; i <= 101; i += 2) + { + y += p / float(i); + p *= z * z; + } + y *= 2.0 / ln2; + + color = vec4(y / 5.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat2_frag.frag new file mode 100644 index 00000000000..c6b5af5085f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat2_frag.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +const int array_size = 2; + +void main (void) +{ + const mat2 a = mat2(1.0, 2.0, 3.0, 4.0); + const mat2 b = mat2(5.0, 6.0, 7.0, 8.0); + mat2 array[array_size]; + float gray; + + array[0] = a; + array[1] = b; + + if((array[0] == a) && (array[1] == b)) + gray = 1.0; + else + gray = 0.0; + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat2_vert.vert new file mode 100644 index 00000000000..859c040b31d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat2_vert.vert @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +const int array_size = 2; + +void main (void) +{ + const mat2 a = mat2(1.0, 2.0, 3.0, 4.0); + const mat2 b = mat2(5.0, 6.0, 7.0, 8.0); + mat2 array[array_size]; + float gray; + + array[0] = a; + array[1] = b; + + if((array[0] == a) && (array[1] == b)) + gray = 1.0; + else + gray = 0.0; + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat3_frag.frag new file mode 100644 index 00000000000..2d66cb16a2a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat3_frag.frag @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +const int array_size = 2; + +void main (void) +{ + const mat3 a = mat3(1.0, 2.0, 3.0, + 4.0, 5.0, 6.0, + 7.0, 8.0, 9.0); + const mat3 b = mat3(10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, + 16.0, 17.0, 18.0); + mat3 array[array_size]; + float gray; + + array[0] = a; + array[1] = b; + + if((array[0] == a) && (array[1] == b)) + gray = 1.0; + else + gray = 0.0; + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat3_vert.vert new file mode 100644 index 00000000000..ec5792f97a4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat3_vert.vert @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +const int array_size = 2; + +void main (void) +{ + const mat3 a = mat3(1.0, 2.0, 3.0, + 4.0, 5.0, 6.0, + 7.0, 8.0, 9.0); + const mat3 b = mat3(10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, + 16.0, 17.0, 18.0); + mat3 array[array_size]; + float gray; + + array[0] = a; + array[1] = b; + + if((array[0] == a) && (array[1] == b)) + gray = 1.0; + else + gray = 0.0; + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat4_frag.frag new file mode 100644 index 00000000000..f0750abb173 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat4_frag.frag @@ -0,0 +1,56 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +const int array_size = 2; + +void main (void) +{ + const mat4 a = mat4( 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0); + const mat4 b = mat4(17.0, 18.0, 19.0, 20.0, + 21.0, 22.0, 23.0, 24.0, + 25.0, 26.0, 27.0, 28.0, + 29.0, 30.0, 31.0, 32.0); + mat4 array[array_size]; + float gray; + + array[0] = a; + array[1] = b; + + if((array[0] == a) && (array[1] == b)) + gray = 1.0; + else + gray = 0.0; + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat4_vert.vert new file mode 100644 index 00000000000..bb816ba1d85 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/array_const_mat4_vert.vert @@ -0,0 +1,56 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +const int array_size = 2; + +void main (void) +{ + const mat4 a = mat4( 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0); + const mat4 b = mat4(17.0, 18.0, 19.0, 20.0, + 21.0, 22.0, 23.0, 24.0, + 25.0, 26.0, 27.0, 28.0, + 29.0, 30.0, 31.0, 32.0); + mat4 array[array_size]; + float gray; + + array[0] = a; + array[1] = b; + + if((array[0] == a) && (array[1] == b)) + gray = 1.0; + else + gray = 0.0; + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_copy_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_copy_frag.frag new file mode 100644 index 00000000000..00f8504ad48 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_copy_frag.frag @@ -0,0 +1,73 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +/* This epsilon will work as long as the magnitude of the float is < 128. + * This can be seen by taking the spec relative mediump precision of 2^-10: + * 0.125 / 2^-10 = 128 + */ +#define ERROR_EPSILON (0.125) + +void main (void) +{ + float x; + // Declare a constant 2 by 2 matrix with unique elements. + const mat2 a = mat2(1.0, 2.0, // 1.0 4.0 + 4.0, 8.0); // 2.0 8.0 + + // Copy the constant matrix to another non-const matrix. + mat2 b = a; + + // Check each element of the copy. + bool elms = true; + if(b[0][0] != 1.0) elms = false; + if(b[0][1] != 2.0) elms = false; + if(b[1][0] != 4.0) elms = false; + if(b[1][1] != 8.0) elms = false; + + // Add up each row of the copy. + bool rows = true; + x = b[0][0] + b[1][0]; + if(x < 5.0-ERROR_EPSILON || x > 5.0+ERROR_EPSILON) rows = false; + x = b[0][1] + b[1][1]; + if(x < 10.0-ERROR_EPSILON || x > 10.0+ERROR_EPSILON) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = b[0][0] + b[0][1]; + if(x < 3.0-ERROR_EPSILON || x > 3.0+ERROR_EPSILON) cols = false; + x = b[1][0] + b[1][1]; + if(x < 12.0-ERROR_EPSILON || x > 12.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the fragment color. + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_copy_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_copy_vert.vert new file mode 100644 index 00000000000..84e95ccbd7d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_copy_vert.vert @@ -0,0 +1,72 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + float x; + // Declare a constant 2 by 2 matrix with unique elements. + const mat2 a = mat2(1.0, 2.0, // 1.0 4.0 + 4.0, 8.0); // 2.0 8.0 + + // Copy the constant matrix to another non-const matrix. + mat2 b = a; + + // Check each element of the copy. + bool elms = true; + if(b[0][0] != 1.0) elms = false; + if(b[0][1] != 2.0) elms = false; + if(b[1][0] != 4.0) elms = false; + if(b[1][1] != 8.0) elms = false; + + // Add up each row of the copy. + bool rows = true; + x = b[0][0] + b[1][0]; + if(x < 5.0-ERROR_EPSILON || x > 5.0+ERROR_EPSILON) rows = false; + x = b[0][1] + b[1][1]; + if(x < 10.0-ERROR_EPSILON || x > 10.0+ERROR_EPSILON) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = b[0][0] + b[0][1]; + if(x < 3.0-ERROR_EPSILON || x > 3.0+ERROR_EPSILON) cols = false; + x = b[1][0] + b[1][1]; + if(x < 12.0-ERROR_EPSILON || x > 12.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the varying variable color. + color = vec4(gray, gray, gray, 1.0); + + // Transform the vertex position. + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_frag.frag new file mode 100644 index 00000000000..4eb12436b67 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_frag.frag @@ -0,0 +1,70 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +/* This epsilon will work as long as the magnitude of the float is < 128. + * This can be seen by taking the spec relative mediump precision of 2^-10: + * 0.125 / 2^-10 = 128 + */ +#define ERROR_EPSILON (0.125) + +void main (void) +{ + float x; + // Declare a constant 2 by 2 matrix with unique elements. + const mat2 a = mat2(1.0, 2.0, // 1.0 4.0 + 4.0, 8.0); // 2.0 8.0 + + // Check each element. + bool elms = true; + if(a[0][0] != 1.0) elms = false; + if(a[0][1] != 2.0) elms = false; + if(a[1][0] != 4.0) elms = false; + if(a[1][1] != 8.0) elms = false; + + // Add up each row. + bool rows = true; + x = a[0][0] + a[1][0]; + if(x < 5.0-ERROR_EPSILON || x > 5.0+ERROR_EPSILON) rows = false; + x = a[0][1] + a[1][1]; + if(x < 10.0-ERROR_EPSILON || x > 10.0+ERROR_EPSILON) rows = false; + + // Add up each column. + bool cols = true; + x = a[0][0] + a[0][1]; + if(x < 3.0-ERROR_EPSILON || x > 3.0+ERROR_EPSILON) cols = false; + x = a[1][0] + a[1][1]; + if(x < 12.0-ERROR_EPSILON || x > 12.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the fragment color. + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_vert.vert new file mode 100644 index 00000000000..d1c6fd84c13 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat2_vert.vert @@ -0,0 +1,69 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + float x; + // Declare a constant 2 by 2 matrix with unique elements. + const mat2 a = mat2(1.0, 2.0, // 1.0 4.0 + 4.0, 8.0); // 2.0 8.0 + + // Check each element. + bool elms = true; + if(a[0][0] != 1.0) elms = false; + if(a[0][1] != 2.0) elms = false; + if(a[1][0] != 4.0) elms = false; + if(a[1][1] != 8.0) elms = false; + + // Add up each row. + bool rows = true; + x = a[0][0] + a[1][0]; + if(x < 5.0-ERROR_EPSILON || x > 5.0+ERROR_EPSILON) rows = false; + x = a[0][1] + a[1][1]; + if(x < 10.0-ERROR_EPSILON || x > 10.0+ERROR_EPSILON) rows = false; + + // Add up each column. + bool cols = true; + x = a[0][0] + a[0][1]; + if(x < 3.0-ERROR_EPSILON || x > 3.0+ERROR_EPSILON) cols = false; + x = a[1][0] + a[1][1]; + if(x < 12.0-ERROR_EPSILON || x > 12.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the varying variable color. + color = vec4(gray, gray, gray, 1.0); + + // Transform the vertex position. + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_copy_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_copy_frag.frag new file mode 100644 index 00000000000..3b55111bac3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_copy_frag.frag @@ -0,0 +1,83 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +/* This epsilon will work as long as the magnitude of the float is < 128. + * This can be seen by taking the spec relative mediump precision of 2^-10: + * 0.125 / 2^-10 = 128 + */ +#define ERROR_EPSILON (0.125) + +void main (void) +{ + float x; + // Declare a constant 3 by 3 matrix with unique elements. + const mat3 a = mat3( 1.0, 2.0, 3.0, + 4.0, 5.0, 6.0, + 7.0, 8.0, 9.0); + + // Copy the constant matrix to another non-const matrix. + mat3 b = a; + + // Check each element of the copy. + bool elms = true; + if(b[0][0] != 1.0) elms = false; + if(b[0][1] != 2.0) elms = false; + if(b[0][2] != 3.0) elms = false; + if(b[1][0] != 4.0) elms = false; + if(b[1][1] != 5.0) elms = false; + if(b[1][2] != 6.0) elms = false; + if(b[2][0] != 7.0) elms = false; + if(b[2][1] != 8.0) elms = false; + if(b[2][2] != 9.0) elms = false; + + // Add up each row of the copy. + bool rows = true; + x = b[0][0] + b[1][0] + b[2][0]; + if( x < 12.0-ERROR_EPSILON || x > 12.0+ERROR_EPSILON ) rows = false; + x = b[0][1] + b[1][1] + b[2][1]; + if(x < 15.0-ERROR_EPSILON || x > 15.0+ERROR_EPSILON ) rows = false; + x = b[0][2] + b[1][2] + b[2][2]; + if(x < 18.0-ERROR_EPSILON || x > 18.0+ERROR_EPSILON ) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = b[0][0] + b[0][1] + b[0][2]; + if( x < 6.0-ERROR_EPSILON || x > 6.0+ERROR_EPSILON ) cols = false; + x = b[1][0] + b[1][1] + b[1][2]; + if(x < 15.0-ERROR_EPSILON || x > 15.0+ERROR_EPSILON) cols = false; + x = b[2][0] + b[2][1] + b[2][2]; + if(x < 24.0-ERROR_EPSILON || x > 24.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the fragment color. + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_copy_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_copy_vert.vert new file mode 100644 index 00000000000..7a9282cc253 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_copy_vert.vert @@ -0,0 +1,83 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + float x; + // Declare a constant 3 by 3 matrix with unique elements. + const mat3 a = mat3( 1.0, 2.0, 4.0, // 1.0 8.0 64.0 + 8.0, 16.0, 32.0, // 2.0 16.0 128.0 + 64.0, 128.0, 256.0); // 4.0 32.0 256.0 + + // Copy the constant matrix to another non-const matrix. + mat3 b = a; + + // Check each element of the copy. + bool elms = true; + if(b[0][0] != 1.0) elms = false; + if(b[0][1] != 2.0) elms = false; + if(b[0][2] != 4.0) elms = false; + if(b[1][0] != 8.0) elms = false; + if(b[1][1] != 16.0) elms = false; + if(b[1][2] != 32.0) elms = false; + if(b[2][0] != 64.0) elms = false; + if(b[2][1] != 128.0) elms = false; + if(b[2][2] != 256.0) elms = false; + + // Add up each row of the copy. + bool rows = true; + x = b[0][0] + b[1][0] + b[2][0]; + x = b[0][0] + b[1][0] + b[2][0]; + if( x < 73.0-ERROR_EPSILON || x > 73.0+ERROR_EPSILON ) rows = false; + x = b[0][1] + b[1][1] + b[2][1]; + if(x < 146.0-ERROR_EPSILON || x > 146.0+ERROR_EPSILON ) rows = false; + x = b[0][2] + b[1][2] + b[2][2]; + if(x < 292.0-ERROR_EPSILON || x > 292.0+ERROR_EPSILON ) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = b[0][0] + b[0][1] + b[0][2]; + if( x < 7.0-ERROR_EPSILON || x > 7.0+ERROR_EPSILON ) cols = false; + x = b[1][0] + b[1][1] + b[1][2]; + if(x < 56.0-ERROR_EPSILON || x > 56.0+ERROR_EPSILON) cols = false; + x = b[2][0] + b[2][1] + b[2][2]; + if(x < 448.0-ERROR_EPSILON || x > 448.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the varying variable color. + color = vec4(gray, gray, gray, 1.0); + + // Transform the vertex position. + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_frag.frag new file mode 100644 index 00000000000..3951510744b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_frag.frag @@ -0,0 +1,80 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +/* This epsilon will work as long as the magnitude of the float is < 128. + * This can be seen by taking the spec relative mediump precision of 2^-10: + * 0.125 / 2^-10 = 128 + */ +#define ERROR_EPSILON (0.125) + +void main (void) +{ + float x; + // Declare a constant 3 by 3 matrix with unique elements. + const mat3 a = mat3( 1.0, 2.0, 3.0, + 4.0, 5.0, 6.0, + 7.0, 8.0, 9.0); + + // Check each element. + bool elms = true; + if(a[0][0] != 1.0) elms = false; + if(a[0][1] != 2.0) elms = false; + if(a[0][2] != 3.0) elms = false; + if(a[1][0] != 4.0) elms = false; + if(a[1][1] != 5.0) elms = false; + if(a[1][2] != 6.0) elms = false; + if(a[2][0] != 7.0) elms = false; + if(a[2][1] != 8.0) elms = false; + if(a[2][2] != 9.0) elms = false; + + // Add up each row. + bool rows = true; + x = a[0][0] + a[1][0] + a[2][0]; + if( x < 12.0-ERROR_EPSILON || x > 12.0+ERROR_EPSILON ) rows = false; + x = a[0][1] + a[1][1] + a[2][1]; + if(x < 15.0-ERROR_EPSILON || x > 15.0+ERROR_EPSILON ) rows = false; + x = a[0][2] + a[1][2] + a[2][2]; + if(x < 18.0-ERROR_EPSILON || x > 18.0+ERROR_EPSILON ) rows = false; + + // Add up each column. + bool cols = true; + x = a[0][0] + a[0][1] + a[0][2]; + if( x < 6.0-ERROR_EPSILON || x > 6.0+ERROR_EPSILON ) cols = false; + x = a[1][0] + a[1][1] + a[1][2]; + if(x < 15.0-ERROR_EPSILON || x > 15.0+ERROR_EPSILON) cols = false; + x = a[2][0] + a[2][1] + a[2][2]; + if(x < 24.0-ERROR_EPSILON || x > 24.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the fragment color. + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_vert.vert new file mode 100644 index 00000000000..bb4e396e5a0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat3_vert.vert @@ -0,0 +1,79 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + float x; + // Declare a constant 3 by 3 matrix with unique elements. + const mat3 a = mat3( 1.0, 2.0, 4.0, // 1.0 8.0 64.0 + 8.0, 16.0, 32.0, // 2.0 16.0 128.0 + 64.0, 128.0, 256.0); // 4.0 32.0 256.0 + + // Check each element. + bool elms = true; + if(a[0][0] != 1.0) elms = false; + if(a[0][1] != 2.0) elms = false; + if(a[0][2] != 4.0) elms = false; + if(a[1][0] != 8.0) elms = false; + if(a[1][1] != 16.0) elms = false; + if(a[1][2] != 32.0) elms = false; + if(a[2][0] != 64.0) elms = false; + if(a[2][1] != 128.0) elms = false; + if(a[2][2] != 256.0) elms = false; + + // Add up each row. + bool rows = true; + x = a[0][0] + a[1][0] + a[2][0]; + if( x < 73.0-ERROR_EPSILON || x > 73.0+ERROR_EPSILON ) rows = false; + x = a[0][1] + a[1][1] + a[2][1]; + if(x < 146.0-ERROR_EPSILON || x > 146.0+ERROR_EPSILON ) rows = false; + x = a[0][2] + a[1][2] + a[2][2]; + if(x < 292.0-ERROR_EPSILON || x > 292.0+ERROR_EPSILON ) rows = false; + + // Add up each column. + bool cols = true; + x = a[0][0] + a[0][1] + a[0][2]; + if( x < 7.0-ERROR_EPSILON || x > 7.0+ERROR_EPSILON ) cols = false; + x = a[1][0] + a[1][1] + a[1][2]; + if(x < 56.0-ERROR_EPSILON || x > 56.0+ERROR_EPSILON) cols = false; + x = a[2][0] + a[2][1] + a[2][2]; + if(x < 448.0-ERROR_EPSILON || x > 448.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the varying variable color. + color = vec4(gray, gray, gray, 1.0); + + // Transform the vertex position. + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_copy_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_copy_frag.frag new file mode 100644 index 00000000000..4bf0e97fac7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_copy_frag.frag @@ -0,0 +1,95 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +/* This epsilon will work as long as the magnitude of the float is < 128. + * This can be seen by taking the spec relative mediump precision of 2^-10: + * 0.125 / 2^-10 = 128 + */ +#define ERROR_EPSILON (0.125) + +void main (void) +{ + float x; + // Declare a constant 4 by 4 matrix with unique elements. + const mat4 a = mat4( 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0); + + // Copy the constant matrix to another non-const matrix. + mat4 b = a; + + // Check each element of the copy. + bool elms = true; + if(b[0][0] != 1.0) elms = false; + if(b[0][1] != 2.0) elms = false; + if(b[0][2] != 3.0) elms = false; + if(b[0][3] != 4.0) elms = false; + if(b[1][0] != 5.0) elms = false; + if(b[1][1] != 6.0) elms = false; + if(b[1][2] != 7.0) elms = false; + if(b[1][3] != 8.0) elms = false; + if(b[2][0] != 9.0) elms = false; + if(b[2][1] != 10.0) elms = false; + if(b[2][2] != 11.0) elms = false; + if(b[2][3] != 12.0) elms = false; + if(b[3][0] != 13.0) elms = false; + if(b[3][1] != 14.0) elms = false; + if(b[3][2] != 15.0) elms = false; + if(b[3][3] != 16.0) elms = false; + + // Add up each row of the copy. + bool rows = true; + x = b[0][0] + b[1][0] + b[2][0] + b[3][0]; + if(x < 28.0-ERROR_EPSILON || x > 28.0+ERROR_EPSILON) rows = false; + x = b[0][1] + b[1][1] + b[2][1] + b[3][1]; + if(x < 32.0-ERROR_EPSILON || x > 32.0+ERROR_EPSILON) rows = false; + x = b[0][2] + b[1][2] + b[2][2] + b[3][2]; + if(x < 36.0-ERROR_EPSILON || x > 36.0+ERROR_EPSILON) rows = false; + x = b[0][3] + b[1][3] + b[2][3] + b[3][3]; + if(x < 40.0-ERROR_EPSILON || x > 40.0+ERROR_EPSILON) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = b[0][0] + b[0][1] + b[0][2] + b[0][3]; + if(x < 10.0-ERROR_EPSILON || x > 10.0+ERROR_EPSILON) cols = false; + x = b[1][0] + b[1][1] + b[1][2] + b[1][3]; + if(x < 26.0-ERROR_EPSILON || x > 26.0+ERROR_EPSILON) cols = false; + x = b[2][0] + b[2][1] + b[2][2] + b[2][3]; + if(x < 42.0-ERROR_EPSILON || x > 42.0+ERROR_EPSILON) cols = false; + x = b[3][0] + b[3][1] + b[3][2] + b[3][3]; + if(x < 58.0-ERROR_EPSILON || x > 58.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the fragment color. + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_copy_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_copy_vert.vert new file mode 100644 index 00000000000..8f119e19bff --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_copy_vert.vert @@ -0,0 +1,94 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + float x; + // Declare a constant 4 by 4 matrix with unique elements. + const mat4 a = mat4( 1.0, 2.0, 4.0, 8.0, // 1.0 16.0 256.0 4096.0 + 16.0, 32.0, 64.0, 128.0, // 2.0 32.0 512.0 8192.0 + 256.0, 512.0, 1024.0, 2048.0, // 4.0 64.0 1024.0 16384.0 + 4096.0, 8192.0, 16384.0, 32768.0); // 8.0 128.0 2048.0 32768.0 + + // Copy the constant matrix to another non-const matrix. + mat4 b = a; + + // Check each element of the copy. + bool elms = true; + if(b[0][0] != 1.0) elms = false; + if(b[0][1] != 2.0) elms = false; + if(b[0][2] != 4.0) elms = false; + if(b[0][3] != 8.0) elms = false; + if(b[1][0] != 16.0) elms = false; + if(b[1][1] != 32.0) elms = false; + if(b[1][2] != 64.0) elms = false; + if(b[1][3] != 128.0) elms = false; + if(b[2][0] != 256.0) elms = false; + if(b[2][1] != 512.0) elms = false; + if(b[2][2] != 1024.0) elms = false; + if(b[2][3] != 2048.0) elms = false; + if(b[3][0] != 4096.0) elms = false; + if(b[3][1] != 8192.0) elms = false; + if(b[3][2] != 16384.0) elms = false; + if(b[3][3] != 32768.0) elms = false; + + // Add up each row of the copy. + bool rows = true; + x = b[0][0] + b[1][0] + b[2][0] + b[3][0]; + if(x < 4369.0-ERROR_EPSILON || x > 4369.0+ERROR_EPSILON) rows = false; + x = b[0][1] + b[1][1] + b[2][1] + b[3][1]; + if(x < 8738.0-ERROR_EPSILON || x > 8738.0+ERROR_EPSILON) rows = false; + x = b[0][2] + b[1][2] + b[2][2] + b[3][2]; + if(x < 17476.0-ERROR_EPSILON || x > 17476.0+ERROR_EPSILON) rows = false; + x = b[0][3] + b[1][3] + b[2][3] + b[3][3]; + if(x < 34952.0-ERROR_EPSILON || x > 34952.0+ERROR_EPSILON) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = b[0][0] + b[0][1] + b[0][2] + b[0][3]; + if(x < 15.0-ERROR_EPSILON || x > 15.0+ERROR_EPSILON) cols = false; + x = b[1][0] + b[1][1] + b[1][2] + b[1][3]; + if(x < 240.0-ERROR_EPSILON || x > 240.0+ERROR_EPSILON) cols = false; + x = b[2][0] + b[2][1] + b[2][2] + b[2][3]; + if(x < 3840.0-ERROR_EPSILON || x > 3840.0+ERROR_EPSILON) cols = false; + x = b[3][0] + b[3][1] + b[3][2] + b[3][3]; + if(x < 61440.0-ERROR_EPSILON || x > 61440.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the varying variable color. + color = vec4(gray, gray, gray, 1.0); + + // Transform the vertex position. + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_frag.frag new file mode 100644 index 00000000000..02ed577c1c5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_frag.frag @@ -0,0 +1,92 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +/* This epsilon will work as long as the magnitude of the float is < 128. + * This can be seen by taking the spec relative mediump precision of 2^-10: + * 0.125 / 2^-10 = 128 + */ +#define ERROR_EPSILON (0.125) + +void main (void) +{ + float x; + // Declare a constant 4 by 4 matrix with unique elements. + const mat4 a = mat4( 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0); + + // Check each element. + bool elms = true; + if(a[0][0] != 1.0) elms = false; + if(a[0][1] != 2.0) elms = false; + if(a[0][2] != 3.0) elms = false; + if(a[0][3] != 4.0) elms = false; + if(a[1][0] != 5.0) elms = false; + if(a[1][1] != 6.0) elms = false; + if(a[1][2] != 7.0) elms = false; + if(a[1][3] != 8.0) elms = false; + if(a[2][0] != 9.0) elms = false; + if(a[2][1] != 10.0) elms = false; + if(a[2][2] != 11.0) elms = false; + if(a[2][3] != 12.0) elms = false; + if(a[3][0] != 13.0) elms = false; + if(a[3][1] != 14.0) elms = false; + if(a[3][2] != 15.0) elms = false; + if(a[3][3] != 16.0) elms = false; + + // Add up each row. + bool rows = true; + x = a[0][0] + a[1][0] + a[2][0] + a[3][0]; + if(x < 28.0-ERROR_EPSILON || x > 28.0+ERROR_EPSILON) rows = false; + x = a[0][1] + a[1][1] + a[2][1] + a[3][1]; + if(x < 32.0-ERROR_EPSILON || x > 32.0+ERROR_EPSILON) rows = false; + x = a[0][2] + a[1][2] + a[2][2] + a[3][2]; + if(x < 36.0-ERROR_EPSILON || x > 36.0+ERROR_EPSILON) rows = false; + x = a[0][3] + a[1][3] + a[2][3] + a[3][3]; + if(x < 40.0-ERROR_EPSILON || x > 40.0+ERROR_EPSILON) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = a[0][0] + a[0][1] + a[0][2] + a[0][3]; + if(x < 10.0-ERROR_EPSILON || x > 10.0+ERROR_EPSILON) cols = false; + x = a[1][0] + a[1][1] + a[1][2] + a[1][3]; + if(x < 26.0-ERROR_EPSILON || x > 26.0+ERROR_EPSILON) cols = false; + x = a[2][0] + a[2][1] + a[2][2] + a[2][3]; + if(x < 42.0-ERROR_EPSILON || x > 42.0+ERROR_EPSILON) cols = false; + x = a[3][0] + a[3][1] + a[3][2] + a[3][3]; + if(x < 58.0-ERROR_EPSILON || x > 58.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the fragment color. + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_vert.vert new file mode 100644 index 00000000000..730087dacb2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/const_mat4_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + float x; + // Declare a constant 4 by 4 matrix with unique elements. + const mat4 a = mat4( 1.0, 2.0, 4.0, 8.0, // 1.0 16.0 256.0 4096.0 + 16.0, 32.0, 64.0, 128.0, // 2.0 32.0 512.0 8192.0 + 256.0, 512.0, 1024.0, 2048.0, // 4.0 64.0 1024.0 16384.0 + 4096.0, 8192.0, 16384.0, 32768.0); // 8.0 128.0 2048.0 32768.0 + + // Check each element. + bool elms = true; + if(a[0][0] != 1.0) elms = false; + if(a[0][1] != 2.0) elms = false; + if(a[0][2] != 4.0) elms = false; + if(a[0][3] != 8.0) elms = false; + if(a[1][0] != 16.0) elms = false; + if(a[1][1] != 32.0) elms = false; + if(a[1][2] != 64.0) elms = false; + if(a[1][3] != 128.0) elms = false; + if(a[2][0] != 256.0) elms = false; + if(a[2][1] != 512.0) elms = false; + if(a[2][2] != 1024.0) elms = false; + if(a[2][3] != 2048.0) elms = false; + if(a[3][0] != 4096.0) elms = false; + if(a[3][1] != 8192.0) elms = false; + if(a[3][2] != 16384.0) elms = false; + if(a[3][3] != 32768.0) elms = false; + + // Add up each row. + bool rows = true; + x = a[0][0] + a[1][0] + a[2][0] + a[3][0]; + if(x < 4369.0-ERROR_EPSILON || x > 4369.0+ERROR_EPSILON) rows = false; + x = a[0][1] + a[1][1] + a[2][1] + a[3][1]; + if(x < 8738.0-ERROR_EPSILON || x > 8738.0+ERROR_EPSILON) rows = false; + x = a[0][2] + a[1][2] + a[2][2] + a[3][2]; + if(x < 17476.0-ERROR_EPSILON || x > 17476.0+ERROR_EPSILON) rows = false; + x = a[0][3] + a[1][3] + a[2][3] + a[3][3]; + if(x < 34952.0-ERROR_EPSILON || x > 34952.0+ERROR_EPSILON) rows = false; + + // Add up each column. + bool cols = true; + x = a[0][0] + a[0][1] + a[0][2] + a[0][3]; + if(x < 15.0-ERROR_EPSILON || x > 15.0+ERROR_EPSILON) cols = false; + x = a[1][0] + a[1][1] + a[1][2] + a[1][3]; + if(x < 240.0-ERROR_EPSILON || x > 240.0+ERROR_EPSILON) cols = false; + x = a[2][0] + a[2][1] + a[2][2] + a[2][3]; + if(x < 3840.0-ERROR_EPSILON || x > 3840.0+ERROR_EPSILON) cols = false; + x = a[3][0] + a[3][1] + a[3][2] + a[3][3]; + if(x < 61440.0-ERROR_EPSILON || x > 61440.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the varying variable color. + color = vec4(gray, gray, gray, 1.0); + + // Transform the vertex position. + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/input.run.txt new file mode 100644 index 00000000000..730999d88dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/input.run.txt @@ -0,0 +1,7 @@ +# this file is auto-generated. DO NOT EDIT. +mat_001_to_008.html +mat_009_to_016.html +mat_017_to_024.html +mat_025_to_032.html +mat_033_to_040.html +mat_041_to_046.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_2vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_2vec2_frag.frag new file mode 100644 index 00000000000..431b6471792 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_2vec2_frag.frag @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + mat2 m = mat2(color.rg, color.ba); + vec4 black = vec4(0.0, 0.0, 0.0, 1.0); + vec4 result = vec4(1.0, 1.0, 1.0, 1.0); + + if(m[0][0] != color.r) result = black; + if(m[0][1] != color.g) result = black; + if(m[1][0] != color.b) result = black; + if(m[1][1] != color.a) result = black; + + gl_FragColor = result; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_2vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_2vec2_vert.vert new file mode 100644 index 00000000000..6747a489889 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_2vec2_vert.vert @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + mat2 m = mat2(gtf_Color.rg, gtf_Color.ba); + vec4 black = vec4(0.0, 0.0, 0.0, 1.0); + vec4 result = vec4(1.0, 1.0, 1.0, 1.0); + + + if(m[0][0] != gtf_Color.r) result = black; + if(m[0][1] != gtf_Color.g) result = black; + if(m[1][0] != gtf_Color.b) result = black; + if(m[1][1] != gtf_Color.a) result = black; + + color = result; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_4float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_4float_frag.frag new file mode 100644 index 00000000000..b74a9a71d60 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_4float_frag.frag @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + mat2 m = mat2(color.r, color.g, color.b, color.a); + vec4 black = vec4(0.0, 0.0, 0.0, 1.0); + vec4 result = vec4(1.0, 1.0, 1.0, 1.0); + + if(m[0][0] != color.r) result = black; + if(m[0][1] != color.g) result = black; + if(m[1][0] != color.b) result = black; + if(m[1][1] != color.a) result = black; + + gl_FragColor = result; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_4float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_4float_vert.vert new file mode 100644 index 00000000000..c5a7f1a486f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_4float_vert.vert @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + mat2 m = mat2(gtf_Color.r, gtf_Color.g, gtf_Color.b, gtf_Color.a); + vec4 black = vec4(0.0, 0.0, 0.0, 1.0); + vec4 result = vec4(1.0, 1.0, 1.0, 1.0); + + + if(m[0][0] != gtf_Color.r) result = black; + if(m[0][1] != gtf_Color.g) result = black; + if(m[1][0] != gtf_Color.b) result = black; + if(m[1][1] != gtf_Color.a) result = black; + + color = result; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_copy_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_copy_frag.frag new file mode 100644 index 00000000000..12acbc5b999 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_copy_frag.frag @@ -0,0 +1,73 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +/* This epsilon will work as long as the magnitude of the float is < 128. + * This can be seen by taking the spec relative mediump precision of 2^-10: + * 0.125 / 2^-10 = 128 + */ +#define ERROR_EPSILON (0.125) + +void main (void) +{ + float x; + // Declare a 2 by 2 matrix with unique elements. + mat2 a = mat2(1.0, 2.0, // 1.0 4.0 + 4.0, 8.0); // 2.0 8.0 + + // Copy the matrix to another non-const matrix. + mat2 b = a; + + // Check each element of the copy. + bool elms = true; + if(b[0][0] != 1.0) elms = false; + if(b[0][1] != 2.0) elms = false; + if(b[1][0] != 4.0) elms = false; + if(b[1][1] != 8.0) elms = false; + + // Add up each row of the copy. + bool rows = true; + x = b[0][0] + b[1][0]; + if(x < 5.0-ERROR_EPSILON || x > 5.0+ERROR_EPSILON) rows = false; + x = b[0][1] + b[1][1]; + if(x < 10.0-ERROR_EPSILON || x > 10.0+ERROR_EPSILON) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = b[0][0] + b[0][1]; + if(x < 3.0-ERROR_EPSILON || x > 3.0+ERROR_EPSILON) cols = false; + x = b[1][0] + b[1][1]; + if(x < 12.0-ERROR_EPSILON || x > 12.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the fragment color. + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_copy_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_copy_vert.vert new file mode 100644 index 00000000000..6aeede3f8c8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_copy_vert.vert @@ -0,0 +1,72 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + float x; + // Declare a 2 by 2 matrix with unique elements. + mat2 a = mat2(1.0, 2.0, // 1.0 4.0 + 4.0, 8.0); // 2.0 8.0 + + // Copy the matrix to another non-const matrix. + mat2 b = a; + + // Check each element of the copy. + bool elms = true; + if(b[0][0] != 1.0) elms = false; + if(b[0][1] != 2.0) elms = false; + if(b[1][0] != 4.0) elms = false; + if(b[1][1] != 8.0) elms = false; + + // Add up each row of the copy. + bool rows = true; + x = b[0][0] + b[1][0]; + if(x < 5.0-ERROR_EPSILON || x > 5.0+ERROR_EPSILON) rows = false; + x = b[0][1] + b[1][1]; + if(x < 10.0-ERROR_EPSILON || x > 10.0+ERROR_EPSILON) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = b[0][0] + b[0][1]; + if(x < 3.0-ERROR_EPSILON || x > 3.0+ERROR_EPSILON) cols = false; + x = b[1][0] + b[1][1]; + if(x < 12.0-ERROR_EPSILON || x > 12.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the varying variable color. + color = vec4(gray, gray, gray, 1.0); + + // Transform the vertex position. + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_float_frag.frag new file mode 100644 index 00000000000..4c9954715d5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_float_frag.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + mat2 m = mat2(0.5); + vec4 black = vec4(0.0, 0.0, 0.0, 1.0); + vec4 result = vec4(1.0, 1.0, 1.0, 1.0); + + if((m[0][0] != 0.5)) + result = black; + if((m[0][1] != 0.0)) + result = black; + + if((m[1][0] != 0.0)) + result = black; + if((m[1][1] != 0.5)) + result = black; + + gl_FragColor = result; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_float_vert.vert new file mode 100644 index 00000000000..894b3a05891 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_float_vert.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + mat2 m = mat2(0.5); + vec4 black = vec4(0.0, 0.0, 0.0, 1.0); + vec4 result = vec4(1.0, 1.0, 1.0, 1.0); + + if((m[0][0] != 0.5)) + result = black; + if((m[0][1] != 0.0)) + result = black; + if((m[1][0] != 0.0)) + result = black; + if((m[1][1] != 0.5)) + result = black; + + color = result; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_frag.frag new file mode 100644 index 00000000000..a105f5fc6f5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_frag.frag @@ -0,0 +1,70 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +/* This epsilon will work as long as the magnitude of the float is < 128. + * This can be seen by taking the spec relative mediump precision of 2^-10: + * 0.125 / 2^-10 = 128 + */ +#define ERROR_EPSILON (0.125) + +void main (void) +{ + float x; + // Declare a 2 by 2 matrix with unique elements. + mat2 a = mat2(1.0, 2.0, // 1.0 4.0 + 4.0, 8.0); // 2.0 8.0 + + // Check each element. + bool elms = true; + if(a[0][0] != 1.0) elms = false; + if(a[0][1] != 2.0) elms = false; + if(a[1][0] != 4.0) elms = false; + if(a[1][1] != 8.0) elms = false; + + // Add up each row. + bool rows = true; + x = a[0][0] + a[1][0]; + if(x < 5.0-ERROR_EPSILON || x > 5.0+ERROR_EPSILON) rows = false; + x = a[0][1] + a[1][1]; + if(x < 10.0-ERROR_EPSILON || x > 10.0+ERROR_EPSILON) rows = false; + + // Add up each column. + bool cols = true; + x = a[0][0] + a[0][1]; + if(x < 3.0-ERROR_EPSILON || x > 3.0+ERROR_EPSILON) cols = false; + x = a[1][0] + a[1][1]; + if(x < 12.0-ERROR_EPSILON || x > 12.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the fragment color. + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_vert.vert new file mode 100644 index 00000000000..93d56cfd219 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat2_vert.vert @@ -0,0 +1,69 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + float x; + // Declare a 2 by 2 matrix with unique elements. + mat2 a = mat2(1.0, 2.0, // 1.0 4.0 + 4.0, 8.0); // 2.0 8.0 + + // Check each element. + bool elms = true; + if(a[0][0] != 1.0) elms = false; + if(a[0][1] != 2.0) elms = false; + if(a[1][0] != 4.0) elms = false; + if(a[1][1] != 8.0) elms = false; + + // Add up each row. + bool rows = true; + x = a[0][0] + a[1][0]; + if(x < 5.0-ERROR_EPSILON || x > 5.0+ERROR_EPSILON) rows = false; + x = a[0][1] + a[1][1]; + if(x < 10.0-ERROR_EPSILON || x > 10.0+ERROR_EPSILON) rows = false; + + // Add up each column. + bool cols = true; + x = a[0][0] + a[0][1]; + if(x < 3.0-ERROR_EPSILON || x > 3.0+ERROR_EPSILON) cols = false; + x = a[1][0] + a[1][1]; + if(x < 12.0-ERROR_EPSILON || x > 12.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the varying variable color. + color = vec4(gray, gray, gray, 1.0); + + // Transform the vertex position. + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_3vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_3vec3_frag.frag new file mode 100644 index 00000000000..133a71f8479 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_3vec3_frag.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + mat3 m = mat3(color.rgb, color.rgb, color.rgb); + vec4 black = vec4(0.0, 0.0, 0.0, 1.0); + vec4 result = vec4(1.0, 1.0, 1.0, 1.0); + + if(m[0][0] != color.r) result = black; + if(m[0][1] != color.g) result = black; + if(m[0][2] != color.b) result = black; + if(m[1][0] != color.r) result = black; + if(m[1][1] != color.g) result = black; + if(m[1][2] != color.b) result = black; + if(m[2][0] != color.r) result = black; + if(m[2][1] != color.g) result = black; + if(m[2][2] != color.b) result = black; + + gl_FragColor = result; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_3vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_3vec3_vert.vert new file mode 100644 index 00000000000..c0b92b88ffe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_3vec3_vert.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + mat3 m = mat3(gtf_Color.rgb, gtf_Color.rgb, gtf_Color.rgb); + vec4 black = vec4(0.0, 0.0, 0.0, 1.0); + vec4 result = vec4(1.0, 1.0, 1.0, 1.0); + + if(m[0][0] != gtf_Color.r) result = black; + if(m[0][1] != gtf_Color.g) result = black; + if(m[0][2] != gtf_Color.b) result = black; + if(m[1][0] != gtf_Color.r) result = black; + if(m[1][1] != gtf_Color.g) result = black; + if(m[1][2] != gtf_Color.b) result = black; + if(m[2][0] != gtf_Color.r) result = black; + if(m[2][1] != gtf_Color.g) result = black; + if(m[2][2] != gtf_Color.b) result = black; + + color = result; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_9float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_9float_frag.frag new file mode 100644 index 00000000000..e65c7241eeb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_9float_frag.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + mat3 m = mat3(color.r, color.g, color.b, color.r, color.g, color.b, color.r, color.g, color.b); + vec4 black = vec4(0.0, 0.0, 0.0, 1.0); + vec4 result = vec4(1.0, 1.0, 1.0, 1.0); + + if(m[0][0] != color.r) result = black; + if(m[0][1] != color.g) result = black; + if(m[0][2] != color.b) result = black; + if(m[1][0] != color.r) result = black; + if(m[1][1] != color.g) result = black; + if(m[1][2] != color.b) result = black; + if(m[2][0] != color.r) result = black; + if(m[2][1] != color.g) result = black; + if(m[2][2] != color.b) result = black; + + gl_FragColor = result; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_9float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_9float_vert.vert new file mode 100644 index 00000000000..b13848605b6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_9float_vert.vert @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + mat3 m = mat3(gtf_Color.r, gtf_Color.g, gtf_Color.b, gtf_Color.r, gtf_Color.g, gtf_Color.b, gtf_Color.r, gtf_Color.g, gtf_Color.b); + vec4 black = vec4(0.0, 0.0, 0.0, 1.0); + vec4 result = vec4(1.0, 1.0, 1.0, 1.0); + + + if(m[0][0] != gtf_Color.r) result = black; + if(m[0][1] != gtf_Color.g) result = black; + if(m[0][2] != gtf_Color.b) result = black; + if(m[1][0] != gtf_Color.r) result = black; + if(m[1][1] != gtf_Color.g) result = black; + if(m[1][2] != gtf_Color.b) result = black; + if(m[2][0] != gtf_Color.r) result = black; + if(m[2][1] != gtf_Color.g) result = black; + if(m[2][2] != gtf_Color.b) result = black; + + color = result; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_copy_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_copy_frag.frag new file mode 100644 index 00000000000..b2650591c54 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_copy_frag.frag @@ -0,0 +1,83 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +/* This epsilon will work as long as the magnitude of the float is < 128. + * This can be seen by taking the spec relative mediump precision of 2^-10: + * 0.125 / 2^-10 = 128 + */ +#define ERROR_EPSILON (0.125) + +void main (void) +{ + float x; + // Declare a 3 by 3 matrix with unique elements. + mat3 a = mat3( 1.0, 2.0, 3.0, + 4.0, 5.0, 6.0, + 7.0, 8.0, 9.0); + + // Copy the matrix to another non-const matrix. + mat3 b = a; + + // Check each element of the copy. + bool elms = true; + if(b[0][0] != 1.0) elms = false; + if(b[0][1] != 2.0) elms = false; + if(b[0][2] != 3.0) elms = false; + if(b[1][0] != 4.0) elms = false; + if(b[1][1] != 5.0) elms = false; + if(b[1][2] != 6.0) elms = false; + if(b[2][0] != 7.0) elms = false; + if(b[2][1] != 8.0) elms = false; + if(b[2][2] != 9.0) elms = false; + + // Add up each row of the copy. + bool rows = true; + x = b[0][0] + b[1][0] + b[2][0]; + if( x < 12.0-ERROR_EPSILON || x > 12.0+ERROR_EPSILON ) rows = false; + x = b[0][1] + b[1][1] + b[2][1]; + if(x < 15.0-ERROR_EPSILON || x > 15.0+ERROR_EPSILON ) rows = false; + x = b[0][2] + b[1][2] + b[2][2]; + if(x < 18.0-ERROR_EPSILON || x > 18.0+ERROR_EPSILON ) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = b[0][0] + b[0][1] + b[0][2]; + if( x < 6.0-ERROR_EPSILON || x > 6.0+ERROR_EPSILON ) cols = false; + x = b[1][0] + b[1][1] + b[1][2]; + if(x < 15.0-ERROR_EPSILON || x > 15.0+ERROR_EPSILON) cols = false; + x = b[2][0] + b[2][1] + b[2][2]; + if(x < 24.0-ERROR_EPSILON || x > 24.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the fragment color. + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_copy_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_copy_vert.vert new file mode 100644 index 00000000000..a1c96502a9f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_copy_vert.vert @@ -0,0 +1,82 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + float x; + // Declare a 3 by 3 matrix with unique elements. + mat3 a = mat3( 1.0, 2.0, 4.0, // 1.0 8.0 64.0 + 8.0, 16.0, 32.0, // 2.0 16.0 128.0 + 64.0, 128.0, 256.0); // 4.0 32.0 256.0 + + // Copy the matrix to another non-const matrix. + mat3 b = a; + + // Check each element of the copy. + bool elms = true; + if(b[0][0] != 1.0) elms = false; + if(b[0][1] != 2.0) elms = false; + if(b[0][2] != 4.0) elms = false; + if(b[1][0] != 8.0) elms = false; + if(b[1][1] != 16.0) elms = false; + if(b[1][2] != 32.0) elms = false; + if(b[2][0] != 64.0) elms = false; + if(b[2][1] != 128.0) elms = false; + if(b[2][2] != 256.0) elms = false; + + // Add up each row of the copy. + bool rows = true; + x = b[0][0] + b[1][0] + b[2][0]; + if( x < 73.0-ERROR_EPSILON || x > 73.0+ERROR_EPSILON ) rows = false; + x = b[0][1] + b[1][1] + b[2][1]; + if(x < 146.0-ERROR_EPSILON || x > 146.0+ERROR_EPSILON ) rows = false; + x = b[0][2] + b[1][2] + b[2][2]; + if(x < 292.0-ERROR_EPSILON || x > 292.0+ERROR_EPSILON ) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = b[0][0] + b[0][1] + b[0][2]; + if( x < 7.0-ERROR_EPSILON || x > 7.0+ERROR_EPSILON ) cols = false; + x = b[1][0] + b[1][1] + b[1][2]; + if(x < 56.0-ERROR_EPSILON || x > 56.0+ERROR_EPSILON) cols = false; + x = b[2][0] + b[2][1] + b[2][2]; + if(x < 448.0-ERROR_EPSILON || x > 448.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the varying variable color. + color = vec4(gray, gray, gray, 1.0); + + // Transform the vertex position. + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_float_frag.frag new file mode 100644 index 00000000000..bd62d0e462a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_float_frag.frag @@ -0,0 +1,59 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + mat3 m = mat3(0.5); + vec4 black = vec4(0.0, 0.0, 0.0, 1.0); + vec4 result = vec4(1.0, 1.0, 1.0, 1.0); + + if((m[0][0] != 0.5)) + result = black; + if((m[0][1] != 0.0)) + result = black; + if((m[0][2] != 0.0)) + result = black; + + if((m[1][0] != 0.0)) + result = black; + if((m[1][1] != 0.5)) + result = black; + if((m[1][2] != 0.0)) + result = black; + + if((m[2][0] != 0.0)) + result = black; + if((m[2][1] != 0.0)) + result = black; + if((m[2][2] != 0.5)) + result = black; + + gl_FragColor = result; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_float_vert.vert new file mode 100644 index 00000000000..f42f47763c9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_float_vert.vert @@ -0,0 +1,59 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + mat3 m = mat3(0.5); + vec4 black = vec4(0.0, 0.0, 0.0, 1.0); + vec4 result = vec4(1.0, 1.0, 1.0, 1.0); + + if((m[0][0] != 0.5)) + result = black; + if((m[0][1] != 0.0)) + result = black; + if((m[0][2] != 0.0)) + result = black; + + if((m[1][0] != 0.0)) + result = black; + if((m[1][1] != 0.5)) + result = black; + if((m[1][2] != 0.0)) + result = black; + + if((m[2][0] != 0.0)) + result = black; + if((m[2][1] != 0.0)) + result = black; + if((m[2][2] != 0.5)) + result = black; + + color = result; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_frag.frag new file mode 100644 index 00000000000..29913992c54 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_frag.frag @@ -0,0 +1,80 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +/* This epsilon will work as long as the magnitude of the float is < 128. + * This can be seen by taking the spec relative mediump precision of 2^-10: + * 0.125 / 2^-10 = 128 + */ +#define ERROR_EPSILON (0.125) + +void main (void) +{ + float x; + // Declare a 3 by 3 matrix with unique elements. + mat3 a = mat3( 1.0, 2.0, 3.0, + 4.0, 5.0, 6.0, + 7.0, 8.0, 9.0); + + // Check each element. + bool elms = true; + if(a[0][0] != 1.0) elms = false; + if(a[0][1] != 2.0) elms = false; + if(a[0][2] != 3.0) elms = false; + if(a[1][0] != 4.0) elms = false; + if(a[1][1] != 5.0) elms = false; + if(a[1][2] != 6.0) elms = false; + if(a[2][0] != 7.0) elms = false; + if(a[2][1] != 8.0) elms = false; + if(a[2][2] != 9.0) elms = false; + + // Add up each row. + bool rows = true; + x = a[0][0] + a[1][0] + a[2][0]; + if( x < 12.0-ERROR_EPSILON || x > 12.0+ERROR_EPSILON ) rows = false; + x = a[0][1] + a[1][1] + a[2][1]; + if(x < 15.0-ERROR_EPSILON || x > 15.0+ERROR_EPSILON ) rows = false; + x = a[0][2] + a[1][2] + a[2][2]; + if(x < 18.0-ERROR_EPSILON || x > 18.0+ERROR_EPSILON ) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = a[0][0] + a[0][1] + a[0][2]; + if( x < 6.0-ERROR_EPSILON || x > 6.0+ERROR_EPSILON ) cols = false; + x = a[1][0] + a[1][1] + a[1][2]; + if(x < 15.0-ERROR_EPSILON || x > 15.0+ERROR_EPSILON) cols = false; + x = a[2][0] + a[2][1] + a[2][2]; + if(x < 24.0-ERROR_EPSILON || x > 24.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the fragment color. + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_vert.vert new file mode 100644 index 00000000000..70588d0aa66 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat3_vert.vert @@ -0,0 +1,79 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + float x; + // Declare a 3 by 3 matrix with unique elements. + mat3 a = mat3( 1.0, 2.0, 4.0, // 1.0 8.0 64.0 + 8.0, 16.0, 32.0, // 2.0 16.0 128.0 + 64.0, 128.0, 256.0); // 4.0 32.0 256.0 + + // Check each element. + bool elms = true; + if(a[0][0] != 1.0) elms = false; + if(a[0][1] != 2.0) elms = false; + if(a[0][2] != 4.0) elms = false; + if(a[1][0] != 8.0) elms = false; + if(a[1][1] != 16.0) elms = false; + if(a[1][2] != 32.0) elms = false; + if(a[2][0] != 64.0) elms = false; + if(a[2][1] != 128.0) elms = false; + if(a[2][2] != 256.0) elms = false; + + // Add up each row. + bool rows = true; + x = a[0][0] + a[1][0] + a[2][0]; + if( x < 73.0-ERROR_EPSILON || x > 73.0+ERROR_EPSILON ) rows = false; + x = a[0][1] + a[1][1] + a[2][1]; + if(x < 146.0-ERROR_EPSILON || x > 146.0+ERROR_EPSILON ) rows = false; + x = a[0][2] + a[1][2] + a[2][2]; + if(x < 292.0-ERROR_EPSILON || x > 292.0+ERROR_EPSILON ) rows = false; + + // Add up each column. + bool cols = true; + x = a[0][0] + a[0][1] + a[0][2]; + if( x < 7.0-ERROR_EPSILON || x > 7.0+ERROR_EPSILON ) cols = false; + x = a[1][0] + a[1][1] + a[1][2]; + if(x < 56.0-ERROR_EPSILON || x > 56.0+ERROR_EPSILON) cols = false; + x = a[2][0] + a[2][1] + a[2][2]; + if(x < 448.0-ERROR_EPSILON || x > 448.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the varying variable color. + color = vec4(gray, gray, gray, 1.0); + + // Transform the vertex position. + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_16float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_16float_frag.frag new file mode 100644 index 00000000000..7440e65cf07 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_16float_frag.frag @@ -0,0 +1,74 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +/* This epsilon will work as long as the magnitude of the float is < 128. + * This can be seen by taking the spec relative mediump precision of 2^-10: + * 0.125 / 2^-10 = 128 + */ +#define ERROR_EPSILON (0.125) + +void main (void) +{ + mat4 a = mat4( 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0); + float gray,sum1=0.0,sum2=0.0,sum3=0.0,sum4=0.0; + int i; + + + sum1 += a[0][0]; + sum2 += a[1][0]; + sum3 += a[2][0]; + sum4 += a[3][0]; + + sum1 += a[0][1]; + sum2 += a[1][1]; + sum3 += a[2][1]; + sum4 += a[3][1]; + + sum1 += a[0][2]; + sum2 += a[1][2]; + sum3 += a[2][2]; + sum4 += a[3][2]; + + sum1 += a[0][3]; + sum2 += a[1][3]; + sum3 += a[2][3]; + sum4 += a[3][3]; + + if( ( sum1 > 10.0-ERROR_EPSILON && sum1 < 10.0+ERROR_EPSILON ) && + ( sum2 > 26.0-ERROR_EPSILON && sum2 < 26.0+ERROR_EPSILON) && + ( sum3 > 42.0-ERROR_EPSILON && sum3 < 42.0+ERROR_EPSILON) && + ( sum4 > 58.0-ERROR_EPSILON && sum4 < 58.0+ERROR_EPSILON) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_16float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_16float_vert.vert new file mode 100644 index 00000000000..485085355a8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_16float_vert.vert @@ -0,0 +1,71 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + mat4 a = mat4(1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0); + + float gray,sum1=0.0,sum2=0.0,sum3=0.0,sum4=0.0; + int i; + + sum1 = sum1 + a[0][0]; + sum2 = sum2 + a[1][0]; + sum3 = sum3 + a[2][0]; + sum4 = sum4 + a[3][0]; + + sum1 = sum1 + a[0][1]; + sum2 = sum2 + a[1][1]; + sum3 = sum3 + a[2][1]; + sum4 = sum4 + a[3][1]; + + sum1 = sum1 + a[0][2]; + sum2 = sum2 + a[1][2]; + sum3 = sum3 + a[2][2]; + sum4 = sum4 + a[3][2]; + + sum1 = sum1 + a[0][3]; + sum2 = sum2 + a[1][3]; + sum3 = sum3 + a[2][3]; + sum4 = sum4 + a[3][3]; + + if( ( sum1 > 10.0-ERROR_EPSILON && sum1 < 10.0+ERROR_EPSILON ) && + ( sum2 > 26.0-ERROR_EPSILON && sum2 < 26.0+ERROR_EPSILON) && + ( sum3 > 42.0-ERROR_EPSILON && sum3 < 42.0+ERROR_EPSILON) && + ( sum4 > 58.0-ERROR_EPSILON && sum4 < 58.0+ERROR_EPSILON) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_4vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_4vec4_frag.frag new file mode 100644 index 00000000000..44b425a4150 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_4vec4_frag.frag @@ -0,0 +1,76 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +/* This epsilon will work as long as the magnitude of the float is < 128. + * This can be seen by taking the spec relative mediump precision of 2^-10: + * 0.125 / 2^-10 = 128 + */ +#define ERROR_EPSILON (0.125) + +void main (void) +{ + vec4 L1 = vec4(1.0, 2.0, 3.0, 4.0); + vec4 L2 = vec4(5.0, 6.0, 7.0, 8.0); + vec4 L3 = vec4(9.0, 10.0, 11.0, 12.0); + vec4 L4 = vec4(13.0, 14.0, 15.0, 16.0); + + mat4 a = mat4(L1,L2,L3,L4); + + float gray,sum1=0.0,sum2=0.0,sum3=0.0,sum4=0.0; + int i; + + sum1 = sum1 + a[0][0]; + sum2 = sum2 + a[1][0]; + sum3 = sum3 + a[2][0]; + sum4 = sum4 + a[3][0]; + + sum1 = sum1 + a[0][1]; + sum2 = sum2 + a[1][1]; + sum3 = sum3 + a[2][1]; + sum4 = sum4 + a[3][1]; + + sum1 = sum1 + a[0][2]; + sum2 = sum2 + a[1][2]; + sum3 = sum3 + a[2][2]; + sum4 = sum4 + a[3][2]; + + sum1 = sum1 + a[0][3]; + sum2 = sum2 + a[1][3]; + sum3 = sum3 + a[2][3]; + sum4 = sum4 + a[3][3]; + + if( ( sum1 > 10.0-ERROR_EPSILON && sum1 < 10.0+ERROR_EPSILON ) && + ( sum2 > 26.0-ERROR_EPSILON && sum2 < 26.0+ERROR_EPSILON) && + ( sum3 > 42.0-ERROR_EPSILON && sum3 < 42.0+ERROR_EPSILON) && + ( sum4 > 58.0-ERROR_EPSILON && sum4 < 58.0+ERROR_EPSILON) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_4vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_4vec4_vert.vert new file mode 100644 index 00000000000..77dce5eb860 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_4vec4_vert.vert @@ -0,0 +1,73 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + vec4 L1 = vec4(1.0, 2.0, 3.0, 4.0); + vec4 L2 = vec4(5.0, 6.0, 7.0, 8.0); + vec4 L3 = vec4(9.0, 10.0, 11.0, 12.0); + vec4 L4 = vec4(13.0, 14.0, 15.0, 16.0); + + mat4 a = mat4(L1,L2,L3,L4); + + float gray,sum1=0.0,sum2=0.0,sum3=0.0,sum4=0.0; + int i; + + sum1 = sum1 + a[0][0]; + sum2 = sum2 + a[1][0]; + sum3 = sum3 + a[2][0]; + sum4 = sum4 + a[3][0]; + + sum1 = sum1 + a[0][1]; + sum2 = sum2 + a[1][1]; + sum3 = sum3 + a[2][1]; + sum4 = sum4 + a[3][1]; + + sum1 = sum1 + a[0][2]; + sum2 = sum2 + a[1][2]; + sum3 = sum3 + a[2][2]; + sum4 = sum4 + a[3][2]; + + sum1 = sum1 + a[0][3]; + sum2 = sum2 + a[1][3]; + sum3 = sum3 + a[2][3]; + sum4 = sum4 + a[3][3]; + + if( ( sum1 > 10.0-ERROR_EPSILON && sum1 < 10.0+ERROR_EPSILON ) && + ( sum2 > 26.0-ERROR_EPSILON && sum2 < 26.0+ERROR_EPSILON) && + ( sum3 > 42.0-ERROR_EPSILON && sum3 < 42.0+ERROR_EPSILON) && + ( sum4 > 58.0-ERROR_EPSILON && sum4 < 58.0+ERROR_EPSILON) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_copy_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_copy_frag.frag new file mode 100644 index 00000000000..340fc51b5fa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_copy_frag.frag @@ -0,0 +1,95 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +/* This epsilon will work as long as the magnitude of the float is < 128. + * This can be seen by taking the spec relative mediump precision of 2^-10: + * 0.125 / 2^-10 = 128 + */ +#define ERROR_EPSILON (0.125) + +void main (void) +{ + float x; + // Declare a constant 4 by 4 matrix with unique elements. + mat4 a = mat4( 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0); + + // Copy the matrix to another non-const matrix. + mat4 b = a; + + // Check each element of the copy. + bool elms = true; + if(b[0][0] != 1.0) elms = false; + if(b[0][1] != 2.0) elms = false; + if(b[0][2] != 3.0) elms = false; + if(b[0][3] != 4.0) elms = false; + if(b[1][0] != 5.0) elms = false; + if(b[1][1] != 6.0) elms = false; + if(b[1][2] != 7.0) elms = false; + if(b[1][3] != 8.0) elms = false; + if(b[2][0] != 9.0) elms = false; + if(b[2][1] != 10.0) elms = false; + if(b[2][2] != 11.0) elms = false; + if(b[2][3] != 12.0) elms = false; + if(b[3][0] != 13.0) elms = false; + if(b[3][1] != 14.0) elms = false; + if(b[3][2] != 15.0) elms = false; + if(b[3][3] != 16.0) elms = false; + + // Add up each row of the copy. + bool rows = true; + x = b[0][0] + b[1][0] + b[2][0] + b[3][0]; + if(x < 28.0-ERROR_EPSILON || x > 28.0+ERROR_EPSILON) rows = false; + x = b[0][1] + b[1][1] + b[2][1] + b[3][1]; + if(x < 32.0-ERROR_EPSILON || x > 32.0+ERROR_EPSILON) rows = false; + x = b[0][2] + b[1][2] + b[2][2] + b[3][2]; + if(x < 36.0-ERROR_EPSILON || x > 36.0+ERROR_EPSILON) rows = false; + x = b[0][3] + b[1][3] + b[2][3] + b[3][3]; + if(x < 40.0-ERROR_EPSILON || x > 40.0+ERROR_EPSILON) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = b[0][0] + b[0][1] + b[0][2] + b[0][3]; + if(x < 10.0-ERROR_EPSILON || x > 10.0+ERROR_EPSILON) cols = false; + x = b[1][0] + b[1][1] + b[1][2] + b[1][3]; + if(x < 26.0-ERROR_EPSILON || x > 26.0+ERROR_EPSILON) cols = false; + x = b[2][0] + b[2][1] + b[2][2] + b[2][3]; + if(x < 42.0-ERROR_EPSILON || x > 42.0+ERROR_EPSILON) cols = false; + x = b[3][0] + b[3][1] + b[3][2] + b[3][3]; + if(x < 58.0-ERROR_EPSILON || x > 58.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the fragment color. + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_copy_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_copy_vert.vert new file mode 100644 index 00000000000..ee5c07864c7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_copy_vert.vert @@ -0,0 +1,94 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + float x; + // Declare a 4 by 4 matrix with unique elements. + mat4 a = mat4( 1.0, 2.0, 4.0, 8.0, // 1.0 16.0 256.0 4096.0 + 16.0, 32.0, 64.0, 128.0, // 2.0 32.0 512.0 8192.0 + 256.0, 512.0, 1024.0, 2048.0, // 4.0 64.0 1024.0 16384.0 + 4096.0, 8192.0, 16384.0, 32768.0); // 8.0 128.0 2048.0 32768.0 + + // Copy the matrix to another non-const matrix. + mat4 b = a; + + // Check each element of the copy. + bool elms = true; + if(b[0][0] != 1.0) elms = false; + if(b[0][1] != 2.0) elms = false; + if(b[0][2] != 4.0) elms = false; + if(b[0][3] != 8.0) elms = false; + if(b[1][0] != 16.0) elms = false; + if(b[1][1] != 32.0) elms = false; + if(b[1][2] != 64.0) elms = false; + if(b[1][3] != 128.0) elms = false; + if(b[2][0] != 256.0) elms = false; + if(b[2][1] != 512.0) elms = false; + if(b[2][2] != 1024.0) elms = false; + if(b[2][3] != 2048.0) elms = false; + if(b[3][0] != 4096.0) elms = false; + if(b[3][1] != 8192.0) elms = false; + if(b[3][2] != 16384.0) elms = false; + if(b[3][3] != 32768.0) elms = false; + + // Add up each row of the copy. + bool rows = true; + x = b[0][0] + b[1][0] + b[2][0] + b[3][0]; + if(x < 4369.0-ERROR_EPSILON || x > 4369.0+ERROR_EPSILON) rows = false; + x = b[0][1] + b[1][1] + b[2][1] + b[3][1]; + if(x < 8738.0-ERROR_EPSILON || x > 8738.0+ERROR_EPSILON) rows = false; + x = b[0][2] + b[1][2] + b[2][2] + b[3][2]; + if(x < 17476.0-ERROR_EPSILON || x > 17476.0+ERROR_EPSILON) rows = false; + x = b[0][3] + b[1][3] + b[2][3] + b[3][3]; + if(x < 34952.0-ERROR_EPSILON || x > 34952.0+ERROR_EPSILON) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = b[0][0] + b[0][1] + b[0][2] + b[0][3]; + if(x < 15.0-ERROR_EPSILON || x > 15.0+ERROR_EPSILON) cols = false; + x = b[1][0] + b[1][1] + b[1][2] + b[1][3]; + if(x < 240.0-ERROR_EPSILON || x > 240.0+ERROR_EPSILON) cols = false; + x = b[2][0] + b[2][1] + b[2][2] + b[2][3]; + if(x < 3840.0-ERROR_EPSILON || x > 3840.0+ERROR_EPSILON) cols = false; + x = b[3][0] + b[3][1] + b[3][2] + b[3][3]; + if(x < 61440.0-ERROR_EPSILON || x > 61440.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the varying variable color. + color = vec4(gray, gray, gray, 1.0); + + // Transform the vertex position. + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_frag.frag new file mode 100644 index 00000000000..590852b8017 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_frag.frag @@ -0,0 +1,92 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +/* This epsilon will work as long as the magnitude of the float is < 128. + * This can be seen by taking the spec relative mediump precision of 2^-10: + * 0.125 / 2^-10 = 128 + */ +#define ERROR_EPSILON (0.125) + +void main (void) +{ + float x; + // Declare a 4 by 4 matrix with unique elements. + mat4 a = mat4( 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0); + + // Check each element. + bool elms = true; + if(a[0][0] != 1.0) elms = false; + if(a[0][1] != 2.0) elms = false; + if(a[0][2] != 3.0) elms = false; + if(a[0][3] != 4.0) elms = false; + if(a[1][0] != 5.0) elms = false; + if(a[1][1] != 6.0) elms = false; + if(a[1][2] != 7.0) elms = false; + if(a[1][3] != 8.0) elms = false; + if(a[2][0] != 9.0) elms = false; + if(a[2][1] != 10.0) elms = false; + if(a[2][2] != 11.0) elms = false; + if(a[2][3] != 12.0) elms = false; + if(a[3][0] != 13.0) elms = false; + if(a[3][1] != 14.0) elms = false; + if(a[3][2] != 15.0) elms = false; + if(a[3][3] != 16.0) elms = false; + + // Add up each row. + bool rows = true; + x = a[0][0] + a[1][0] + a[2][0] + a[3][0]; + if(x < 28.0-ERROR_EPSILON || x > 28.0+ERROR_EPSILON) rows = false; + x = a[0][1] + a[1][1] + a[2][1] + a[3][1]; + if(x < 32.0-ERROR_EPSILON || x > 32.0+ERROR_EPSILON) rows = false; + x = a[0][2] + a[1][2] + a[2][2] + a[3][2]; + if(x < 36.0-ERROR_EPSILON || x > 36.0+ERROR_EPSILON) rows = false; + x = a[0][3] + a[1][3] + a[2][3] + a[3][3]; + if(x < 40.0-ERROR_EPSILON || x > 40.0+ERROR_EPSILON) rows = false; + + // Add up each column of the copy. + bool cols = true; + x = a[0][0] + a[0][1] + a[0][2] + a[0][3]; + if(x < 10.0-ERROR_EPSILON || x > 10.0+ERROR_EPSILON) cols = false; + x = a[1][0] + a[1][1] + a[1][2] + a[1][3]; + if(x < 26.0-ERROR_EPSILON || x > 26.0+ERROR_EPSILON) cols = false; + x = a[2][0] + a[2][1] + a[2][2] + a[2][3]; + if(x < 42.0-ERROR_EPSILON || x > 42.0+ERROR_EPSILON) cols = false; + x = a[3][0] + a[3][1] + a[3][2] + a[3][3]; + if(x < 58.0-ERROR_EPSILON || x > 58.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the fragment color. + gl_FragColor = vec4(gray, gray, gray, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_vert.vert new file mode 100644 index 00000000000..910729c2bd5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat4_vert.vert @@ -0,0 +1,91 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + float x; + // Declare a 4 by 4 matrix with unique elements. + mat4 a = mat4( 1.0, 2.0, 4.0, 8.0, // 1.0 16.0 256.0 4096.0 + 16.0, 32.0, 64.0, 128.0, // 2.0 32.0 512.0 8192.0 + 256.0, 512.0, 1024.0, 2048.0, // 4.0 64.0 1024.0 16384.0 + 4096.0, 8192.0, 16384.0, 32768.0); // 8.0 128.0 2048.0 32768.0 + + // Check each element. + bool elms = true; + if(a[0][0] != 1.0) elms = false; + if(a[0][1] != 2.0) elms = false; + if(a[0][2] != 4.0) elms = false; + if(a[0][3] != 8.0) elms = false; + if(a[1][0] != 16.0) elms = false; + if(a[1][1] != 32.0) elms = false; + if(a[1][2] != 64.0) elms = false; + if(a[1][3] != 128.0) elms = false; + if(a[2][0] != 256.0) elms = false; + if(a[2][1] != 512.0) elms = false; + if(a[2][2] != 1024.0) elms = false; + if(a[2][3] != 2048.0) elms = false; + if(a[3][0] != 4096.0) elms = false; + if(a[3][1] != 8192.0) elms = false; + if(a[3][2] != 16384.0) elms = false; + if(a[3][3] != 32768.0) elms = false; + + // Add up each row. + bool rows = true; + x = a[0][0] + a[1][0] + a[2][0] + a[3][0]; + if(x < 4369.0-ERROR_EPSILON || x > 4369.0+ERROR_EPSILON) rows = false; + x = a[0][1] + a[1][1] + a[2][1] + a[3][1]; + if(x < 8738.0-ERROR_EPSILON || x > 8738.0+ERROR_EPSILON) rows = false; + x = a[0][2] + a[1][2] + a[2][2] + a[3][2]; + if(x < 17476.0-ERROR_EPSILON || x > 17476.0+ERROR_EPSILON) rows = false; + x = a[0][3] + a[1][3] + a[2][3] + a[3][3]; + if(x < 34952.0-ERROR_EPSILON || x > 34952.0+ERROR_EPSILON) rows = false; + + // Add up each column. + bool cols = true; + x = a[0][0] + a[0][1] + a[0][2] + a[0][3]; + if(x < 15.0-ERROR_EPSILON || x > 15.0+ERROR_EPSILON) cols = false; + x = a[1][0] + a[1][1] + a[1][2] + a[1][3]; + if(x < 240.0-ERROR_EPSILON || x > 240.0+ERROR_EPSILON) cols = false; + x = a[2][0] + a[2][1] + a[2][2] + a[2][3]; + if(x < 3840.0-ERROR_EPSILON || x > 3840.0+ERROR_EPSILON) cols = false; + x = a[3][0] + a[3][1] + a[3][2] + a[3][3]; + if(x < 61440.0-ERROR_EPSILON || x > 61440.0+ERROR_EPSILON) cols = false; + + // Check if all of the operations were successful. + float gray = elms && rows && cols ? 1.0 : 0.0; + + // Assign the varying variable color. + color = vec4(gray, gray, gray, 1.0); + + // Transform the vertex position. + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_001_to_008.html new file mode 100644 index 00000000000..2010cbe02ca --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_001_to_008.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: mat_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_009_to_016.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_009_to_016.html new file mode 100644 index 00000000000..0d73540a867 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_009_to_016.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: mat_009_to_016.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_017_to_024.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_017_to_024.html new file mode 100644 index 00000000000..2e3a4867655 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_017_to_024.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: mat_017_to_024.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_025_to_032.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_025_to_032.html new file mode 100644 index 00000000000..8862968e9ac --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_025_to_032.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: mat_025_to_032.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_033_to_040.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_033_to_040.html new file mode 100644 index 00000000000..66267c5343d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_033_to_040.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: mat_033_to_040.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_041_to_046.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_041_to_046.html new file mode 100644 index 00000000000..42616f0bfee --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat/mat_041_to_046.html @@ -0,0 +1,203 @@ + + + + + +WebGL GLSL conformance test: mat_041_to_046.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/input.run.txt new file mode 100644 index 00000000000..f79e127c276 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +mat3_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3_001_to_006.html new file mode 100644 index 00000000000..60f52259337 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3_001_to_006.html @@ -0,0 +1,365 @@ + + + + + +WebGL GLSL conformance test: mat3_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect0_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect0_frag.frag new file mode 100644 index 00000000000..47dc75b7149 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect0_frag.frag @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// +// mat3arrayindirect0_frag.frag: Fragment shader solid color +// The vec3 values are determined at runtime. +// +// + +uniform mat3 testmat3[2]; +varying vec4 color; + +void main(void) +{ + vec3 result = vec3(0.0, 0.0, 0.0); + + /* + // No indirect indexing in fragment shaders + for(int j = 0; j < 3; j++) + { + result += testmat3[0][j] + testmat3[1][j]; + } + */ + result += testmat3[0][0] + testmat3[1][0]; + result += testmat3[0][1] + testmat3[1][1]; + result += testmat3[0][2] + testmat3[1][2]; + gl_FragColor = vec4(result/2.0, 0.5); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect0_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect0_vert.vert new file mode 100644 index 00000000000..b9427ba037d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect0_vert.vert @@ -0,0 +1,52 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +// +// mat3arrayindirect0_vert.vert: Vertex shader solid color +// The vec3 values are determined at runtime. +// +// + +uniform mat3 testmat3[2]; +varying vec4 color; + + +void main(void) +{ + vec3 result = vec3(0.0, 0.0, 0.0); + + for(int j = 0; j < 3; j++) + { + result += testmat3[0][j] + testmat3[1][j]; + } + + color = vec4(result/2.0, 0.5); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + + +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect1_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect1_frag.frag new file mode 100644 index 00000000000..ec4c4a927d2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect1_frag.frag @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// +// mat3arrayindirect1_frag.frag: Fragment shader solid color testing indirect referencing into uniforms +// The vec3 values are determined at runtime. +// +// + +uniform mat3 testmat3[2]; +varying vec4 color; + +void main(void) +{ + vec3 result = vec3(0.0, 0.0, 0.0); + + /* + // No indirect indexing in fragment shaders + for(int j = 0; j < 3; j++) + { + result += testmat3[1][j]; + } +*/ + result += testmat3[1][0]; + result += testmat3[1][1]; + result += testmat3[1][2]; + gl_FragColor = vec4(result/2.0, 0.5); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect1_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect1_vert.vert new file mode 100644 index 00000000000..324366803a3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arrayindirect1_vert.vert @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +// +// mat3arrayindirect1_vert.vert: Vertex shader solid color testing indirect referencing into uniforms +// The vec3 values are determined at runtime. +// +// + +uniform mat3 testmat3[2]; +varying vec4 color; + + +void main(void) +{ + vec3 result = vec3(0.0, 0.0, 0.0); + + for(int j = 0; j < 3; j++) + { + result += testmat3[1][j]; + } + + + color = vec4(result/2.0, 0.5); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + + +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arraysimple_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arraysimple_frag.frag new file mode 100644 index 00000000000..7bca3f11ea5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arraysimple_frag.frag @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// mat3arraysimple_frag.frag: Fragment shader solid color testing indirect referencing into uniforms +// The vec3 values are determined at runtime. +// +// + +uniform mat3 testmat3[2]; +varying vec4 color; + +void main(void) +{ + vec3 result = vec3(0.0, 0.0, 0.0); + + result = testmat3[1][0] + testmat3[1][1] + testmat3[1][2]; + gl_FragColor = vec4(result/2.0, 0.5); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arraysimple_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arraysimple_vert.vert new file mode 100644 index 00000000000..ad39bd0d63b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mat3/mat3arraysimple_vert.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +// +// mat3arraysimple_vert.vert: Vertex shader solid color testing indirect referencing into uniforms +// The vec3 values are determined at runtime. +// +// + +uniform mat3 testmat3[2]; +varying vec4 color; + + +void main(void) +{ + vec3 result = vec3(0.0, 0.0, 0.0); + + result = testmat3[1][0] + testmat3[1][1] + testmat3[1][2]; + + color = vec4(result/2.0, 0.5); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + + +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/input.run.txt new file mode 100644 index 00000000000..91d20c86eb8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +matrixCompMult_001_to_004.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixCompMult_001_to_004.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixCompMult_001_to_004.html new file mode 100644 index 00000000000..bacbc87b421 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixCompMult_001_to_004.html @@ -0,0 +1,105 @@ + + + + + +WebGL GLSL conformance test: matrixCompMult_001_to_004.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_frag.frag new file mode 100644 index 00000000000..8db7ddf3df3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + mat2 m1 = mat2(color.rg, color.ba); + mat2 m2 = mat2(1.0, 0.5, 0.5, 1.0); + mat2 m3 = mat2(0.0); + + m3 = matrixCompMult(m1, m2); + gl_FragColor = vec4(m3[0][0], m3[1][0], m3[0][1], m3[1][1]); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_frag_ref.frag new file mode 100644 index 00000000000..fed33bea1af --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_frag_ref.frag @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + mat2 m1 = mat2(color.rg, color.ba); + mat2 m2 = mat2(1.0, 0.5, 0.5, 1.0); + mat2 m3 = mat2(0.0); + + m3[0][0] = m1[0][0] * m2[0][0]; + m3[0][1] = m1[0][1] * m2[0][1]; + m3[1][0] = m1[1][0] * m2[1][0]; + m3[1][1] = m1[1][1] * m2[1][1]; + + gl_FragColor = vec4(m3[0][0], m3[1][0], m3[0][1], m3[1][1]); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_vert.vert new file mode 100644 index 00000000000..e912de35c85 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + mat2 m1 = mat2(gtf_Color.r, gtf_Color.g, gtf_Color.b, gtf_Color.a); + mat2 m2 = mat2(1.0, 0.5, 0.5, 1.0); + mat2 m3 = mat2(0.0); + + m3 = matrixCompMult(m1, m2); + color = vec4(m3[0][0], m3[1][0], m3[0][1], m3[1][1]); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_vert_ref.vert new file mode 100644 index 00000000000..cda02927d1b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat2_vert_ref.vert @@ -0,0 +1,44 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + mat2 m1 = mat2(gtf_Color.r, gtf_Color.g, gtf_Color.b, gtf_Color.a); + mat2 m2 = mat2(1.0, 0.5, 0.5, 1.0); + mat2 m3 = mat2(0.0); + + m3[0][0] = m1[0][0] * m2[0][0]; + m3[0][1] = m1[0][1] * m2[0][1]; + m3[1][0] = m1[1][0] * m2[1][0]; + m3[1][1] = m1[1][1] * m2[1][1]; + + color = vec4(m3[0][0], m3[1][0], m3[0][1], m3[1][1]); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_frag.frag new file mode 100644 index 00000000000..9392716ddb4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_frag.frag @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + mat3 m1 = mat3(color.rgb, color.rgb, color.rgb); + mat3 m2 = mat3(1.0, 0.5, 0.5, 0.5, 1.0, 0.5, 0.5, 0.5, 1.0); + mat3 m3 = mat3(0.0); + vec3 result = vec3(0.0, 0.0, 0.0); + + m3 = matrixCompMult(m1, m2); + + result[0] += m3[0][0]; + result[0] += m3[0][1]; + result[0] += m3[0][2]; + + result[1] += m3[1][0]; + result[1] += m3[1][1]; + result[1] += m3[1][2]; + + result[2] += m3[2][0]; + result[2] += m3[2][1]; + result[2] += m3[2][2]; + + gl_FragColor = vec4(result / 2.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_frag_ref.frag new file mode 100644 index 00000000000..21365a0dcc6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_frag_ref.frag @@ -0,0 +1,59 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + mat3 m1 = mat3(color.rgb, color.rgb, color.rgb); + mat3 m2 = mat3(1.0, 0.5, 0.5, 0.5, 1.0, 0.5, 0.5, 0.5, 1.0); + mat3 m3 = mat3(0.0); + vec3 result = vec3(0.0, 0.0, 0.0); + + m3[0][0] = m1[0][0] * m2[0][0]; + m3[0][1] = m1[0][1] * m2[0][1]; + m3[0][2] = m1[0][2] * m2[0][2]; + m3[1][0] = m1[1][0] * m2[1][0]; + m3[1][1] = m1[1][1] * m2[1][1]; + m3[1][2] = m1[1][2] * m2[1][2]; + m3[2][0] = m1[2][0] * m2[2][0]; + m3[2][1] = m1[2][1] * m2[2][1]; + m3[2][2] = m1[2][2] * m2[2][2]; + + result[0] += m3[0][0]; + result[0] += m3[0][1]; + result[0] += m3[0][2]; + result[1] += m3[1][0]; + result[1] += m3[1][1]; + result[1] += m3[1][2]; + result[2] += m3[2][0]; + result[2] += m3[2][1]; + result[2] += m3[2][2]; + + gl_FragColor = vec4(result / 2.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_vert.vert new file mode 100644 index 00000000000..cd4f3187323 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_vert.vert @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + mat3 m1 = mat3(gtf_Color.rgb, gtf_Color.rgb, gtf_Color.rgb); + mat3 m2 = mat3(1.0, 0.5, 0.5, 0.5, 1.0, 0.5, 0.5, 0.5, 1.0); + mat3 m3 = mat3(0.0); + vec3 result = vec3(0.0, 0.0, 0.0); + + m3 = matrixCompMult(m1, m2); + + result[0] += m3[0][0]; + result[0] += m3[0][1]; + result[0] += m3[0][2]; + + result[1] += m3[1][0]; + result[1] += m3[1][1]; + result[1] += m3[1][2]; + + result[2] += m3[2][0]; + result[2] += m3[2][1]; + result[2] += m3[2][2]; + + color = vec4(result / 2.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_vert_ref.vert new file mode 100644 index 00000000000..2288096cb92 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/matrixCompMult/matrixMultComp_mat3_vert_ref.vert @@ -0,0 +1,64 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + mat3 m1 = mat3(gtf_Color.rgb, gtf_Color.rgb, gtf_Color.rgb); + mat3 m2 = mat3(1.0, 0.5, 0.5, 0.5, 1.0, 0.5, 0.5, 0.5, 1.0); + mat3 m3 = mat3(0.0); + vec3 result = vec3(0.0, 0.0, 0.0); + + m3[0][0] = m1[0][0] * m2[0][0]; + m3[0][1] = m1[0][1] * m2[0][1]; + m3[0][2] = m1[0][2] * m2[0][2]; + + m3[1][0] = m1[1][0] * m2[1][0]; + m3[1][1] = m1[1][1] * m2[1][1]; + m3[1][2] = m1[1][2] * m2[1][2]; + + m3[2][0] = m1[2][0] * m2[2][0]; + m3[2][1] = m1[2][1] * m2[2][1]; + m3[2][2] = m1[2][2] * m2[2][2]; + + result[0] += m3[0][0]; + result[0] += m3[0][1]; + result[0] += m3[0][2]; + + result[1] += m3[1][0]; + result[1] += m3[1][1]; + result[1] += m3[1][2]; + + result[2] += m3[2][0]; + result[2] += m3[2][1]; + result[2] += m3[2][2]; + + color = vec4(result / 2.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/input.run.txt new file mode 100644 index 00000000000..552692d6781 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +max_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_001_to_006.html new file mode 100644 index 00000000000..8cc3f478f37 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: max_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_frag_xvary_yconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_frag_xvary_yconsthalf.frag new file mode 100644 index 00000000000..1dc58237564 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_frag_xvary_yconsthalf.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float max_c = 0.5; + float c = color.r; + gl_FragColor = vec4(max(c, max_c), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_frag_xvary_yconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_frag_xvary_yconsthalf_ref.frag new file mode 100644 index 00000000000..44188757ee4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_frag_xvary_yconsthalf_ref.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float max_c = 0.5; + float c = color.r; + if(c < max_c) c = max_c; + + gl_FragColor = vec4(c, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_vert_xvary_yconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_vert_xvary_yconsthalf.vert new file mode 100644 index 00000000000..18df63489a5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_vert_xvary_yconsthalf.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float max_c = 0.5; + float c = gtf_Color.r; + color = vec4(max(c, max_c), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_vert_xvary_yconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_vert_xvary_yconsthalf_ref.vert new file mode 100644 index 00000000000..44602be927b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_float_vert_xvary_yconsthalf_ref.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float max_c = 0.5; + float c = gtf_Color.r; + if(c < max_c) c = max_c; + + color = vec4(c, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_frag_xvary_yconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_frag_xvary_yconsthalf.frag new file mode 100644 index 00000000000..12cccbaf5a2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_frag_xvary_yconsthalf.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec2 max_c = vec2(0.5, 0.5); + vec2 c = color.rg; + gl_FragColor = vec4(max(c, max_c), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_frag_xvary_yconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_frag_xvary_yconsthalf_ref.frag new file mode 100644 index 00000000000..63d52b2ff0c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_frag_xvary_yconsthalf_ref.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec2 max_c = vec2(0.5, 0.5); + vec2 c = color.rg; + if(c[0] < max_c[0]) c[0] = max_c[0]; + if(c[1] < max_c[1]) c[1] = max_c[1]; + + gl_FragColor = vec4(c, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_vert_xvary_yconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_vert_xvary_yconsthalf.vert new file mode 100644 index 00000000000..54a94edf52a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_vert_xvary_yconsthalf.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec2 max_c = vec2(0.5, 0.5); + vec2 c = gtf_Color.rg; + color = vec4(max(c, max_c), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_vert_xvary_yconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_vert_xvary_yconsthalf_ref.vert new file mode 100644 index 00000000000..b8ad06aa831 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec2_vert_xvary_yconsthalf_ref.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec2 max_c = vec2(0.5, 0.5); + vec2 c = gtf_Color.rg; + if(c[0] < max_c[0]) c[0] = max_c[0]; + if(c[1] < max_c[1]) c[1] = max_c[1]; + + color = vec4(c, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_frag_xvary_yconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_frag_xvary_yconsthalf.frag new file mode 100644 index 00000000000..b44d0c85135 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_frag_xvary_yconsthalf.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec3 max_c = vec3(0.5, 0.5, 0.5); + vec3 c = color.rgb; + gl_FragColor = vec4(max(c, max_c), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_frag_xvary_yconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_frag_xvary_yconsthalf_ref.frag new file mode 100644 index 00000000000..d17d8cdea45 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_frag_xvary_yconsthalf_ref.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec3 max_c = vec3(0.5, 0.5, 0.5); + vec3 c = color.rgb; + if(c[0] < max_c[0]) c[0] = max_c[0]; + if(c[1] < max_c[1]) c[1] = max_c[1]; + if(c[2] < max_c[2]) c[2] = max_c[2]; + + gl_FragColor = vec4(c, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_vert_xvary_yconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_vert_xvary_yconsthalf.vert new file mode 100644 index 00000000000..549f510fc31 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_vert_xvary_yconsthalf.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec3 max_c = vec3(0.5, 0.5, 0.5); + vec3 c = gtf_Color.rgb; + color = vec4(max(c, max_c), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_vert_xvary_yconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_vert_xvary_yconsthalf_ref.vert new file mode 100644 index 00000000000..84de202744b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/max/max_vec3_vert_xvary_yconsthalf_ref.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec3 max_c = vec3(0.5, 0.5, 0.5); + vec3 c = gtf_Color.rgb; + if(c[0] < max_c[0]) c[0] = max_c[0]; + if(c[1] < max_c[1]) c[1] = max_c[1]; + if(c[2] < max_c[2]) c[2] = max_c[2]; + + color = vec4(c, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/input.run.txt new file mode 100644 index 00000000000..5c675deae6d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +min_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_001_to_006.html new file mode 100644 index 00000000000..a9dd90c99e9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: min_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_frag_xvary_yconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_frag_xvary_yconsthalf.frag new file mode 100644 index 00000000000..fdc3e23a67d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_frag_xvary_yconsthalf.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float min_c = 0.5; + float c = color.r; + gl_FragColor = vec4(min(c, min_c), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_frag_xvary_yconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_frag_xvary_yconsthalf_ref.frag new file mode 100644 index 00000000000..acf1eebb266 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_frag_xvary_yconsthalf_ref.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float min_c = 0.5; + float c = color.r; + if(c > min_c) c = min_c; + + gl_FragColor = vec4(c, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_vert_xvary_yconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_vert_xvary_yconsthalf.vert new file mode 100644 index 00000000000..b854733dd5b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_vert_xvary_yconsthalf.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float min_c = 0.5; + float c = gtf_Color.r; + color = vec4(min(c, min_c), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_vert_xvary_yconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_vert_xvary_yconsthalf_ref.vert new file mode 100644 index 00000000000..73849e092c5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_float_vert_xvary_yconsthalf_ref.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float min_c = 0.5; + float c = gtf_Color.r; + if(c > min_c) c = min_c; + + color = vec4(c, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_frag_xvary_yconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_frag_xvary_yconsthalf.frag new file mode 100644 index 00000000000..ea5563eb19e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_frag_xvary_yconsthalf.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec2 min_c = vec2(0.5, 0.5); + vec2 c = color.rg; + gl_FragColor = vec4(min(c, min_c), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_frag_xvary_yconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_frag_xvary_yconsthalf_ref.frag new file mode 100644 index 00000000000..82ae1b891ae --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_frag_xvary_yconsthalf_ref.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +varying vec4 color; + +void main (void) +{ + const vec2 min_c = vec2(0.5, 0.5); + vec2 c = color.rg; + if(c[0] > min_c[0]) c[0] = min_c[0]; + if(c[1] > min_c[1]) c[1] = min_c[1]; + + gl_FragColor = vec4(c, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_vert_xvary_yconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_vert_xvary_yconsthalf.vert new file mode 100644 index 00000000000..ae6459783d4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_vert_xvary_yconsthalf.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec2 min_c = vec2(0.5, 0.5); + vec2 c = gtf_Color.rg; + color = vec4(min(c, min_c), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_vert_xvary_yconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_vert_xvary_yconsthalf_ref.vert new file mode 100644 index 00000000000..1f8d54b3a51 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec2_vert_xvary_yconsthalf_ref.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec2 min_c = vec2(0.5, 0.5); + vec2 c = gtf_Color.rg; + if(c[0] > min_c[0]) c[0] = min_c[0]; + if(c[1] > min_c[1]) c[1] = min_c[1]; + + color = vec4(c, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_frag_xvary_yconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_frag_xvary_yconsthalf.frag new file mode 100644 index 00000000000..80232206f99 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_frag_xvary_yconsthalf.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec3 min_c = vec3(0.5, 0.5, 0.5); + vec3 c = color.rgb; + gl_FragColor = vec4(min(c, min_c), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_frag_xvary_yconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_frag_xvary_yconsthalf_ref.frag new file mode 100644 index 00000000000..2432efe93a8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_frag_xvary_yconsthalf_ref.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec3 min_c = vec3(0.5, 0.5, 0.5); + vec3 c = color.rgb; + if(c[0] > min_c[0]) c[0] = min_c[0]; + if(c[1] > min_c[1]) c[1] = min_c[1]; + if(c[2] > min_c[2]) c[2] = min_c[2]; + + gl_FragColor = vec4(c, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_vert_xvary_yconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_vert_xvary_yconsthalf.vert new file mode 100644 index 00000000000..96629e770a5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_vert_xvary_yconsthalf.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec3 min_c = vec3(0.5, 0.5, 0.5); + vec3 c = gtf_Color.rgb; + color = vec4(min(c, min_c), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_vert_xvary_yconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_vert_xvary_yconsthalf_ref.vert new file mode 100644 index 00000000000..65d273dc3d1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/min/min_vec3_vert_xvary_yconsthalf_ref.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec3 min_c = vec3(0.5, 0.5, 0.5); + vec3 c = gtf_Color.rgb; + if(c[0] > min_c[0]) c[0] = min_c[0]; + if(c[1] > min_c[1]) c[1] = min_c[1]; + if(c[2] > min_c[2]) c[2] = min_c[2]; + + color = vec4(c, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/input.run.txt new file mode 100644 index 00000000000..f1c7ead9805 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +mix_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_001_to_006.html new file mode 100644 index 00000000000..abeb8c20e9f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: mix_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_frag_xvary_yconsthalf_aconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_frag_xvary_yconsthalf_aconsthalf.frag new file mode 100644 index 00000000000..c04c6ba63f8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_frag_xvary_yconsthalf_aconsthalf.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float y = 0.5; + const float a = 0.5; + float c = color.r; + gl_FragColor = vec4(mix(c, y, a), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_frag_xvary_yconsthalf_aconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_frag_xvary_yconsthalf_aconsthalf_ref.frag new file mode 100644 index 00000000000..74f96295902 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_frag_xvary_yconsthalf_aconsthalf_ref.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float y = 0.5; + const float a = 0.5; + float c = color.r; + + gl_FragColor = vec4(c * (1.0 - a) + y * a, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_vert_xvary_yconsthalf_aconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_vert_xvary_yconsthalf_aconsthalf.vert new file mode 100644 index 00000000000..bce9965068d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_vert_xvary_yconsthalf_aconsthalf.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float y = 0.5; + const float a = 0.5; + float c = gtf_Color.r; + color = vec4(mix(c, y, a), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_vert_xvary_yconsthalf_aconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_vert_xvary_yconsthalf_aconsthalf_ref.vert new file mode 100644 index 00000000000..adce952197a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_float_vert_xvary_yconsthalf_aconsthalf_ref.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float y = 0.5; + const float a = 0.5; + float c = gtf_Color.r; + + color = vec4(c * (1.0 - a) + y * a, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_frag_xvary_yconsthalf_aconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_frag_xvary_yconsthalf_aconsthalf.frag new file mode 100644 index 00000000000..4578aa893fa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_frag_xvary_yconsthalf_aconsthalf.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec2 y = vec2(0.5, 0.5); + const vec2 a = vec2(0.5, 0.5); + gl_FragColor = vec4(mix(color.rg, y, a), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_frag_xvary_yconsthalf_aconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_frag_xvary_yconsthalf_aconsthalf_ref.frag new file mode 100644 index 00000000000..b75166792d3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_frag_xvary_yconsthalf_aconsthalf_ref.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec2 y = vec2(0.5, 0.5); + const vec2 a = vec2(0.5, 0.5); + vec2 c = color.rg; + + gl_FragColor = vec4(c * (1.0 - a) + y * a, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_vert_xvary_yconsthalf_aconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_vert_xvary_yconsthalf_aconsthalf.vert new file mode 100644 index 00000000000..ffdbd26777f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_vert_xvary_yconsthalf_aconsthalf.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec2 y = vec2(0.5, 0.5); + const vec2 a = vec2(0.5, 0.5); + color = vec4(mix(gtf_Color.rg, y, a), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_vert_xvary_yconsthalf_aconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_vert_xvary_yconsthalf_aconsthalf_ref.vert new file mode 100644 index 00000000000..38d2de72799 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec2_vert_xvary_yconsthalf_aconsthalf_ref.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec2 y = vec2(0.5, 0.5); + const vec2 a = vec2(0.5, 0.5); + vec2 c = gtf_Color.rg; + + color = vec4(c * (1.0 - a) + y * a, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_frag_xvary_yconsthalf_aconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_frag_xvary_yconsthalf_aconsthalf.frag new file mode 100644 index 00000000000..fef30dcedcb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_frag_xvary_yconsthalf_aconsthalf.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec3 y = vec3(0.5, 0.5, 0.5); + const vec3 a = vec3(0.5, 0.5, 0.5); + gl_FragColor = vec4(mix(color.rgb, y, a), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_frag_xvary_yconsthalf_aconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_frag_xvary_yconsthalf_aconsthalf_ref.frag new file mode 100644 index 00000000000..fda46efc75f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_frag_xvary_yconsthalf_aconsthalf_ref.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec3 y = vec3(0.5, 0.5, 0.5); + const vec3 a = vec3(0.5, 0.5, 0.5); + vec3 c = color.rgb; + + gl_FragColor = vec4(c * (1.0 - a) + y * a, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_vert_xvary_yconsthalf_aconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_vert_xvary_yconsthalf_aconsthalf.vert new file mode 100644 index 00000000000..690f41ec993 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_vert_xvary_yconsthalf_aconsthalf.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec3 y = vec3(0.5, 0.5, 0.5); + const vec3 a = vec3(0.5, 0.5, 0.5); + color = vec4(mix(gtf_Color.rgb, y, a), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_vert_xvary_yconsthalf_aconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_vert_xvary_yconsthalf_aconsthalf_ref.vert new file mode 100644 index 00000000000..d9dec9bbba9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mix/mix_vec3_vert_xvary_yconsthalf_aconsthalf_ref.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec3 y = vec3(0.5, 0.5, 0.5); + const vec3 a = vec3(0.5, 0.5, 0.5); + vec3 c = gtf_Color.rgb; + + color = vec4(c * (1.0 - a) + y * a, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/input.run.txt new file mode 100644 index 00000000000..d369e576f84 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +mod_001_to_008.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_001_to_008.html new file mode 100644 index 00000000000..dcf5ac2405e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_001_to_008.html @@ -0,0 +1,181 @@ + + + + + +WebGL GLSL conformance test: mod_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_frag_xvary_yconst1.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_frag_xvary_yconst1.frag new file mode 100644 index 00000000000..9f22543d9bc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_frag_xvary_yconst1.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 10.0 * 2.0 * (color.r - 0.5); + gl_FragColor = vec4(mod(c, 1.0), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_frag_xvary_yconst1_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_frag_xvary_yconst1_ref.frag new file mode 100644 index 00000000000..2c35298a701 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_frag_xvary_yconst1_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 10.0 * 2.0 * (color.r - 0.5); + c = c - 1.0 * floor(c / 1.0); + gl_FragColor = vec4(c, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_vert_xvary_yconst1.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_vert_xvary_yconst1.vert new file mode 100644 index 00000000000..17d54ce2125 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_vert_xvary_yconst1.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 10.0 * 2.0 * (gtf_Color.r - 0.5); + color = vec4(mod(c, 1.0), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_vert_xvary_yconst1_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_vert_xvary_yconst1_ref.vert new file mode 100644 index 00000000000..ad6fc8185ba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_float_vert_xvary_yconst1_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 10.0 * 2.0 * (gtf_Color.r - 0.5); + c = c - 1.0 * floor(c / 1.0); + color = vec4(c, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_frag_xvary_yconst1.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_frag_xvary_yconst1.frag new file mode 100644 index 00000000000..335b8ff4904 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_frag_xvary_yconst1.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (color.rg - 0.5); + gl_FragColor = vec4(mod(c, 1.0), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_frag_xvary_yconst1_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_frag_xvary_yconst1_ref.frag new file mode 100644 index 00000000000..143a832ff90 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_frag_xvary_yconst1_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (color.rg - 0.5); + c = c - 1.0 * floor(c / 1.0); + gl_FragColor = vec4(c, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_vert_xvary_yconst1.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_vert_xvary_yconst1.vert new file mode 100644 index 00000000000..dad066a142b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_vert_xvary_yconst1.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (gtf_Color.rg - 0.5); + color = vec4(mod(c, 1.0), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_vert_xvary_yconst1_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_vert_xvary_yconst1_ref.vert new file mode 100644 index 00000000000..1f583fd97dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec2_vert_xvary_yconst1_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 10.0 * 2.0 * (gtf_Color.rg - 0.5); + c = c - 1.0 * floor(c / 1.0); + color = vec4(c, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_frag_xvary_yconst1.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_frag_xvary_yconst1.frag new file mode 100644 index 00000000000..1b8bd31d2d8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_frag_xvary_yconst1.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4(mod(c, 1.0), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_frag_xvary_yconst1_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_frag_xvary_yconst1_ref.frag new file mode 100644 index 00000000000..6f934b60181 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_frag_xvary_yconst1_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (color.rgb - 0.5); + c = c - 1.0 * floor(c / 1.0); + gl_FragColor = vec4(c, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_vert_xvary_yconst1.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_vert_xvary_yconst1.vert new file mode 100644 index 00000000000..468dd4d3a10 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_vert_xvary_yconst1.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (gtf_Color.rgb - 0.5); + color = vec4(mod(c, 1.0), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_vert_xvary_yconst1_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_vert_xvary_yconst1_ref.vert new file mode 100644 index 00000000000..1eb6c4ffc49 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_vec3_vert_xvary_yconst1_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 10.0 * 2.0 * (gtf_Color.rgb - 0.5); + c = c - 1.0 * floor(c / 1.0); + color = vec4(c, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_x_large_y_large_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_x_large_y_large_frag.frag new file mode 100644 index 00000000000..a56c581252e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_x_large_y_large_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = vec4(mod(300.0, 100.0), 0.0, 0.0, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_x_large_y_large_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_x_large_y_large_vert.vert new file mode 100644 index 00000000000..9d126ea2f56 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/mod/mod_x_large_y_large_vert.vert @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = vec4(mod(300.0, 100.0), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/input.run.txt new file mode 100644 index 00000000000..56ce6dcbe73 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +normalize_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_001_to_006.html new file mode 100644 index 00000000000..d711520fa49 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: normalize_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_frag_xvary.frag new file mode 100644 index 00000000000..9d07f0390ba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec4 tmp_Color = color + vec4(0.25); + gl_FragColor = vec4(normalize(tmp_Color.r), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..1e96c743e2f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_frag_xvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec4 tmp_Color = color + vec4(0.25); + gl_FragColor = vec4(tmp_Color.r / length(tmp_Color.r), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_vert_xvary.vert new file mode 100644 index 00000000000..81e999b8bd1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 tmp_Color = gtf_Color + vec4(0.25); + color = vec4(normalize(tmp_Color.r), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..29e23f5cb59 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_float_vert_xvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 tmp_Color = gtf_Color + vec4(0.25); + color = vec4(tmp_Color.r / length(tmp_Color.r), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_frag_xvary.frag new file mode 100644 index 00000000000..be1756b5bb6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec4 tmp_Color = color + vec4(0.25); + gl_FragColor = vec4(normalize(tmp_Color.rg), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..0e4e031ea60 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_frag_xvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec4 tmp_Color = color + vec4(0.25); + gl_FragColor = vec4(tmp_Color.rg / length(tmp_Color.rg), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_vert_xvary.vert new file mode 100644 index 00000000000..4bea42efd6e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 tmp_Color = gtf_Color + vec4(0.25); + color = vec4(normalize(tmp_Color.rg), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..b03a2c70b6e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec2_vert_xvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 tmp_Color = gtf_Color + vec4(0.25); + color = vec4(tmp_Color.rg / length(tmp_Color.rg), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_frag_xvary.frag new file mode 100644 index 00000000000..3f7e6eb1d9e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec4 tmp_Color = color + vec4(0.25); + gl_FragColor = vec4(normalize(tmp_Color.rgb), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..62f0cea72f4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_frag_xvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec4 tmp_Color = color + vec4(0.25); + gl_FragColor = vec4(tmp_Color.rgb / length(tmp_Color.rgb), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_vert_xvary.vert new file mode 100644 index 00000000000..33121c03487 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 tmp_Color = gtf_Color + vec4(0.25); + color = vec4(normalize(tmp_Color.rgb), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..665730a3df8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/normalize/normalize_vec3_vert_xvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 tmp_Color = gtf_Color + vec4(0.25); + color = vec4(tmp_Color.rgb / length(tmp_Color.rgb), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/input.run.txt new file mode 100644 index 00000000000..89038b74454 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +not_001_to_004.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_001_to_004.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_001_to_004.html new file mode 100644 index 00000000000..2376898aba7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_001_to_004.html @@ -0,0 +1,105 @@ + + + + + +WebGL GLSL conformance test: not_001_to_004.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_frag.frag new file mode 100644 index 00000000000..129ba6669ed --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(1.5 * color.rg); // 1/3 true, 2/3 false + gl_FragColor = vec4(vec2(not(bvec2(c))), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_frag_ref.frag new file mode 100644 index 00000000000..3a94ec0faab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_frag_ref.frag @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +bvec2 _not(in bvec2 a) +{ + bvec2 result; + if(a[0]) result[0] = false; + else result[0] = true; + if(a[1]) result[1] = false; + else result[1] = true; + return result; +} + +void main (void) +{ + vec2 c = floor(1.5 * color.rg); // 1/3 true, 2/3 false + gl_FragColor = vec4(vec2(_not(bvec2(c))), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_vert.vert new file mode 100644 index 00000000000..3fb1ff9722d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_vert.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(1.5 * gtf_Color.rg); // 1/3 true, 2/3 false + color = vec4(vec2(not(bvec2(c))), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_vert_ref.vert new file mode 100644 index 00000000000..974d7864517 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec2_vert_ref.vert @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 _not(in bvec2 a) +{ + bvec2 result; + if(a[0]) result[0] = false; + else result[0] = true; + if(a[1]) result[1] = false; + else result[1] = true; + return result; +} + +void main (void) +{ + vec2 c = floor(1.5 * gtf_Color.rg); // 1/3 true, 2/3 false + color = vec4(vec2(_not(bvec2(c))), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_frag.frag new file mode 100644 index 00000000000..8b2d4e3e9ee --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(1.5 * color.rgb); // 1/3 true, 2/3 false + gl_FragColor = vec4(vec3(not(bvec3(c))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_frag_ref.frag new file mode 100644 index 00000000000..2172e768377 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_frag_ref.frag @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 _not(in bvec3 a) +{ + bvec3 result; + if(a[0]) result[0] = false; + else result[0] = true; + if(a[1]) result[1] = false; + else result[1] = true; + if(a[2]) result[2] = false; + else result[2] = true; + return result; +} + +void main (void) +{ + vec3 c = floor(1.5 * color.rgb); // 1/3 true, 2/3 false + gl_FragColor = vec4(vec3(_not(bvec3(c))), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_vert.vert new file mode 100644 index 00000000000..554724cb63e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_vert.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(1.5 * gtf_Color.rgb); // 1/3 true, 2/3 false + color = vec4(vec3(not(bvec3(c))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_vert_ref.vert new file mode 100644 index 00000000000..d2a4a5d2e50 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/not/not_bvec3_vert_ref.vert @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 _not(in bvec3 a) +{ + bvec3 result; + if(a[0]) result[0] = false; + else result[0] = true; + if(a[1]) result[1] = false; + else result[1] = true; + if(a[2]) result[2] = false; + else result[2] = true; + return result; +} + +void main (void) +{ + vec3 c = floor(1.5 * gtf_Color.rgb); // 1/3 true, 2/3 false + color = vec4(vec3(_not(bvec3(c))), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/input.run.txt new file mode 100644 index 00000000000..9bc23768eaa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/input.run.txt @@ -0,0 +1,3 @@ +# this file is auto-generated. DO NOT EDIT. +notEqual_001_to_008.html +notEqual_009_to_012.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_001_to_008.html new file mode 100644 index 00000000000..ea39e3045a1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_001_to_008.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: notEqual_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_009_to_012.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_009_to_012.html new file mode 100644 index 00000000000..3c2b81ee9d0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_009_to_012.html @@ -0,0 +1,105 @@ + + + + + +WebGL GLSL conformance test: notEqual_009_to_012.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_frag.frag new file mode 100644 index 00000000000..6c98f0de66d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(1.5 * color.rg); // 1/3 true, 2/3 false + vec2 result = vec2(notEqual(bvec2(c), bvec2(true))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_frag_ref.frag new file mode 100644 index 00000000000..f51b8b6d4ba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_frag_ref.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +bvec2 ne(in bvec2 a, in bvec2 b) +{ + bvec2 result; + if(a[0] != b[0]) result[0] = true; + else result[0] = false; + if(a[1] != b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(1.5 * color.rg); // 1/3 true, 2/3 false + vec2 result = vec2(ne(bvec2(c), bvec2(true))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_vert.vert new file mode 100644 index 00000000000..97fe2e9abe2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(1.5 * gtf_Color.rg); // 1/3 true, 2/3 false + vec2 result = vec2(notEqual(bvec2(c), bvec2(true))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_vert_ref.vert new file mode 100644 index 00000000000..7944e8ac813 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec2_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 ne(in bvec2 a, in bvec2 b) +{ + bvec2 result; + if(a[0] != b[0]) result[0] = true; + else result[0] = false; + if(a[1] != b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(1.5 * gtf_Color.rg); // 1/3 true, 2/3 false + vec2 result = vec2(ne(bvec2(c), bvec2(true))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_frag.frag new file mode 100644 index 00000000000..36d6169af5c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(1.5 * color.rgb); // 1/3 true, 2/3 false + vec3 result = vec3(notEqual(bvec3(c), bvec3(true))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_frag_ref.frag new file mode 100644 index 00000000000..7f4654dcc52 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_frag_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 ne(in bvec3 a, in bvec3 b) +{ + bvec3 result; + if(a[0] != b[0]) result[0] = true; + else result[0] = false; + if(a[1] != b[1]) result[1] = true; + else result[1] = false; + if(a[2] != b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(1.5 * color.rgb); // 1/3 true, 2/3 false + vec3 result = vec3(ne(bvec3(c), bvec3(true))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_vert.vert new file mode 100644 index 00000000000..7688b8c9151 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(1.5 * gtf_Color.rgb); // 1/3 true, 2/3 false + vec3 result = vec3(notEqual(bvec3(c), bvec3(true))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_vert_ref.vert new file mode 100644 index 00000000000..4384aae3939 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_bvec3_vert_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 ne(in bvec3 a, in bvec3 b) +{ + bvec3 result; + if(a[0] != b[0]) result[0] = true; + else result[0] = false; + if(a[1] != b[1]) result[1] = true; + else result[1] = false; + if(a[2] != b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(1.5 * gtf_Color.rgb); // 1/3 true, 2/3 false + vec3 result = vec3(ne(bvec3(c), bvec3(true))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_frag.frag new file mode 100644 index 00000000000..d8cb50a3c04 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(notEqual(ivec2(c), ivec2(0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_frag_ref.frag new file mode 100644 index 00000000000..f96b4d896f5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_frag_ref.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec2 ne(in ivec2 a, in ivec2 b) +{ + bvec2 result; + if(a[0] != b[0]) result[0] = true; + else result[0] = false; + if(a[1] != b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(ne(ivec2(c), ivec2(0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_vert.vert new file mode 100644 index 00000000000..b49070b8e19 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(notEqual(ivec2(c), ivec2(0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_vert_ref.vert new file mode 100644 index 00000000000..065b0e56006 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec2_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 ne(in ivec2 a, in ivec2 b) +{ + bvec2 result; + if(a[0] != b[0]) result[0] = true; + else result[0] = false; + if(a[1] != b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(ne(ivec2(c), ivec2(0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_frag.frag new file mode 100644 index 00000000000..492456793c6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(notEqual(ivec3(c), ivec3(0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_frag_ref.frag new file mode 100644 index 00000000000..069dd39afc9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_frag_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 ne(in ivec3 a, in ivec3 b) +{ + bvec3 result; + if(a[0] != b[0]) result[0] = true; + else result[0] = false; + if(a[1] != b[1]) result[1] = true; + else result[1] = false; + if(a[2] != b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(ne(ivec3(c), ivec3(0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_vert.vert new file mode 100644 index 00000000000..a63d944eaa7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(notEqual(ivec3(c), ivec3(0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_vert_ref.vert new file mode 100644 index 00000000000..c2de0814f59 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_ivec3_vert_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 ne(in ivec3 a, in ivec3 b) +{ + bvec3 result; + if(a[0] != b[0]) result[0] = true; + else result[0] = false; + if(a[1] != b[1]) result[1] = true; + else result[1] = false; + if(a[2] != b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(ne(ivec3(c), ivec3(0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_frag.frag new file mode 100644 index 00000000000..95c56263f79 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(notEqual(c, vec2(0.0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_frag_ref.frag new file mode 100644 index 00000000000..1d4bd306adc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_frag_ref.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +varying vec4 color; + +bvec2 ne(in vec2 a, in vec2 b) +{ + bvec2 result; + if(a[0] != b[0]) result[0] = true; + else result[0] = false; + if(a[1] != b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(ne(c, vec2(0.0))); + gl_FragColor = vec4(result, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_vert.vert new file mode 100644 index 00000000000..01b8e8a39e8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(notEqual(c, vec2(0.0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_vert_ref.vert new file mode 100644 index 00000000000..0aaa9166579 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec2_vert_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec2 ne(in vec2 a, in vec2 b) +{ + bvec2 result; + if(a[0] != b[0]) result[0] = true; + else result[0] = false; + if(a[1] != b[1]) result[1] = true; + else result[1] = false; + return result; +} + +void main (void) +{ + vec2 c = floor(10.0 * gtf_Color.rg - 4.5); // round to the nearest integer + vec2 result = vec2(ne(c, vec2(0.0))); + color = vec4(result, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_frag.frag new file mode 100644 index 00000000000..2f96471c5f7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(notEqual(c, vec3(0.0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_frag_ref.frag new file mode 100644 index 00000000000..56009be519a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_frag_ref.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +bvec3 ne(in vec3 a, in vec3 b) +{ + bvec3 result; + if(a[0] != b[0]) result[0] = true; + else result[0] = false; + if(a[1] != b[1]) result[1] = true; + else result[1] = false; + if(a[2] != b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(ne(c, vec3(0.0))); + gl_FragColor = vec4(result, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_vert.vert new file mode 100644 index 00000000000..b6f11514003 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(notEqual(c, vec3(0.0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_vert_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_vert_ref.vert new file mode 100644 index 00000000000..78053b0f2df --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/notEqual/notEqual_vec3_vert_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +bvec3 ne(in vec3 a, in vec3 b) +{ + bvec3 result; + if(a[0] != b[0]) result[0] = true; + else result[0] = false; + if(a[1] != b[1]) result[1] = true; + else result[1] = false; + if(a[2] != b[2]) result[2] = true; + else result[2] = false; + return result; +} + +void main (void) +{ + vec3 c = floor(10.0 * gtf_Color.rgb - 4.5); // round to the nearest integer + vec3 result = vec3(ne(c, vec3(0.0))); + color = vec4(result, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/addsubtract_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/addsubtract_frag.frag new file mode 100644 index 00000000000..2967fc0d00a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/addsubtract_frag.frag @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int m = 102; + int k = 12; + int resultadd = m + k; + int resultsubtract = m - k; + float gray; + if( ( resultadd == 114 ) && ( resultsubtract == 90 ) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/addsubtract_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/addsubtract_vert.vert new file mode 100644 index 00000000000..4eaa2f93d63 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/addsubtract_vert.vert @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int m = 102; + int k = 12; + int resultadd = m + k; + int resultsubtract = m - k; + float gray; + if( ( resultadd == 114 ) && ( resultsubtract == 90 ) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/assignments_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/assignments_frag.frag new file mode 100644 index 00000000000..b3196567487 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/assignments_frag.frag @@ -0,0 +1,78 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int m = 12; + int n = 102; + bool result = true; + int r = m; + + if( r==12 ) + result = result && true; + else + result = result && false; + + r += m; + + if( r == 24 ) + result = result && true; + else + result = result && false; + + r-= m; + + if( r == 12 ) + result = result && true; + else + result = result && false; + + r*= m; + + if ( r == 144 ) + result = result && true; + else + result = result && false; + + r/= m; + + // Integer divide can be implemented via float reciprocal, + // so the result need not be exact + if( r >= 11 && r <= 13 ) + result = result && true; + else + result = result && false; + + float gray; + if( result ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/assignments_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/assignments_vert.vert new file mode 100644 index 00000000000..a4728ed986b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/assignments_vert.vert @@ -0,0 +1,78 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int m = 12; + int n = 102; + bool result = true; + int r = m; + + if( r==12 ) + result = result && true; + else + result = result && false; + + r += m; + + if( r == 24 ) + result = result && true; + else + result = result && false; + + r-= m; + + if( r == 12 ) + result = result && true; + else + result = result && false; + + r*= m; + + if ( r == 144 ) + result = result && true; + else + result = result && false; + + r/= m; + + // Integer divide can be implemented via float reciprocal, + // so the result need not be exact + if( r >= 11 && r <= 13 ) + result = result && true; + else + result = result && false; + + float gray; + if( result ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/division_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/division_frag.frag new file mode 100644 index 00000000000..e65ab2e474c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/division_frag.frag @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int m = 102; + int k = 12; + int result = m/k; + float gray; + // The rounding mode for integer divide is implementation-dependent + if( ( result == 8 ) || ( result == 9 ) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/division_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/division_vert.vert new file mode 100644 index 00000000000..3c963988401 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/division_vert.vert @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int m = 102; + int k = 12; + int result = m/k; + float gray; + // The rounding mode for integer divide is implementation-dependent + if( ( result == 8 ) || ( result == 9 ) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/equality_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/equality_frag.frag new file mode 100644 index 00000000000..a8a5d471b5d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/equality_frag.frag @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int m = 102; + int k = 12; + bool equalto = (m == 102); + bool notequalto = (k != 102); + + float gray; + if( equalto && notequalto ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/equality_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/equality_vert.vert new file mode 100644 index 00000000000..34ef88e6270 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/equality_vert.vert @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int m = 102; + int k = 12; + bool equalto = (m == 102); + bool notequalto = (k != 102); + + float gray; + if( equalto && notequalto ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/input.run.txt new file mode 100644 index 00000000000..b6e176588bf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/input.run.txt @@ -0,0 +1,5 @@ +# this file is auto-generated. DO NOT EDIT. +operators_001_to_008.html +operators_009_to_016.html +operators_017_to_024.html +operators_025_to_026.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/logical_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/logical_frag.frag new file mode 100644 index 00000000000..223557025d1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/logical_frag.frag @@ -0,0 +1,111 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ +bool result = true; + bool a = true; + bool b = true; + + if( (a&&b) ) + result = result && true; + else + result = result && false; + + if( (a||b) ) + result = result && true; + else + result = result && false; + + if( !(a^^b) ) + result = result && true; + else + result = result && false; + + a = true; + b = false; + + if( !(a&&b) ) + result = result && true; + else + result = result && false; + + if( (a||b) ) + result = result && true; + else + result = result && false; + + if( (a^^b) ) + result = result && true; + else + result = result && false; + + a = false; + b = true; + + if( !(a&&b) ) + result = result && true; + else + result = result && false; + + if( (a||b) ) + result = result && true; + else + result = result && false; + + if( (a^^b) ) + result = result && true; + else + result = result && false; + + a = false; + b = false; + + if( !(a&&b) ) + result = result && true; + else + result = result && false; + + if( !(a||b) ) + result = result && true; + else + result = result && false; + + if( !(a^^b) ) + result = result && true; + else + result = result && false; + + float gray; + if( result ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/logical_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/logical_vert.vert new file mode 100644 index 00000000000..8de9aafc005 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/logical_vert.vert @@ -0,0 +1,111 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + bool result = true; + bool a = true; + bool b = true; + + if( (a&&b) ) + result = result && true; + else + result = result && false; + + if( (a||b) ) + result = result && true; + else + result = result && false; + + if( !(a^^b) ) + result = result && true; + else + result = result && false; + + a = true; + b = false; + + if( !(a&&b) ) + result = result && true; + else + result = result && false; + + if( (a||b) ) + result = result && true; + else + result = result && false; + + if( (a^^b) ) + result = result && true; + else + result = result && false; + + a = false; + b = true; + + if( !(a&&b) ) + result = result && true; + else + result = result && false; + + if( (a||b) ) + result = result && true; + else + result = result && false; + + if( (a^^b) ) + result = result && true; + else + result = result && false; + + a = false; + b = false; + + if( !(a&&b) ) + result = result && true; + else + result = result && false; + + if( !(a||b) ) + result = result && true; + else + result = result && false; + + if( !(a^^b) ) + result = result && true; + else + result = result && false; + + float gray; + if( result ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/multiplicative_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/multiplicative_frag.frag new file mode 100644 index 00000000000..dd23c5b132c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/multiplicative_frag.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int m = 102; + int k = 12; + int result = m*k; + float gray; + if( ( result == 1224 ) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/multiplicative_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/multiplicative_vert.vert new file mode 100644 index 00000000000..138b12d9c75 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/multiplicative_vert.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int m = 102; + int k = 12; + int result = m*k; + float gray; + if( ( result == 1224 ) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_001_to_008.html new file mode 100644 index 00000000000..8e59e71d2d1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_001_to_008.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: operators_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_009_to_016.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_009_to_016.html new file mode 100644 index 00000000000..e19f146b757 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_009_to_016.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: operators_009_to_016.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_017_to_024.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_017_to_024.html new file mode 100644 index 00000000000..14da8ea63e8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_017_to_024.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: operators_017_to_024.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_025_to_026.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_025_to_026.html new file mode 100644 index 00000000000..812f24dc9a3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/operators_025_to_026.html @@ -0,0 +1,103 @@ + + + + + +WebGL GLSL conformance test: operators_025_to_026.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixdecrement_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixdecrement_frag.frag new file mode 100644 index 00000000000..70da817094f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixdecrement_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int m = 23; + int k = m--; + float gray; + if( ( k == 23 ) && ( m == 22 ) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixdecrement_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixdecrement_vert.vert new file mode 100644 index 00000000000..27782385e65 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixdecrement_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int m=23; + int k = m--; + float gray; + if( (k==23) && (m==22) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixincrement_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixincrement_frag.frag new file mode 100644 index 00000000000..0fecc5d2dc3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixincrement_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int m = 23; + int k = m++; + float gray; + if( ( k == 23 ) && ( m == 24 ) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixincrement_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixincrement_vert.vert new file mode 100644 index 00000000000..30fa784e95b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/postfixincrement_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int m=23; + int k = m++; + float gray; + if( (k==23) && (m==24) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixdecrement_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixdecrement_frag.frag new file mode 100644 index 00000000000..92b04b78556 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixdecrement_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int m = 23; + int k = --m; + float gray; + if( ( k == 22 ) && ( m == 22 ) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixdecrement_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixdecrement_vert.vert new file mode 100644 index 00000000000..4509b9b41a5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixdecrement_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int m=23; + int k = --m; + float gray; + if( (k==22) && (m==22) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixincrement_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixincrement_frag.frag new file mode 100644 index 00000000000..534b826a974 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixincrement_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int m = 23; + int k = ++m; + float gray; + if( ( k == 24 ) && ( m == 24 ) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixincrement_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixincrement_vert.vert new file mode 100644 index 00000000000..4b51c6a32f9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/prefixincrement_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int m=23; + int k = ++m; + float gray; + if( (k==24) && (m==24) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/relational_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/relational_frag.frag new file mode 100644 index 00000000000..fe2716d0d2b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/relational_frag.frag @@ -0,0 +1,44 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int m = 102; + int k = 12; + bool lessthan = (mk); + bool lessthanorequalto = (m <= 102); + bool greaterthanorequalto = (k >=12); + float gray; + if( !lessthan && greaterthan && lessthanorequalto && greaterthanorequalto ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/relational_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/relational_vert.vert new file mode 100644 index 00000000000..322bb841687 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/relational_vert.vert @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + int m = 102; + int k = 12; + bool lessthan = (mk); + bool lessthanorequalto = (m <= 102); + bool greaterthanorequalto = (k >=12); + + float gray; + if( !lessthan && greaterthan && lessthanorequalto && greaterthanorequalto ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/selection_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/selection_frag.frag new file mode 100644 index 00000000000..9611e2c101e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/operators/selection_frag.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + int j = 30; + int k = 37; + int y = 10; + int n = 12; + bool result1 = false; + bool result2 = false; + (j>k)?( result1 = true ):( result1 = false ); + (yk)?( result1 = true ):( result1 = false ); + (y + + + + +WebGL GLSL conformance test: pow_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_009_to_016.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_009_to_016.html new file mode 100644 index 00000000000..1ae02f1f31c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_009_to_016.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: pow_009_to_016.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_017_to_024.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_017_to_024.html new file mode 100644 index 00000000000..06420c91960 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_017_to_024.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: pow_017_to_024.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconst2_yvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconst2_yvary.frag new file mode 100644 index 00000000000..dc2534ce429 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconst2_yvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 2.0 * (color.r - 0.5); + gl_FragColor = vec4(pow(2.0, 2.0 * c) / 4.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconst2_yvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconst2_yvary_ref.frag new file mode 100644 index 00000000000..8e2cd4eefea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconst2_yvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 2.0 * (color.r - 0.5); + gl_FragColor = vec4(exp2(2.0 * c) / 4.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconsthalf_yvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconsthalf_yvary.frag new file mode 100644 index 00000000000..60d20306ae3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconsthalf_yvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 2.0 * (color.r - 0.5); + gl_FragColor = vec4(pow(0.5, 2.0 * c) / 4.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconsthalf_yvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconsthalf_yvary_ref.frag new file mode 100644 index 00000000000..96be455a3c9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xconsthalf_yvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = -2.0 * (color.r - 0.5); + gl_FragColor = vec4(exp2(2.0 * c) / 4.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconst2.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconst2.frag new file mode 100644 index 00000000000..8682a0e9f38 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconst2.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 4.0 * (color.r); + gl_FragColor = vec4(pow(c, 2.0) / 4.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconst2_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconst2_ref.frag new file mode 100644 index 00000000000..0b82bded596 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconst2_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 4.0 * (color.r); + gl_FragColor = vec4(c * c / 4.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconsthalf.frag new file mode 100644 index 00000000000..e071d29a594 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconsthalf.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 16.0 * color.r; + gl_FragColor = vec4(pow(c, 0.5) / 4.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconsthalf_ref.frag new file mode 100644 index 00000000000..5ff3ddbe9f7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_frag_xvary_yconsthalf_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 16.0 * color.r; + gl_FragColor = vec4(sqrt(c) / 4.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconst2_yvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconst2_yvary.vert new file mode 100644 index 00000000000..83f22bb80db --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconst2_yvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 2.0 * (gtf_Color.r - 0.5); + color = vec4(pow(2.0, 2.0 * c) / 4.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconst2_yvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconst2_yvary_ref.vert new file mode 100644 index 00000000000..130327c6ee2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconst2_yvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 2.0 * (gtf_Color.r - 0.5); + color = vec4(exp2(2.0 * c) / 4.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconsthalf_yvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconsthalf_yvary.vert new file mode 100644 index 00000000000..0533c7560bb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconsthalf_yvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 2.0 * (gtf_Color.r - 0.5); + color = vec4(pow(0.5, 2.0 * c) / 4.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconsthalf_yvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconsthalf_yvary_ref.vert new file mode 100644 index 00000000000..fe9bdc84eeb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xconsthalf_yvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = -2.0 * (gtf_Color.r - 0.5); + color = vec4(exp2(2.0 * c) / 4.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconst2.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconst2.vert new file mode 100644 index 00000000000..f0be45abe88 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconst2.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 4.0 * (gtf_Color.r); + color = vec4(pow(c, 2.0) / 4.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconst2_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconst2_ref.vert new file mode 100644 index 00000000000..f76054b2ba2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconst2_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 4.0 * (gtf_Color.r); + color = vec4(c * c / 4.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconsthalf.vert new file mode 100644 index 00000000000..7609fa58991 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconsthalf.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 16.0 * gtf_Color.r; + color = vec4(pow(c, 0.5) / 4.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconsthalf_ref.vert new file mode 100644 index 00000000000..f58d044b212 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_float_vert_xvary_yconsthalf_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 16.0 * gtf_Color.r; + color = vec4(sqrt(c) / 4.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconst2_yvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconst2_yvary.frag new file mode 100644 index 00000000000..e47822c0a89 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconst2_yvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 2.0 * (color.rg - 0.5); + gl_FragColor = vec4(pow(vec2(2.0), 2.0 * c) / 4.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconst2_yvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconst2_yvary_ref.frag new file mode 100644 index 00000000000..30b36043597 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconst2_yvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 2.0 * (color.rg - 0.5); + gl_FragColor = vec4(exp2(2.0 * c) / 4.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconsthalf_yvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconsthalf_yvary.frag new file mode 100644 index 00000000000..67daa472056 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconsthalf_yvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 2.0 * (color.rg - 0.5); + gl_FragColor = vec4(pow(vec2(0.5), 2.0 * c) / 4.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconsthalf_yvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconsthalf_yvary_ref.frag new file mode 100644 index 00000000000..e7cc4c966ff --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xconsthalf_yvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = -2.0 * (color.rg - 0.5); + gl_FragColor = vec4(exp2(2.0 * c) / 4.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconst2.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconst2.frag new file mode 100644 index 00000000000..6ae78c70dcd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconst2.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 4.0 * (color.rg); + gl_FragColor = vec4(pow(c, vec2(2.0)) / 4.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconst2_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconst2_ref.frag new file mode 100644 index 00000000000..0540ebe0f5a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconst2_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 4.0 * (color.rg); + gl_FragColor = vec4(c * c / 4.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconsthalf.frag new file mode 100644 index 00000000000..196535a8c61 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconsthalf.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 16.0 * color.rg; + gl_FragColor = vec4(pow(c, vec2(0.5)) / 4.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconsthalf_ref.frag new file mode 100644 index 00000000000..cb591dc5f77 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_frag_xvary_yconsthalf_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 16.0 * color.rg; + gl_FragColor = vec4(sqrt(c) / 4.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconst2_yvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconst2_yvary.vert new file mode 100644 index 00000000000..ec59a85bc42 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconst2_yvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 2.0 * (gtf_Color.rg - 0.5); + color = vec4(pow(vec2(2.0), 2.0 * c) / 4.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconst2_yvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconst2_yvary_ref.vert new file mode 100644 index 00000000000..35f12854d18 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconst2_yvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 2.0 * (gtf_Color.rg - 0.5); + color = vec4(exp2(2.0 * c) / 4.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconsthalf_yvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconsthalf_yvary.vert new file mode 100644 index 00000000000..ab3c56d49ed --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconsthalf_yvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 2.0 * (gtf_Color.rg - 0.5); + color = vec4(pow(vec2(0.5), 2.0 * c) / 4.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconsthalf_yvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconsthalf_yvary_ref.vert new file mode 100644 index 00000000000..d5a1a620288 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xconsthalf_yvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = -2.0 * (gtf_Color.rg - 0.5); + color = vec4(exp2(2.0 * c) / 4.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconst2.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconst2.vert new file mode 100644 index 00000000000..0411d3f0eba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconst2.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 4.0 * (gtf_Color.rg); + color = vec4(pow(c, vec2(2.0)) / 4.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconst2_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconst2_ref.vert new file mode 100644 index 00000000000..c83de730290 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconst2_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 4.0 * (gtf_Color.rg); + color = vec4(c * c / 4.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconsthalf.vert new file mode 100644 index 00000000000..80e7e176b86 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconsthalf.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 16.0 * gtf_Color.rg; + color = vec4(pow(c, vec2(0.5)) / 4.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconsthalf_ref.vert new file mode 100644 index 00000000000..abf19d3b0ec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec2_vert_xvary_yconsthalf_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 16.0 * gtf_Color.rg; + color = vec4(sqrt(c) / 4.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconst2_yvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconst2_yvary.frag new file mode 100644 index 00000000000..7aa24fb92c3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconst2_yvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4(pow(vec3(2.0), 2.0 * c) / 4.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconst2_yvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconst2_yvary_ref.frag new file mode 100644 index 00000000000..339406c5e32 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconst2_yvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4(exp2(2.0 * c) / 4.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconsthalf_yvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconsthalf_yvary.frag new file mode 100644 index 00000000000..7b35c866440 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconsthalf_yvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4(pow(vec3(0.5), 2.0 * c) / 4.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconsthalf_yvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconsthalf_yvary_ref.frag new file mode 100644 index 00000000000..9000d040fad --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xconsthalf_yvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = -2.0 * (color.rgb - 0.5); + gl_FragColor = vec4(exp2(2.0 * c) / 4.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconst2.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconst2.frag new file mode 100644 index 00000000000..319fb17a840 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconst2.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = color.rgb; + gl_FragColor = vec4(pow(c, vec3(2.0)) / 4.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconst2_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconst2_ref.frag new file mode 100644 index 00000000000..439476d7031 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconst2_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = color.rgb; + gl_FragColor = vec4(c * c / 4.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconsthalf.frag new file mode 100644 index 00000000000..82b120f153d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconsthalf.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 16.0 * color.rgb; + gl_FragColor = vec4(pow(c, vec3(0.5)) / 4.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconsthalf_ref.frag new file mode 100644 index 00000000000..407bc1db273 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_frag_xvary_yconsthalf_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 16.0 * color.rgb; + gl_FragColor = vec4(sqrt(c) / 4.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconst2_yvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconst2_yvary.vert new file mode 100644 index 00000000000..875ff7f9325 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconst2_yvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 2.0 * (gtf_Color.rgb - 0.5); + color = vec4(pow(vec3(2.0), 2.0 * c) / 4.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconst2_yvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconst2_yvary_ref.vert new file mode 100644 index 00000000000..155519ef171 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconst2_yvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 2.0 * (gtf_Color.rgb - 0.5); + color = vec4(exp2(2.0 * c) / 4.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconsthalf_yvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconsthalf_yvary.vert new file mode 100644 index 00000000000..ebb4c42a5c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconsthalf_yvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 2.0 * (gtf_Color.rgb - 0.5); + color = vec4(pow(vec3(0.5), 2.0 * c) / 4.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconsthalf_yvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconsthalf_yvary_ref.vert new file mode 100644 index 00000000000..d797011e1af --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xconsthalf_yvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = -2.0 * (gtf_Color.rgb - 0.5); + color = vec4(exp2(2.0 * c) / 4.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconst2.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconst2.vert new file mode 100644 index 00000000000..38ef59d3e16 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconst2.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 4.0 * (gtf_Color.rgb); + color = vec4(pow(c, vec3(2.0)) / 4.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconst2_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconst2_ref.vert new file mode 100644 index 00000000000..0cd2ef6ff58 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconst2_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 4.0 * (gtf_Color.rgb); + color = vec4(c * c / 4.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconsthalf.vert new file mode 100644 index 00000000000..3ab23619965 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconsthalf.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 16.0 * gtf_Color.rgb; + color = vec4(pow(c, vec3(0.5)) / 4.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconsthalf_ref.vert new file mode 100644 index 00000000000..da90056737b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/pow/pow_vec3_vert_xvary_yconsthalf_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 16.0 * gtf_Color.rgb; + color = vec4(sqrt(c) / 4.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/input.run.txt new file mode 100644 index 00000000000..891a82745f9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +radians_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_001_to_006.html new file mode 100644 index 00000000000..3d03c34a79a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: radians_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_frag_xvary.frag new file mode 100644 index 00000000000..141c45d5323 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 360.0 * 2.0 * (color.r - 0.5); + gl_FragColor = vec4(radians(c) / (4.0 * M_PI) + 0.5, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..5e9ba0b4586 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_frag_xvary_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 360.0 * 2.0 * (color.r - 0.5); + gl_FragColor = vec4((c * M_PI / 180.0) / (4.0 * M_PI) + 0.5, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_vert_xvary.vert new file mode 100644 index 00000000000..8a858b641ed --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 360.0 * 2.0 * (gtf_Color.r - 0.5); + color = vec4(radians(c) / (4.0 * M_PI) + 0.5, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..2c21ac03437 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_float_vert_xvary_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 360.0 * 2.0 * (gtf_Color.r - 0.5); + color = vec4((c * M_PI / 180.0) / (4.0 * M_PI) + 0.5, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_frag_xvary.frag new file mode 100644 index 00000000000..594e26ac016 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 360.0 * 2.0 * (color.rg - 0.5); + gl_FragColor = vec4(radians(c) / (4.0 * M_PI) + 0.5, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..6c95619e320 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_frag_xvary_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 360.0 * 2.0 * (color.rg - 0.5); + gl_FragColor = vec4((c * M_PI / 180.0) / (4.0 * M_PI) + 0.5, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_vert_xvary.vert new file mode 100644 index 00000000000..b232f5646c2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 360.0 * 2.0 * (gtf_Color.rg - 0.5); + color = vec4(radians(c) / (4.0 * M_PI) + 0.5, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..9530c8b3f67 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec2_vert_xvary_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 360.0 * 2.0 * (gtf_Color.rg - 0.5); + color = vec4((c * M_PI / 180.0) / (4.0 * M_PI) + 0.5, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_frag_xvary.frag new file mode 100644 index 00000000000..5cebc76b712 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_frag_xvary.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 360.0 * 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4(radians(c) / (4.0 * M_PI) + 0.5, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..3026b494c4a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_frag_xvary_ref.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 360.0 * 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4((c * M_PI / 180.0) / (4.0 * M_PI) + 0.5, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_vert_xvary.vert new file mode 100644 index 00000000000..7f91ba40401 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_vert_xvary.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 360.0 * 2.0 * (gtf_Color.rgb - 0.5); + color = vec4(radians(c) / (4.0 * M_PI) + 0.5, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..74cad8da0bc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/radians/radians_vec3_vert_xvary_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 360.0 * 2.0 * (gtf_Color.rgb - 0.5); + color = vec4((c * M_PI / 180.0) / (4.0 * M_PI) + 0.5, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/input.run.txt new file mode 100644 index 00000000000..b32c960e6c9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +reflect_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_001_to_006.html new file mode 100644 index 00000000000..e41fa798009 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: reflect_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_frag_ivarynconst.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_frag_ivarynconst.frag new file mode 100644 index 00000000000..23780bbec2d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_frag_ivarynconst.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + float v1 = (color.g + 1.0) / 2.0; + float v2 = (color.b + 1.0) / 2.0; + + gl_FragColor = vec4((reflect(v1, v2) + 1.0) / 2.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_frag_ivarynconst_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_frag_ivarynconst_ref.frag new file mode 100644 index 00000000000..7c9a07eb58c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_frag_ivarynconst_ref.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + float v1 = (color.g + 1.0) / 2.0; + float v2 = (color.b + 1.0) / 2.0; + + gl_FragColor = vec4((v1 - 2.0 * dot(v2, v1) * v2 + 1.0) / 2.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_vert_ivarynconst.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_vert_ivarynconst.vert new file mode 100644 index 00000000000..1881b976c2c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_vert_ivarynconst.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + float v1 = (gtf_Color.g + 1.0) / 2.0; + float v2 = (gtf_Color.b + 1.0) / 2.0; + + color = vec4((reflect(v1, v2) + 1.0) / 2.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_vert_ivarynconst_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_vert_ivarynconst_ref.vert new file mode 100644 index 00000000000..3b6162907c3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_float_vert_ivarynconst_ref.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + float v1 = (gtf_Color.g + 1.0) / 2.0; + float v2 = (gtf_Color.b + 1.0) / 2.0; + + color = vec4((v1 - 2.0 * dot(v2, v1) * v2 + 1.0) / 2.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_frag_ivarynconst.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_frag_ivarynconst.frag new file mode 100644 index 00000000000..d614676d8e0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_frag_ivarynconst.frag @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec2 v1; + vec2 v2 = normalize(vec2(1.0, 1.0)); + + float theta = color.g * 2.0 * M_PI; + float phi = color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + + gl_FragColor = vec4((reflect(v1, v2) + 1.0) / 2.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_frag_ivarynconst_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_frag_ivarynconst_ref.frag new file mode 100644 index 00000000000..07a4a7c74b7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_frag_ivarynconst_ref.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec2 v1; + vec2 v2 = normalize(vec2(1.0, 1.0)); + + + float theta = color.g * 2.0 * M_PI; + float phi = color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + + gl_FragColor = vec4((v1 - 2.0 * dot(v2, v1) * v2 + 1.0) / 2.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_vert_ivarynconst.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_vert_ivarynconst.vert new file mode 100644 index 00000000000..5f1e20ed116 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_vert_ivarynconst.vert @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec2 v1; + vec2 v2 = normalize(vec2(1.0, 1.0)); + + float theta = gtf_Color.g * 2.0 * M_PI; + float phi = gtf_Color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + + color = vec4((reflect(v1, v2) + 1.0) / 2.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_vert_ivarynconst_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_vert_ivarynconst_ref.vert new file mode 100644 index 00000000000..dee1b983c7e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec2_vert_ivarynconst_ref.vert @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec2 v1; + vec2 v2 = normalize(vec2(1.0, 1.0)); + + float theta = gtf_Color.g * 2.0 * M_PI; + float phi = gtf_Color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + + color = vec4((v1 - 2.0 * dot(v2, v1) * v2 + 1.0) / 2.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_frag_ivarynconst.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_frag_ivarynconst.frag new file mode 100644 index 00000000000..a7287f2304a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_frag_ivarynconst.frag @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = normalize(vec3(1.0, 1.0, 1.0)); + + + float theta = color.g * 2.0 * M_PI; + float phi = color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + + gl_FragColor = vec4((reflect(v1, v2) + 1.0) / 2.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_frag_ivarynconst_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_frag_ivarynconst_ref.frag new file mode 100644 index 00000000000..cd141895823 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_frag_ivarynconst_ref.frag @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = normalize(vec3(1.0, 1.0, 1.0)); + + + float theta = color.g * 2.0 * M_PI; + float phi = color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + + gl_FragColor = vec4((v1 - 2.0 * dot(v2, v1) * v2 + 1.0) / 2.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_vert_ivarynconst.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_vert_ivarynconst.vert new file mode 100644 index 00000000000..f375b86a4d4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_vert_ivarynconst.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = normalize(vec3(1.0, 1.0, 1.0)); + + float theta = gtf_Color.g * 2.0 * M_PI; + float phi = gtf_Color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + + color = vec4((reflect(v1, v2) + 1.0) / 2.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_vert_ivarynconst_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_vert_ivarynconst_ref.vert new file mode 100644 index 00000000000..58a9b84f95f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/reflect/reflect_vec3_vert_ivarynconst_ref.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = normalize(vec3(1.0, 1.0, 1.0)); + + float theta = gtf_Color.g * 2.0 * M_PI; + float phi = gtf_Color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + + color = vec4((v1 - 2.0 * dot(v2, v1) * v2 + vec3(1.0)) / 2.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/input.run.txt new file mode 100644 index 00000000000..c7deedd54c8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +refract_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_001_to_006.html new file mode 100644 index 00000000000..3fdad36dabf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: refract_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_frag_ivarynconst.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_frag_ivarynconst.frag new file mode 100644 index 00000000000..6cd7faa0100 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_frag_ivarynconst.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + float v1 = (color.g + 1.0) / 2.0; + float v2 = (color.b + 1.0) / 2.0; + + gl_FragColor = vec4((refract(v1, v2, 0.5) + 1.0) / 2.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_frag_ivarynconst_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_frag_ivarynconst_ref.frag new file mode 100644 index 00000000000..a0159b0f518 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_frag_ivarynconst_ref.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + // Both are unit vectors + float v1 = (color.g + 1.0) / 2.0; + float v2 = (color.b + 1.0) / 2.0; + + float result; + float eta = 0.5; + float k = 1.0 - eta * eta * (1.0 - dot(v1, v2) * dot(v1, v2)); + if(k < 0.0) + result = 0.0; + else + result = eta * v1 - (eta * dot(v1, v2) + sqrt(k)) * v2; + + gl_FragColor = vec4((result + 1.0) / 2.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_vert_ivarynconst.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_vert_ivarynconst.vert new file mode 100644 index 00000000000..83dcb5930dd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_vert_ivarynconst.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + // Both are unit vectors + float v1 = (gtf_Color.g + 1.0) / 2.0; + float v2 = (gtf_Color.b + 1.0) / 2.0; + + color = vec4((refract(v1, v2, 0.5) + 1.0) / 2.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_vert_ivarynconst_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_vert_ivarynconst_ref.vert new file mode 100644 index 00000000000..31826c6c25f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_float_vert_ivarynconst_ref.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + float v1 = (gtf_Color.g + 1.0) / 2.0; + float v2 = (gtf_Color.b + 1.0) / 2.0; + + float result; + float eta = 0.5; + float k = 1.0 - eta * eta * (1.0 - dot(v1, v2) * dot(v1, v2)); + if(k < 0.0) + result = 0.0; + else + result = eta * v1 - (eta * dot(v1, v2) + sqrt(k)) * v2; + + color = vec4((result + 1.0) / 2.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_frag_ivarynconst.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_frag_ivarynconst.frag new file mode 100644 index 00000000000..189a168f82e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_frag_ivarynconst.frag @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec2 v1; + vec2 v2 = normalize(vec2(1.0, 1.0)); + + float theta = color.g * 2.0 * M_PI; + float phi = color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + + gl_FragColor = vec4((refract(v1, v2, 0.5) + 1.0) / 2.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_frag_ivarynconst_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_frag_ivarynconst_ref.frag new file mode 100644 index 00000000000..bad139c37e7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_frag_ivarynconst_ref.frag @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec2 v1; + vec2 v2 = normalize(vec2(1.0, 1.0)); + + + float theta = color.g * 2.0 * M_PI; + float phi = color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + + vec2 result; + float eta = 0.5; + float k = 1.0 - eta * eta * (1.0 - dot(v1, v2) * dot(v1, v2)); + if(k < 0.0) + result = vec2(0.0); + else + result = eta * v1 - (eta * dot(v1, v2) + sqrt(k)) * v2; + + gl_FragColor = vec4((result + 1.0) / 2.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_vert_ivarynconst.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_vert_ivarynconst.vert new file mode 100644 index 00000000000..62b77e91c8c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_vert_ivarynconst.vert @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec2 v1; + vec2 v2 = normalize(vec2(1.0, 1.0)); + + float theta = gtf_Color.g * 2.0 * M_PI; + float phi = gtf_Color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + + color = vec4((refract(v1, v2, 0.5) + 1.0) / 2.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_vert_ivarynconst_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_vert_ivarynconst_ref.vert new file mode 100644 index 00000000000..d01fb22ba9f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec2_vert_ivarynconst_ref.vert @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec2 v1; + vec2 v2 = normalize(vec2(1.0, 1.0)); + + float theta = gtf_Color.g * 2.0 * M_PI; + float phi = gtf_Color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + + vec2 result; + float eta = 0.5; + float k = 1.0 - eta * eta * (1.0 - dot(v1, v2) * dot(v1, v2)); + if(k < 0.0) + result = vec2(0.0); + else + result = eta * v1 - (eta * dot(v1, v2) + sqrt(k)) * v2; + + color = vec4((result + 1.0) / 2.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_frag_ivarynconst.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_frag_ivarynconst.frag new file mode 100644 index 00000000000..421cf9b5813 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_frag_ivarynconst.frag @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = normalize(vec3(1.0, 1.0, 1.0)); + + + float theta = color.g * 2.0 * M_PI; + float phi = color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + + gl_FragColor = vec4((refract(v1, v2, 0.5) + 1.0) / 2.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_frag_ivarynconst_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_frag_ivarynconst_ref.frag new file mode 100644 index 00000000000..16be25c1da3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_frag_ivarynconst_ref.frag @@ -0,0 +1,55 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = normalize(vec3(1.0, 1.0, 1.0)); + + + float theta = color.g * 2.0 * M_PI; + float phi = color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + + vec3 result; + float eta = 0.5; + float k = 1.0 - eta * eta * (1.0 - dot(v1, v2) * dot(v1, v2)); + if(k < 0.0) + result = vec3(0.0); + else + result = eta * v1 - (eta * dot(v1, v2) + sqrt(k)) * v2; + + gl_FragColor = vec4((result + 1.0) / 2.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_vert_ivarynconst.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_vert_ivarynconst.vert new file mode 100644 index 00000000000..6423ca40e4e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_vert_ivarynconst.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = normalize(vec3(1.0, 1.0, 1.0)); + + float theta = gtf_Color.g * 2.0 * M_PI; + float phi = gtf_Color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + + color = vec4((refract(v1, v2, 0.5) + 1.0) / 2.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_vert_ivarynconst_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_vert_ivarynconst_ref.vert new file mode 100644 index 00000000000..0fa9b7cbcaa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/refract/refract_vec3_vert_ivarynconst_ref.vert @@ -0,0 +1,55 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + + // Both are unit vectors + vec3 v1; + vec3 v2 = normalize(vec3(1.0, 1.0, 1.0)); + + float theta = gtf_Color.g * 2.0 * M_PI; + float phi = gtf_Color.b * 2.0 * M_PI; + v1.x = cos(theta) * sin(phi); + v1.y = sin(theta) * sin(phi); + v1.z = cos(phi); + + vec3 result; + float eta = 0.5; + float k = 1.0 - eta * eta * (1.0 - dot(v1, v2) * dot(v1, v2)); + if(k < 0.0) + result = vec3(0.0); + else + result = eta * v1 - (eta * dot(v1, v2) + sqrt(k)) * v2; + + color = vec4((result + 1.0) / 2.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/input.run.txt new file mode 100644 index 00000000000..b22bf9d68e2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +sign_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_001_to_006.html new file mode 100644 index 00000000000..0e4a56dbcd1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: sign_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_frag_xvary.frag new file mode 100644 index 00000000000..0a3fcd169cd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 2.0 * (color.r - 0.5); + gl_FragColor = vec4(c * sign(c), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..082dea1d1d8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_frag_xvary_ref.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 2.0 * (color.r - 0.5); + if(c > 0.0) c = 1.0 * c; + if(c < 0.0) c = -1.0 * c; + + gl_FragColor = vec4(c, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_vert_xvary.vert new file mode 100644 index 00000000000..e2a048f3480 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 2.0 * (gtf_Color.r - 0.5); + color = vec4(c * sign(c), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..7646fb73662 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_float_vert_xvary_ref.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 2.0 * (gtf_Color.r - 0.5); + if(c > 0.0) c = 1.0 * c; + if(c < 0.0) c = -1.0 * c; + + color = vec4(c, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_frag_xvary.frag new file mode 100644 index 00000000000..3dbdde2079e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 2.0 * (color.rg - 0.5); + gl_FragColor = vec4(c * sign(c), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..08a6c3d0343 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_frag_xvary_ref.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 2.0 * (color.rg - 0.5); + if(c[0] > 0.0) c[0] = 1.0 * c[0]; + if(c[0] < 0.0) c[0] = -1.0 * c[0]; + if(c[1] > 0.0) c[1] = 1.0 * c[1]; + if(c[1] < 0.0) c[1] = -1.0 * c[1]; + + gl_FragColor = vec4(c, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_vert_xvary.vert new file mode 100644 index 00000000000..fde1a269c83 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 2.0 * (gtf_Color.rg - 0.5); + color = vec4(c * sign(c), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..000159fc54f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec2_vert_xvary_ref.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 2.0 * (gtf_Color.rg - 0.5); + if(c[0] > 0.0) c[0] = 1.0 * c[0]; + if(c[0] < 0.0) c[0] = -1.0 * c[0]; + if(c[1] > 0.0) c[1] = 1.0 * c[1]; + if(c[1] < 0.0) c[1] = -1.0 * c[1]; + + color = vec4(c, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_frag_xvary.frag new file mode 100644 index 00000000000..21b915804c5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 2.0 * (color.rgb - 0.5); + gl_FragColor = vec4(c * (sign(c)), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..4646aadadf8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_frag_xvary_ref.frag @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 2.0 * (color.rgb - 0.5); + + if(c[0] > 0.0) c[0] = 1.0 * c[0]; + if(c[0] < 0.0) c[0] = -1.0 * c[0]; + if(c[1] > 0.0) c[1] = 1.0 * c[1]; + if(c[1] < 0.0) c[1] = -1.0 * c[1]; + if(c[2] > 0.0) c[2] = 1.0 * c[2]; + if(c[2] < 0.0) c[2] = -1.0 * c[2]; + + gl_FragColor = vec4(c, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_vert_xvary.vert new file mode 100644 index 00000000000..991fbcad8c0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 2.0 * (gtf_Color.rgb - 0.5); + color = vec4(c * sign(c), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..d6cb2e71103 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sign/sign_vec3_vert_xvary_ref.vert @@ -0,0 +1,44 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 2.0 * (gtf_Color.rgb - 0.5); + + if(c[0] > 0.0) c[0] = 1.0 * c[0]; + if(c[0] < 0.0) c[0] = -1.0 * c[0]; + if(c[1] > 0.0) c[1] = 1.0 * c[1]; + if(c[1] < 0.0) c[1] = -1.0 * c[1]; + if(c[2] > 0.0) c[2] = 1.0 * c[2]; + if(c[2] < 0.0) c[2] = -1.0 * c[2]; + + color = vec4(c, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/input.run.txt new file mode 100644 index 00000000000..2995c565885 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +sin_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_001_to_006.html new file mode 100644 index 00000000000..ae6a80723b5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: sin_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_frag_xvary.frag new file mode 100644 index 00000000000..ce1bd224fd3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + gl_FragColor = vec4(0.5 * sin(2.0 * M_PI * color.r) + 0.5, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..16253c93b54 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_frag_xvary_ref.frag @@ -0,0 +1,101 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +float lerp(float a, float b, float s) +{ + return a + (b - a) * s; +} + +void main (void) +{ + float sinValues[17]; + sinValues[0] = 0.0; + sinValues[1] = 0.382683; + sinValues[2] = 0.707107; + sinValues[3] = 0.92388; + sinValues[4] = 1.0; + sinValues[5] = 0.92388; + sinValues[6] = 0.707107; + sinValues[7] = 0.382683; + sinValues[8] = 0.0; + sinValues[9] = -0.382683; + sinValues[10] = -0.707107; + sinValues[11] = -0.92388; + sinValues[12] = -1.0; + sinValues[13] = -0.923879; + sinValues[14] = -0.707107; + sinValues[15] = -0.382683; + sinValues[16] = 0.0; + + const float M_PI = 3.14159265358979323846; + float c = 2.0 * M_PI * color.r; + + float arrVal = c * 2.546478971; + int arr0 = int(floor(arrVal)); + float weight = arrVal - floor(arrVal); + float sin_c = 0.0; + + if (arr0 == 0) + sin_c = lerp(sinValues[0], sinValues[1], weight); + else if (arr0 == 1) + sin_c = lerp(sinValues[1], sinValues[2], weight); + else if (arr0 == 2) + sin_c = lerp(sinValues[2], sinValues[3], weight); + else if (arr0 == 3) + sin_c = lerp(sinValues[3], sinValues[4], weight); + else if (arr0 == 4) + sin_c = lerp(sinValues[4], sinValues[5], weight); + else if (arr0 == 5) + sin_c = lerp(sinValues[5], sinValues[6], weight); + else if (arr0 == 6) + sin_c = lerp(sinValues[6], sinValues[7], weight); + else if (arr0 == 7) + sin_c = lerp(sinValues[7], sinValues[8], weight); + else if (arr0 == 8) + sin_c = lerp(sinValues[8], sinValues[9], weight); + else if (arr0 == 9) + sin_c = lerp(sinValues[9], sinValues[10], weight); + else if (arr0 == 10) + sin_c = lerp(sinValues[10], sinValues[11], weight); + else if (arr0 == 11) + sin_c = lerp(sinValues[11], sinValues[12], weight); + else if (arr0 == 12) + sin_c = lerp(sinValues[12], sinValues[13], weight); + else if (arr0 == 13) + sin_c = lerp(sinValues[13], sinValues[14], weight); + else if (arr0 == 14) + sin_c = lerp(sinValues[14], sinValues[15], weight); + else if (arr0 == 15) + sin_c = lerp(sinValues[15], sinValues[16], weight); + else if (arr0 == 16) + sin_c = sinValues[16]; + + gl_FragColor = vec4(0.5 * sin_c + 0.5, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_vert_xvary.vert new file mode 100644 index 00000000000..e1fd79d7272 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + color = vec4(0.5 * sin(2.0 * M_PI * gtf_Color.r) + 0.5, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..2e4a52afa92 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_float_vert_xvary_ref.vert @@ -0,0 +1,55 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 2.0 * M_PI * gtf_Color.r; + float sign = 1.0; + + float sin_c = 0.0; + float fact; + float fact_of; + + // Taylors series expansion for sin + for(int i = 0; i < 12; i++) + { + fact = 1.0; + for(int j = 2; j <= 23; j++) + if (j <= 2 * i + 1) + fact *= float(j); + + sin_c += sign * pow(c, 2.0 * float(i) + 1.0) / fact; + sign *= -1.0; + } + + color = vec4(0.5 * sin_c + 0.5, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_frag_xvary.frag new file mode 100644 index 00000000000..6227170b3dd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + gl_FragColor = vec4(0.5 * sin(2.0 * M_PI * color.rg) + 0.5, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..2d3fc7f372a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_frag_xvary_ref.frag @@ -0,0 +1,137 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +float lerp(float a, float b, float s) +{ + return a + (b - a) * s; +} + +void main (void) +{ + float sinValues[17]; + sinValues[0] = 0.0; + sinValues[1] = 0.382683; + sinValues[2] = 0.707107; + sinValues[3] = 0.92388; + sinValues[4] = 1.0; + sinValues[5] = 0.92388; + sinValues[6] = 0.707107; + sinValues[7] = 0.382683; + sinValues[8] = 0.0; + sinValues[9] = -0.382683; + sinValues[10] = -0.707107; + sinValues[11] = -0.92388; + sinValues[12] = -1.0; + sinValues[13] = -0.923879; + sinValues[14] = -0.707107; + sinValues[15] = -0.382683; + sinValues[16] = 0.0; + + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * M_PI * color.rg; + + vec2 arrVal = c * 2.546478971; + int arr0x = int(floor(arrVal.x)); + int arr0y = int(floor(arrVal.y)); + vec2 weight = arrVal - floor(arrVal); + vec2 sin_c = vec2(0.0, 0.0); + + if (arr0x == 0) + sin_c.x = lerp(sinValues[0], sinValues[1], weight.x); + else if (arr0x == 1) + sin_c.x = lerp(sinValues[1], sinValues[2], weight.x); + else if (arr0x == 2) + sin_c.x = lerp(sinValues[2], sinValues[3], weight.x); + else if (arr0x == 3) + sin_c.x = lerp(sinValues[3], sinValues[4], weight.x); + else if (arr0x == 4) + sin_c.x = lerp(sinValues[4], sinValues[5], weight.x); + else if (arr0x == 5) + sin_c.x = lerp(sinValues[5], sinValues[6], weight.x); + else if (arr0x == 6) + sin_c.x = lerp(sinValues[6], sinValues[7], weight.x); + else if (arr0x == 7) + sin_c.x = lerp(sinValues[7], sinValues[8], weight.x); + else if (arr0x == 8) + sin_c.x = lerp(sinValues[8], sinValues[9], weight.x); + else if (arr0x == 9) + sin_c.x = lerp(sinValues[9], sinValues[10], weight.x); + else if (arr0x == 10) + sin_c.x = lerp(sinValues[10], sinValues[11], weight.x); + else if (arr0x == 11) + sin_c.x = lerp(sinValues[11], sinValues[12], weight.x); + else if (arr0x == 12) + sin_c.x = lerp(sinValues[12], sinValues[13], weight.x); + else if (arr0x == 13) + sin_c.x = lerp(sinValues[13], sinValues[14], weight.x); + else if (arr0x == 14) + sin_c.x = lerp(sinValues[14], sinValues[15], weight.x); + else if (arr0x == 15) + sin_c.x = lerp(sinValues[15], sinValues[16], weight.x); + else if (arr0x == 16) + sin_c.x = sinValues[16]; + + if (arr0y == 0) + sin_c.y = lerp(sinValues[0], sinValues[1], weight.y); + else if (arr0y == 1) + sin_c.y = lerp(sinValues[1], sinValues[2], weight.y); + else if (arr0y == 2) + sin_c.y = lerp(sinValues[2], sinValues[3], weight.y); + else if (arr0y == 3) + sin_c.y = lerp(sinValues[3], sinValues[4], weight.y); + else if (arr0y == 4) + sin_c.y = lerp(sinValues[4], sinValues[5], weight.y); + else if (arr0y == 5) + sin_c.y = lerp(sinValues[5], sinValues[6], weight.y); + else if (arr0y == 6) + sin_c.y = lerp(sinValues[6], sinValues[7], weight.y); + else if (arr0y == 7) + sin_c.y = lerp(sinValues[7], sinValues[8], weight.y); + else if (arr0y == 8) + sin_c.y = lerp(sinValues[8], sinValues[9], weight.y); + else if (arr0y == 9) + sin_c.y = lerp(sinValues[9], sinValues[10], weight.y); + else if (arr0y == 10) + sin_c.y = lerp(sinValues[10], sinValues[11], weight.y); + else if (arr0y == 11) + sin_c.y = lerp(sinValues[11], sinValues[12], weight.y); + else if (arr0y == 12) + sin_c.y = lerp(sinValues[12], sinValues[13], weight.y); + else if (arr0y == 13) + sin_c.y = lerp(sinValues[13], sinValues[14], weight.y); + else if (arr0y == 14) + sin_c.y = lerp(sinValues[14], sinValues[15], weight.y); + else if (arr0y == 15) + sin_c.y = lerp(sinValues[15], sinValues[16], weight.y); + else if (arr0y == 16) + sin_c.y = sinValues[16]; + + gl_FragColor = vec4(0.5 * sin_c + 0.5, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_vert_xvary.vert new file mode 100644 index 00000000000..615eb679358 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + color = vec4(0.5 * sin(2.0 * M_PI * gtf_Color.rg) + 0.5, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..9c11df9a2ad --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec2_vert_xvary_ref.vert @@ -0,0 +1,79 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +float lerp(float a, float b, float s) +{ + return a + (b - a) * s; +} + +void main (void) +{ + float sinValues[17]; + sinValues[0] = 0.0; + sinValues[1] = 0.382683; + sinValues[2] = 0.707107; + sinValues[3] = 0.92388; + sinValues[4] = 1.0; + sinValues[5] = 0.92388; + sinValues[6] = 0.707107; + sinValues[7] = 0.382683; + sinValues[8] = 0.0; + sinValues[9] = -0.382683; + sinValues[10] = -0.707107; + sinValues[11] = -0.92388; + sinValues[12] = -1.0; + sinValues[13] = -0.923879; + sinValues[14] = -0.707107; + sinValues[15] = -0.382683; + sinValues[16] = 0.0; + + const float M_PI = 3.14159265358979323846; + vec2 c = 2.0 * M_PI * gtf_Color.rg; + float sign = 1.0; + + vec2 sin_c = vec2(0.0); + float fact; + float fact_of; + + // Taylors series expansion for sin + for(int i = 0; i < 12; i++) + { + fact = 1.0; + for(int j = 2; j <= 23; j++) + if (j <= 2 * i + 1) + fact *= float(j); + + sin_c += sign * pow(c, vec2(2.0 * float(i) + 1.0)) / fact; + sign *= -1.0; + } + + color = vec4(0.5 * sin_c + 0.5, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_frag_xvary.frag new file mode 100644 index 00000000000..892e996e900 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + gl_FragColor = vec4(0.5 * sin(2.0 * M_PI * color.rgb) + 0.5, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..44c586d2fa6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_frag_xvary_ref.frag @@ -0,0 +1,173 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +float lerp(float a, float b, float s) +{ + return a + (b - a) * s; +} + +void main (void) +{ + float sinValues[17]; + sinValues[0] = 0.0; + sinValues[1] = 0.382683; + sinValues[2] = 0.707107; + sinValues[3] = 0.92388; + sinValues[4] = 1.0; + sinValues[5] = 0.92388; + sinValues[6] = 0.707107; + sinValues[7] = 0.382683; + sinValues[8] = 0.0; + sinValues[9] = -0.382683; + sinValues[10] = -0.707107; + sinValues[11] = -0.92388; + sinValues[12] = -1.0; + sinValues[13] = -0.923879; + sinValues[14] = -0.707107; + sinValues[15] = -0.382683; + sinValues[16] = 0.0; + + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * M_PI * color.rgb; + + vec3 arrVal = c * 2.546478971; + int arr0x = int(floor(arrVal.x)); + int arr0y = int(floor(arrVal.y)); + int arr0z = int(floor(arrVal.z)); + vec3 weight = arrVal - floor(arrVal); + vec3 sin_c = vec3(0.0, 0.0, 0.0); + + if (arr0x == 0) + sin_c.x = lerp(sinValues[0], sinValues[1], weight.x); + else if (arr0x == 1) + sin_c.x = lerp(sinValues[1], sinValues[2], weight.x); + else if (arr0x == 2) + sin_c.x = lerp(sinValues[2], sinValues[3], weight.x); + else if (arr0x == 3) + sin_c.x = lerp(sinValues[3], sinValues[4], weight.x); + else if (arr0x == 4) + sin_c.x = lerp(sinValues[4], sinValues[5], weight.x); + else if (arr0x == 5) + sin_c.x = lerp(sinValues[5], sinValues[6], weight.x); + else if (arr0x == 6) + sin_c.x = lerp(sinValues[6], sinValues[7], weight.x); + else if (arr0x == 7) + sin_c.x = lerp(sinValues[7], sinValues[8], weight.x); + else if (arr0x == 8) + sin_c.x = lerp(sinValues[8], sinValues[9], weight.x); + else if (arr0x == 9) + sin_c.x = lerp(sinValues[9], sinValues[10], weight.x); + else if (arr0x == 10) + sin_c.x = lerp(sinValues[10], sinValues[11], weight.x); + else if (arr0x == 11) + sin_c.x = lerp(sinValues[11], sinValues[12], weight.x); + else if (arr0x == 12) + sin_c.x = lerp(sinValues[12], sinValues[13], weight.x); + else if (arr0x == 13) + sin_c.x = lerp(sinValues[13], sinValues[14], weight.x); + else if (arr0x == 14) + sin_c.x = lerp(sinValues[14], sinValues[15], weight.x); + else if (arr0x == 15) + sin_c.x = lerp(sinValues[15], sinValues[16], weight.x); + else if (arr0x == 16) + sin_c.x = sinValues[16]; + + if (arr0y == 0) + sin_c.y = lerp(sinValues[0], sinValues[1], weight.y); + else if (arr0y == 1) + sin_c.y = lerp(sinValues[1], sinValues[2], weight.y); + else if (arr0y == 2) + sin_c.y = lerp(sinValues[2], sinValues[3], weight.y); + else if (arr0y == 3) + sin_c.y = lerp(sinValues[3], sinValues[4], weight.y); + else if (arr0y == 4) + sin_c.y = lerp(sinValues[4], sinValues[5], weight.y); + else if (arr0y == 5) + sin_c.y = lerp(sinValues[5], sinValues[6], weight.y); + else if (arr0y == 6) + sin_c.y = lerp(sinValues[6], sinValues[7], weight.y); + else if (arr0y == 7) + sin_c.y = lerp(sinValues[7], sinValues[8], weight.y); + else if (arr0y == 8) + sin_c.y = lerp(sinValues[8], sinValues[9], weight.y); + else if (arr0y == 9) + sin_c.y = lerp(sinValues[9], sinValues[10], weight.y); + else if (arr0y == 10) + sin_c.y = lerp(sinValues[10], sinValues[11], weight.y); + else if (arr0y == 11) + sin_c.y = lerp(sinValues[11], sinValues[12], weight.y); + else if (arr0y == 12) + sin_c.y = lerp(sinValues[12], sinValues[13], weight.y); + else if (arr0y == 13) + sin_c.y = lerp(sinValues[13], sinValues[14], weight.y); + else if (arr0y == 14) + sin_c.y = lerp(sinValues[14], sinValues[15], weight.y); + else if (arr0y == 15) + sin_c.y = lerp(sinValues[15], sinValues[16], weight.y); + else if (arr0y == 16) + sin_c.y = sinValues[16]; + + if (arr0z == 0) + sin_c.z = lerp(sinValues[0], sinValues[1], weight.z); + else if (arr0z == 1) + sin_c.z = lerp(sinValues[1], sinValues[2], weight.z); + else if (arr0z == 2) + sin_c.z = lerp(sinValues[2], sinValues[3], weight.z); + else if (arr0z == 3) + sin_c.z = lerp(sinValues[3], sinValues[4], weight.z); + else if (arr0z == 4) + sin_c.z = lerp(sinValues[4], sinValues[5], weight.z); + else if (arr0z == 5) + sin_c.z = lerp(sinValues[5], sinValues[6], weight.z); + else if (arr0z == 6) + sin_c.z = lerp(sinValues[6], sinValues[7], weight.z); + else if (arr0z == 7) + sin_c.z = lerp(sinValues[7], sinValues[8], weight.z); + else if (arr0z == 8) + sin_c.z = lerp(sinValues[8], sinValues[9], weight.z); + else if (arr0z == 9) + sin_c.z = lerp(sinValues[9], sinValues[10], weight.z); + else if (arr0z == 10) + sin_c.z = lerp(sinValues[10], sinValues[11], weight.z); + else if (arr0z == 11) + sin_c.z = lerp(sinValues[11], sinValues[12], weight.z); + else if (arr0z == 12) + sin_c.z = lerp(sinValues[12], sinValues[13], weight.z); + else if (arr0z == 13) + sin_c.z = lerp(sinValues[13], sinValues[14], weight.z); + else if (arr0z == 14) + sin_c.z = lerp(sinValues[14], sinValues[15], weight.z); + else if (arr0z == 15) + sin_c.z = lerp(sinValues[15], sinValues[16], weight.z); + else if (arr0z == 16) + sin_c.z = sinValues[16]; + + gl_FragColor = vec4(0.5 * sin_c + 0.5, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_vert_xvary.vert new file mode 100644 index 00000000000..d60370e4509 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + color = vec4(0.5 * sin(2.0 * M_PI * gtf_Color.rgb) + 0.5, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..85578df07e4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sin/sin_vec3_vert_xvary_ref.vert @@ -0,0 +1,79 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +float lerp(float a, float b, float s) +{ + return a + (b - a) * s; +} + +void main (void) +{ + float sinValues[17]; + sinValues[0] = 0.0; + sinValues[1] = 0.382683; + sinValues[2] = 0.707107; + sinValues[3] = 0.92388; + sinValues[4] = 1.0; + sinValues[5] = 0.92388; + sinValues[6] = 0.707107; + sinValues[7] = 0.382683; + sinValues[8] = 0.0; + sinValues[9] = -0.382683; + sinValues[10] = -0.707107; + sinValues[11] = -0.92388; + sinValues[12] = -1.0; + sinValues[13] = -0.923879; + sinValues[14] = -0.707107; + sinValues[15] = -0.382683; + sinValues[16] = 0.0; + + const float M_PI = 3.14159265358979323846; + vec3 c = 2.0 * M_PI * gtf_Color.rgb; + float sign = 1.0; + + vec3 sin_c = vec3(0.0); + float fact; + float fact_of; + + // Taylors series expansion for sin + for(int i = 0; i < 12; i++) + { + fact = 1.0; + for(int j = 2; j <= 23; j++) + if (j <= 2 * i + 1) + fact *= float(j); + + sin_c += sign * pow(c, vec3(2.0 * float(i) + 1.0)) / fact; + sign *= -1.0; + } + + color = vec4(0.5 * sin_c + 0.5, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/input.run.txt new file mode 100644 index 00000000000..4121dd5f8cf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +smoothstep_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_001_to_006.html new file mode 100644 index 00000000000..06731acc314 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: smoothstep_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_frag_xvary_edgeconstquarter.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_frag_xvary_edgeconstquarter.frag new file mode 100644 index 00000000000..f7b8ed3d5d5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_frag_xvary_edgeconstquarter.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float edge0 = 0.25; + const float edge1 = 0.75; + gl_FragColor = vec4(smoothstep(edge0, edge1, color.r), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_frag_xvary_edgeconstquarter_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_frag_xvary_edgeconstquarter_ref.frag new file mode 100644 index 00000000000..92e49f0f059 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_frag_xvary_edgeconstquarter_ref.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float edge0 = 0.25; + const float edge1 = 0.75; + float c = clamp((color.r - edge0) / (edge1 - edge0), 0.0, 1.0); + + gl_FragColor = vec4(c * c * (3.0 - 2.0 * c), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_vert_xvary_edgeconstquarter.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_vert_xvary_edgeconstquarter.vert new file mode 100644 index 00000000000..bf8ff22cce9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_vert_xvary_edgeconstquarter.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float edge0 = 0.25; + const float edge1 = 0.75; + color = vec4(smoothstep(edge0, edge1, gtf_Color.r), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_vert_xvary_edgeconstquarter_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_vert_xvary_edgeconstquarter_ref.vert new file mode 100644 index 00000000000..55422bffd2f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_float_vert_xvary_edgeconstquarter_ref.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float edge0 = 0.25; + const float edge1 = 0.75; + float c = clamp((gtf_Color.r - edge0) / (edge1 - edge0), 0.0, 1.0); + + color = vec4(c * c * (3.0 - 2.0 * c), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_frag_xvary_edgeconstquarter.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_frag_xvary_edgeconstquarter.frag new file mode 100644 index 00000000000..bd235720c5b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_frag_xvary_edgeconstquarter.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec2 edge0 = vec2(0.25, 0.25); + const vec2 edge1 = vec2(0.75, 0.75); + gl_FragColor = vec4(smoothstep(edge0, edge1, color.rg), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_frag_xvary_edgeconstquarter_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_frag_xvary_edgeconstquarter_ref.frag new file mode 100644 index 00000000000..8790241d9af --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_frag_xvary_edgeconstquarter_ref.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec2 edge0 = vec2(0.25, 0.25); + const vec2 edge1 = vec2(0.75, 0.75); + vec2 c = clamp((color.rg - edge0) / (edge1 - edge0), 0.0, 1.0); + gl_FragColor = vec4(c * c * (3.0 - 2.0 * c), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_vert_xvary_edgeconstquarter.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_vert_xvary_edgeconstquarter.vert new file mode 100644 index 00000000000..06f12e32874 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_vert_xvary_edgeconstquarter.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec2 edge0 = vec2(0.25, 0.25); + const vec2 edge1 = vec2(0.75, 0.75); + color = vec4(smoothstep(edge0, edge1, gtf_Color.rg), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_vert_xvary_edgeconstquarter_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_vert_xvary_edgeconstquarter_ref.vert new file mode 100644 index 00000000000..00b4f7a25c1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec2_vert_xvary_edgeconstquarter_ref.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec2 edge0 = vec2(0.25, 0.25); + const vec2 edge1 = vec2(0.75, 0.75); + vec2 c = clamp((gtf_Color.rg - edge0) / (edge1 - edge0), 0.0, 1.0); + color = vec4(c * c * (3.0 - 2.0 * c), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_frag_xvary_edgeconstquarter.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_frag_xvary_edgeconstquarter.frag new file mode 100644 index 00000000000..e7ad681e780 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_frag_xvary_edgeconstquarter.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec3 edge0 = vec3(0.25, 0.25, 0.25); + const vec3 edge1 = vec3(0.75, 0.75, 0.75); + gl_FragColor = vec4(smoothstep(edge0, edge1, color.rgb), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_frag_xvary_edgeconstquarter_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_frag_xvary_edgeconstquarter_ref.frag new file mode 100644 index 00000000000..e07971e0f39 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_frag_xvary_edgeconstquarter_ref.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec3 edge0 = vec3(0.25, 0.25, 0.25); + const vec3 edge1 = vec3(0.75, 0.75, 0.75); + vec3 c = clamp((color.rgb - edge0) / (edge1 - edge0), 0.0, 1.0); + + gl_FragColor = vec4(c * c * (3.0 - 2.0 * c), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_vert_xvary_edgeconstquarter.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_vert_xvary_edgeconstquarter.vert new file mode 100644 index 00000000000..e12ed931752 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_vert_xvary_edgeconstquarter.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec3 edge0 = vec3(0.25, 0.25, 0.25); + const vec3 edge1 = vec3(0.75, 0.75, 0.75); + color = vec4(smoothstep(edge0, edge1, gtf_Color.rgb), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_vert_xvary_edgeconstquarter_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_vert_xvary_edgeconstquarter_ref.vert new file mode 100644 index 00000000000..4798adb9073 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/smoothstep/smoothstep_vec3_vert_xvary_edgeconstquarter_ref.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec3 edge0 = vec3(0.25, 0.25, 0.25); + const vec3 edge1 = vec3(0.75, 0.75, 0.75); + vec3 c = clamp((gtf_Color.rgb - edge0) / (edge1 - edge0), 0.0, 1.0); + + color = vec4(c * c * (3.0 - 2.0 * c), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/input.run.txt new file mode 100644 index 00000000000..a151ee6448b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +sqrt_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_001_to_006.html new file mode 100644 index 00000000000..ff5fb1cee99 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: sqrt_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_frag_xvary.frag new file mode 100644 index 00000000000..bb2604b1864 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = sqrt(100.0 * color.r); + gl_FragColor = vec4(c * c / 100.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..2055b814db8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_frag_xvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + float c = 100.0 * color.r; + gl_FragColor = vec4(c / 100.0, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_vert_xvary.vert new file mode 100644 index 00000000000..7982ebf2a1e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = sqrt(100.0 * gtf_Color.r); + color = vec4(c * c / 100.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..eb4f1441377 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_float_vert_xvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + float c = 100.0 * gtf_Color.r; + color = vec4(c / 100.0, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_frag_xvary.frag new file mode 100644 index 00000000000..e70a2ccbdfa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = sqrt(100.0 * color.rg); + gl_FragColor = vec4(c * c / 100.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..4253e103457 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_frag_xvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 c = 100.0 * color.rg; + gl_FragColor = vec4(c / 100.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_vert_xvary.vert new file mode 100644 index 00000000000..30587af1d67 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = sqrt(100.0 * gtf_Color.rg); + color = vec4(c * c / 100.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..cb61ec8f079 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec2_vert_xvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 c = 100.0 * gtf_Color.rg; + color = vec4(c / 100.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_frag_xvary.frag new file mode 100644 index 00000000000..b4d5c281cad --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_frag_xvary.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = sqrt(100.0 * color.rgb); + gl_FragColor = vec4(c * c / 100.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..1fb1f880a95 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_frag_xvary_ref.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 c = 100.0 * color.rgb; + gl_FragColor = vec4(c / 100.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_vert_xvary.vert new file mode 100644 index 00000000000..1e3c8beae77 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_vert_xvary.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = sqrt(100.0 * gtf_Color.rgb); + color = vec4(c * c / 100.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..e54f86babb1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/sqrt/sqrt_vec3_vert_xvary_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 c = 100.0 * gtf_Color.rgb; + color = vec4(c / 100.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/input.run.txt new file mode 100644 index 00000000000..6b8ac005dc5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +step_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_001_to_006.html new file mode 100644 index 00000000000..b2572d445b5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: step_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_frag_xvary_edgeconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_frag_xvary_edgeconsthalf.frag new file mode 100644 index 00000000000..94e69d79c7c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_frag_xvary_edgeconsthalf.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float edge = 0.5; + gl_FragColor = vec4(step(edge, color.r), 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_frag_xvary_edgeconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_frag_xvary_edgeconsthalf_ref.frag new file mode 100644 index 00000000000..b601eb78bfe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_frag_xvary_edgeconsthalf_ref.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float edge = 0.5; + float c = color.r; + if(c >= edge) c = 1.0; + else c = 0.0; + + gl_FragColor = vec4(c, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_vert_xvary_edgeconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_vert_xvary_edgeconsthalf.vert new file mode 100644 index 00000000000..2a3834f21d6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_vert_xvary_edgeconsthalf.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float edge = 0.5; + color = vec4(step(edge, gtf_Color.r), 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_vert_xvary_edgeconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_vert_xvary_edgeconsthalf_ref.vert new file mode 100644 index 00000000000..3db47cac60e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_float_vert_xvary_edgeconsthalf_ref.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float edge = 0.5; + float c = gtf_Color.r; + if(c >= edge) c = 1.0; + else c = 0.0; + + color = vec4(c, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_frag_xvary_edgeconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_frag_xvary_edgeconsthalf.frag new file mode 100644 index 00000000000..93cc99fe2d3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_frag_xvary_edgeconsthalf.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec2 edge = vec2(0.5, 0.5); + gl_FragColor = vec4(step(edge, color.rg), 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_frag_xvary_edgeconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_frag_xvary_edgeconsthalf_ref.frag new file mode 100644 index 00000000000..d8d361010af --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_frag_xvary_edgeconsthalf_ref.frag @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec2 edge = vec2(0.5, 0.5); + vec2 c = color.rg; + if(c[0] >= edge[0]) + { + c[0] = 1.0; + } + else + { + c[0] = 0.0; + } + if(c[1] >= edge[1]) + { + c[1] = 1.0; + } + else + { + c[1] = 0.0; + } + + gl_FragColor = vec4(c, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_vert_xvary_edgeconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_vert_xvary_edgeconsthalf.vert new file mode 100644 index 00000000000..d0df7388634 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_vert_xvary_edgeconsthalf.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec2 edge = vec2(0.5, 0.5); + color = vec4(step(edge, gtf_Color.rg), 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_vert_xvary_edgeconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_vert_xvary_edgeconsthalf_ref.vert new file mode 100644 index 00000000000..11c5640e5aa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec2_vert_xvary_edgeconsthalf_ref.vert @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec2 edge = vec2(0.5, 0.5); + vec2 c = gtf_Color.rg; + if(c[0] >= edge[0]) + { + c[0] = 1.0; + } + else + { + c[0] = 0.0; + } + if(c[1] >= edge[1]) + { + c[1] = 1.0; + } + else + { + c[1] = 0.0; + } + + color = vec4(c, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_frag_xvary_edgeconsthalf.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_frag_xvary_edgeconsthalf.frag new file mode 100644 index 00000000000..87c64f539f9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_frag_xvary_edgeconsthalf.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec3 edge = vec3(0.5, 0.5, 0.5); + gl_FragColor = vec4(step(edge, color.rgb), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_frag_xvary_edgeconsthalf_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_frag_xvary_edgeconsthalf_ref.frag new file mode 100644 index 00000000000..3d99682225a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_frag_xvary_edgeconsthalf_ref.frag @@ -0,0 +1,61 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const vec3 edge = vec3(0.5, 0.5, 0.5); + vec3 c = color.rgb; + if(c[0] >= edge[0]) + { + c[0] = 1.0; + } + else + { + c[0] = 0.0; + } + if(c[1] >= edge[1]) + { + c[1] = 1.0; + } + else + { + c[1] = 0.0; + } + if(c[2] >= edge[2]) + { + c[2] = 1.0; + } + else + { + c[2] = 0.0; + } + + gl_FragColor = vec4(c, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_vert_xvary_edgeconsthalf.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_vert_xvary_edgeconsthalf.vert new file mode 100644 index 00000000000..0ac85addc02 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_vert_xvary_edgeconsthalf.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec3 edge = vec3(0.5, 0.5, 0.5); + color = vec4(step(edge, gtf_Color.rgb), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_vert_xvary_edgeconsthalf_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_vert_xvary_edgeconsthalf_ref.vert new file mode 100644 index 00000000000..d85a52ebe7f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/step/step_vec3_vert_xvary_edgeconsthalf_ref.vert @@ -0,0 +1,62 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const vec3 edge = vec3(0.5, 0.5, 0.5); + vec3 c = gtf_Color.rgb; + if(c[0] >= edge[0]) + { + c[0] = 1.0; + } + else + { + c[0] = 0.0; + } + if(c[1] >= edge[1]) + { + c[1] = 1.0; + } + else + { + c[1] = 0.0; + } + if(c[2] >= edge[2]) + { + c[2] = 1.0; + } + else + { + c[2] = 0.0; + } + + color = vec4(c, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/input.run.txt new file mode 100644 index 00000000000..89c3da16ec0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/input.run.txt @@ -0,0 +1,8 @@ +# this file is auto-generated. DO NOT EDIT. +struct_001_to_008.html +struct_009_to_016.html +struct_017_to_024.html +struct_025_to_032.html +struct_033_to_040.html +struct_041_to_048.html +struct_049_to_056.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/nestedstructcomb_various_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/nestedstructcomb_various_frag.frag new file mode 100644 index 00000000000..feb6532ed40 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/nestedstructcomb_various_frag.frag @@ -0,0 +1,116 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void){ + struct second_nest + { + float sc_nt; + mat2 sc_mt2; + vec4 sc_vc4; + }; + + struct nest + { + ivec3 nt_ivc3; + bvec4 nt_bvc4; + second_nest nt_scne; + }; + + struct test_t + { + float t_fl; + vec2 t_vc2; + vec3 t_vc3; + mat4 t_mt4; + nest t_nested; + float t_2fl; + }; + + vec4 mt1 = vec4(31.0, 32.0, 33.0, 34.0); + vec4 mt2 = vec4(35.0, 36.0, 37.0, 38.0); + vec4 mt3 = vec4(39.0, 40.0, 41.0, 42.0); + vec4 mt4 = vec4(43.0, 44.0, 45.0, 46.0); + int i=0; + float sum1=0.0, sum2=0.0, sum3=0.0, sum4=0.0; + + test_t a = test_t(23.0, vec2(12.0, 13.0), + + vec3(163.0, 173.0, 183.0), + + mat4(mt1, mt2, mt3, mt4), + + nest( ivec3(73, 74, 75), + + bvec4(12, 0, 17.0, 193.0 ), + + second_nest(144.0, mat2(22.0, 23.0, 24.0, 25.0), vec4(57.0, 58.0, 59.0, 60.0 ) + ) + ), + + 203.0 + ); + + sum1 = a.t_mt4[0][0] + a.t_mt4[0][1] + a.t_mt4[0][2] + a.t_mt4[0][3]; + sum2 = a.t_mt4[1][0] + a.t_mt4[1][1] + a.t_mt4[1][2] + a.t_mt4[1][3]; + sum3 = a.t_mt4[2][0] + a.t_mt4[2][1] + a.t_mt4[2][2] + a.t_mt4[2][3]; + sum4 = a.t_mt4[3][0] + a.t_mt4[3][1] + a.t_mt4[3][2] + a.t_mt4[3][3]; + + float gray; + if( ( a.t_fl == 23.0 ) && + + (a.t_vc2[0] == 12.0) && (a.t_vc2[1] == 13.0) && + + (a.t_vc3[0] == 163.0) && (a.t_vc3[1] == 173.0) && (a.t_vc3[2] == 183.0) && + + (sum1 > 130.0-ERROR_EPSILON && sum1 < 130.0+ERROR_EPSILON ) && (sum2 > 146.0-ERROR_EPSILON && sum2 < 146.0+ERROR_EPSILON ) && (sum3 >162.0-ERROR_EPSILON && sum3 < 162.0+ERROR_EPSILON ) && (sum4 > 178.0-ERROR_EPSILON && sum4 < 178.0+ERROR_EPSILON ) && + (a.t_nested.nt_ivc3[0] == 73 ) && (a.t_nested.nt_ivc3[1] == 74 ) && (a.t_nested.nt_ivc3[2] == 75 ) && + + (a.t_nested.nt_bvc4[0] == true) && (a.t_nested.nt_bvc4[1] == false) && + + (a.t_nested.nt_bvc4[2] == true ) && (a.t_nested.nt_bvc4[0] == true) && + + (a.t_nested.nt_scne.sc_nt == 144.0) && + + (a.t_nested.nt_scne.sc_mt2[0][0] == 22.0 ) && (a.t_nested.nt_scne.sc_mt2[0][1] == 23.0 ) && + + (a.t_nested.nt_scne.sc_mt2[1][0] == 24.0 ) && (a.t_nested.nt_scne.sc_mt2[1][1] == 25.0 ) && + + (a.t_nested.nt_scne.sc_vc4[0] == 57.0 ) && (a.t_nested.nt_scne.sc_vc4[1] == 58.0 ) && + + (a.t_nested.nt_scne.sc_vc4[2] == 59.0 ) && (a.t_nested.nt_scne.sc_vc4[3] == 60.0) && + + (a.t_2fl == 203.0) + ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/nestedstructcomb_various_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/nestedstructcomb_various_vert.vert new file mode 100644 index 00000000000..a84aeb9dfa7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/nestedstructcomb_various_vert.vert @@ -0,0 +1,119 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +#define ERROR_EPSILON 0.1 + +void main (void) +{ + struct second_nest + { + float sc_nt; + mat2 sc_mt2; + vec4 sc_vc4; + }; + + struct nest + { + ivec3 nt_ivc3; + bvec4 nt_bvc4; + second_nest nt_scne; + }; + + struct test_t + { + float t_fl; + vec2 t_vc2; + vec3 t_vc3; + mat4 t_mt4; + nest t_nested; + float t_2fl; + }; + + vec4 mt1 = vec4(31.0, 32.0, 33.0, 34.0); + vec4 mt2 = vec4(35.0, 36.0, 37.0, 38.0); + vec4 mt3 = vec4(39.0, 40.0, 41.0, 42.0); + vec4 mt4 = vec4(43.0, 44.0, 45.0, 46.0); + int i=0; + float sum1=0.0, sum2=0.0, sum3=0.0, sum4=0.0; + + test_t a = test_t(23.0, vec2(12.0, 13.0), + + vec3(163.0, 173.0, 183.0), + + mat4(mt1, mt2, mt3, mt4), + + nest( ivec3(73, 74, 75), + + bvec4(12, 0, 17.0, 193.0 ), + + second_nest(144.0, mat2(22.0, 23.0, 24.0, 25.0), vec4(57.0, 58.0, 59.0, 60.0 ) + ) + ), + + 203.0 + ); + + sum1 = a.t_mt4[0][0] + a.t_mt4[0][1] + a.t_mt4[0][2] + a.t_mt4[0][3]; + sum2 = a.t_mt4[1][0] + a.t_mt4[1][1] + a.t_mt4[1][2] + a.t_mt4[1][3]; + sum3 = a.t_mt4[2][0] + a.t_mt4[2][1] + a.t_mt4[2][2] + a.t_mt4[2][3]; + sum4 = a.t_mt4[3][0] + a.t_mt4[3][1] + a.t_mt4[3][2] + a.t_mt4[3][3]; + + float gray; + if( ( a.t_fl == 23.0 ) && + + (a.t_vc2[0] == 12.0) && (a.t_vc2[1] == 13.0) && + + (a.t_vc3[0] == 163.0) && (a.t_vc3[1] == 173.0) && (a.t_vc3[2] == 183.0) && + + (sum1 > 130.0-ERROR_EPSILON && sum1 < 130.0+ERROR_EPSILON ) && (sum2 > 146.0-ERROR_EPSILON && sum2 < 146.0+ERROR_EPSILON ) && (sum3 >162.0-ERROR_EPSILON && sum3 < 162.0+ERROR_EPSILON ) && (sum4 > 178.0-ERROR_EPSILON && sum4 < 178.0+ERROR_EPSILON ) && + (a.t_nested.nt_ivc3[0] == 73 ) && (a.t_nested.nt_ivc3[1] == 74 ) && (a.t_nested.nt_ivc3[2] == 75 ) && + + (a.t_nested.nt_bvc4[0] == true) && (a.t_nested.nt_bvc4[1] == false) && + + (a.t_nested.nt_bvc4[2] == true ) && (a.t_nested.nt_bvc4[0] == true) && + + (a.t_nested.nt_scne.sc_nt == 144.0) && + + (a.t_nested.nt_scne.sc_mt2[0][0] == 22.0 ) && (a.t_nested.nt_scne.sc_mt2[0][1] == 23.0 ) && + + (a.t_nested.nt_scne.sc_mt2[1][0] == 24.0 ) && (a.t_nested.nt_scne.sc_mt2[1][1] == 25.0 ) && + + (a.t_nested.nt_scne.sc_vc4[0] == 57.0 ) && (a.t_nested.nt_scne.sc_vc4[1] == 58.0 ) && + + (a.t_nested.nt_scne.sc_vc4[2] == 59.0 ) && (a.t_nested.nt_scne.sc_vc4[3] == 60.0) && + + (a.t_2fl == 203.0) + ) + gray=1.0; + else gray=0.0; + + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_001_to_008.html new file mode 100644 index 00000000000..28691b78971 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_001_to_008.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: struct_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_009_to_016.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_009_to_016.html new file mode 100644 index 00000000000..ce9ea01c22c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_009_to_016.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: struct_009_to_016.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_017_to_024.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_017_to_024.html new file mode 100644 index 00000000000..5e64ae4210b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_017_to_024.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: struct_017_to_024.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_025_to_032.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_025_to_032.html new file mode 100644 index 00000000000..1cd3af91d66 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_025_to_032.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: struct_025_to_032.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_033_to_040.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_033_to_040.html new file mode 100644 index 00000000000..e81478b8baf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_033_to_040.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: struct_033_to_040.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_041_to_048.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_041_to_048.html new file mode 100644 index 00000000000..8aaa8da8e80 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_041_to_048.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: struct_041_to_048.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_049_to_056.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_049_to_056.html new file mode 100644 index 00000000000..831ad2fb371 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_049_to_056.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: struct_049_to_056.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bool_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bool_frag.frag new file mode 100644 index 00000000000..2c0439b4cd0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bool_frag.frag @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct sabcd +{ + bool a; + bool b; + bool c; + bool d; +}; + + + +void main (void) +{ + sabcd s = sabcd(bool(12), bool(0), bool(25.5), bool(0.0)); + float gray = 0.0; + if( (s.a==true) && (s.b==false) && (s.c == true) && (s.d==false)) + gray=1.0; + else + gray =0.0; + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bool_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bool_vert.vert new file mode 100644 index 00000000000..56aade4f102 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bool_vert.vert @@ -0,0 +1,52 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + + + +struct sabcd +{ + bool a; + bool b; + bool c; + bool d; +}; + + + +void main (void) +{ + sabcd s = sabcd(bool(12), bool(0), bool(25.5), bool(0.0)); + float gray = 0.0; + if( (s.a==true) && (s.b==false) && (s.c == true) && (s.d==false)) + gray=1.0; + else + gray =0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bvec2bvec3bvec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bvec2bvec3bvec4_frag.frag new file mode 100644 index 00000000000..d819f7a6177 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bvec2bvec3bvec4_frag.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct sabcd +{ + bvec2 a; + bvec3 b; + bvec4 c; +}; + +void main (void) +{ + sabcd s = sabcd( bvec2(12, 13), bvec3(14.0, 0.0, 139.0), bvec4(25.5, 17.0, 145, 163 ) ); + float gray = 0.0; + if( (s.a[0]) && (s.a[1]) && (s.b[0]) && (!s.b[1]) && (s.b[2]) && (s.c[0]) && (s.c[1]) && (s.c[2]) ) + gray=1.0; + else + gray =0.0; + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bvec2bvec3bvec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bvec2bvec3bvec4_vert.vert new file mode 100644 index 00000000000..4509de1b588 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_bvec2bvec3bvec4_vert.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct sabcd +{ + bvec2 a; + bvec3 b; + bvec4 c; +}; + +void main (void) +{ + sabcd s = sabcd( bvec2(12, 13), bvec3(14.0, 0.0, 139.0), bvec4(25.5, 17.0, 145, 163 ) ); + float gray = 0.0; + if( (s.a[0]) && (s.a[1]) && (s.b[0]) && (!s.b[1]) && (s.b[2]) && (s.c[0]) && (s.c[1]) && (s.c[2]) ) + gray=1.0; + else + gray =0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_float_frag.frag new file mode 100644 index 00000000000..57139805bb2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_float_frag.frag @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct sabcd +{ + float a; + float b; + float c; + float d; +}; + + + +void main (void) +{ + sabcd s = sabcd(1.0, 2.0, 4.0, 8.0); + gl_FragColor = vec4(vec3((s.a + s.b + s.c + s.d) / 15.0), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_float_vert.vert new file mode 100644 index 00000000000..2bb966bf275 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_float_vert.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + + + +struct sabcd +{ + float a; + float b; + float c; + float d; +}; + + + +void main (void) +{ + sabcd s = sabcd(1.0, 2.0, 4.0, 8.0); + color = vec4(vec3((s.a + s.b + s.c + s.d) / 15.0), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat2_frag.frag new file mode 100644 index 00000000000..2859cb8d387 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat2_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +struct sabcd +{ + mat2 a; +}; + +void main (void) +{ + sabcd s = sabcd(mat2(12.0, 29.0, 13.0, 26.0) ); + gl_FragColor = vec4( vec3( (s.a[0][0] + s.a[0][1] + s.a[1][0] + s.a[1][1]) / 80.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat2_vert.vert new file mode 100644 index 00000000000..a4c7f6df3b5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat2_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct sabcd +{ + mat2 a; +}; + +void main (void) +{ + sabcd s = sabcd(mat2(12.0, 29.0, 13.0, 26.0) ); + color = vec4( vec3( (s.a[0][0] + s.a[0][1] + s.a[1][0] + s.a[1][1]) / 80.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat3_frag.frag new file mode 100644 index 00000000000..8fe6b3dbebc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat3_frag.frag @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +struct sabcd +{ + mat3 a; +}; + +void main (void) +{ + sabcd s = sabcd(mat3(12.0, 29.0, 13.0, 26.0, 71.0, 63.0, 90.0, 118.0, 128.0) ); + float sum=0.0; + int i,j; + + sum = sum + s.a[0][0]; + sum = sum + s.a[0][1]; + sum = sum + s.a[0][2]; + sum = sum + s.a[1][0]; + sum = sum + s.a[1][1]; + sum = sum + s.a[1][2]; + sum = sum + s.a[2][0]; + sum = sum + s.a[2][1]; + sum = sum + s.a[2][2]; + + gl_FragColor = vec4( vec3( sum / 550.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat3_vert.vert new file mode 100644 index 00000000000..173085e2a67 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat3_vert.vert @@ -0,0 +1,54 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct sabcd +{ + mat3 a; +}; + +void main (void) +{ + sabcd s = sabcd(mat3(12.0, 29.0, 13.0, 26.0, 71.0, 63.0, 90.0, 118.0, 128.0) ); + float sum=0.0; + + sum = sum + s.a[0][0]; + sum = sum + s.a[0][1]; + sum = sum + s.a[0][2]; + + sum = sum + s.a[1][0]; + sum = sum + s.a[1][1]; + sum = sum + s.a[1][2]; + + sum = sum + s.a[2][0]; + sum = sum + s.a[2][1]; + sum = sum + s.a[2][2]; + + color = vec4( vec3( sum / 550.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat4_frag.frag new file mode 100644 index 00000000000..5c7e0facf33 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat4_frag.frag @@ -0,0 +1,63 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +struct sabcd +{ + mat4 a; +}; + +void main (void) +{ + sabcd s = sabcd(mat4(12.0, 29.0, 13.0, 26.0, + 71.0, 63.0, 90.0, 118.0, + 128.0, 44.0, 57.0, 143.0, + 151.0, 14.0, 15.0, 21.0 ) ); + float sum=0.0; + int i,j; + + sum = sum + s.a[0][0]; + sum = sum + s.a[0][1]; + sum = sum + s.a[0][2]; + sum = sum + s.a[0][3]; + sum = sum + s.a[1][0]; + sum = sum + s.a[1][1]; + sum = sum + s.a[1][2]; + sum = sum + s.a[1][3]; + sum = sum + s.a[2][0]; + sum = sum + s.a[2][1]; + sum = sum + s.a[2][2]; + sum = sum + s.a[2][3]; + sum = sum + s.a[3][0]; + sum = sum + s.a[3][1]; + sum = sum + s.a[3][2]; + sum = sum + s.a[3][3]; + + gl_FragColor = vec4( vec3( sum / 995.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat4_vert.vert new file mode 100644 index 00000000000..4fdfdc1d235 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_mat4_vert.vert @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct sabcd +{ + mat4 a; +}; + +void main (void) +{ + sabcd s = sabcd(mat4(12.0, 29.0, 13.0, 26.0, + 71.0, 63.0, 90.0, 118.0, + 128.0, 44.0, 57.0, 143.0, + 151.0, 14.0, 15.0, 21.0 ) ); + float sum=0.0; + + sum = sum + s.a[0][0]; + sum = sum + s.a[0][1]; + sum = sum + s.a[0][2]; + sum = sum + s.a[0][3]; + + sum = sum + s.a[1][0]; + sum = sum + s.a[1][1]; + sum = sum + s.a[1][2]; + sum = sum + s.a[1][3]; + + sum = sum + s.a[2][0]; + sum = sum + s.a[2][1]; + sum = sum + s.a[2][2]; + sum = sum + s.a[2][3]; + + sum = sum + s.a[3][0]; + sum = sum + s.a[3][1]; + sum = sum + s.a[3][2]; + sum = sum + s.a[3][3]; + + color = vec4( vec3( sum / 995.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec2_frag.frag new file mode 100644 index 00000000000..fbb8d7d0984 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec2_frag.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct sabcd +{ + vec2 a; + vec2 b; +}; + + +void main (void) +{ + sabcd s = sabcd(vec2(12.0, 29.0), vec2(13.0, 26.0) ); + + gl_FragColor = vec4( vec3( (s.a[0] + s.a[1] + s.b[0] + s.b[1]) / 80.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec2_vert.vert new file mode 100644 index 00000000000..a3660fe241d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec2_vert.vert @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + + + +struct sabcd +{ + vec2 a; + vec2 b; +}; + + + +void main (void) +{ + sabcd s = sabcd(vec2(12.0, 29.0), vec2(13.0, 26.0) ); + color = vec4( vec3( (s.a[0] + s.a[1] + s.b[0] + s.b[1]) / 80.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec3_frag.frag new file mode 100644 index 00000000000..ab024562014 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec3_frag.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct sabcd +{ + vec3 a; + vec3 b; +}; + + +void main (void) +{ + sabcd s = sabcd(vec3(12.0, 29.0, 32.0), vec3(13.0, 26.0, 38.0 ) ); + + gl_FragColor = vec4( vec3( (s.a[0] + s.a[1] + s.a[2] + s.b[0] + s.b[1] + s.b[2]) / 150.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec3_vert.vert new file mode 100644 index 00000000000..e532d39563c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec3_vert.vert @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + + + +struct sabcd +{ + vec3 a; + vec3 b; +}; + + + +void main (void) +{ + sabcd s = sabcd(vec3(12.0, 29.0, 32.0), vec3(13.0, 26.0, 38.0 ) ); + color = vec4( vec3( (s.a[0] + s.a[1] + s.a[2] + s.b[0] + s.b[1] + s.b[2]) / 150.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec4_frag.frag new file mode 100644 index 00000000000..85d19e8ac11 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec4_frag.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +struct sabcd +{ + vec4 a; + vec4 b; +}; + +void main (void) +{ + sabcd s = sabcd(vec4(12.0, 29.0, 32.0, 47.0), vec4(13.0, 26.0, 38.0, 53.0 ) ); + gl_FragColor = vec4( vec3( (s.a[0] + s.a[1] + s.a[2] + s.a[3] + s.b[0] + s.b[1] + s.b[2] + s.b[3]) / 250.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec4_vert.vert new file mode 100644 index 00000000000..f85a3ad8737 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/struct_vec4_vert.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct sabcd +{ + vec4 a; + vec4 b; +}; + +void main (void) +{ + sabcd s = sabcd(vec4(12.0, 29.0, 32.0, 47.0), vec4(13.0, 26.0, 38.0, 53.0 ) ); + color = vec4( vec3( (s.a[0] + s.a[1] + s.a[2] + s.a[3] + s.b[0] + s.b[1] + s.b[2] + s.b[3]) / 250.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bool_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bool_frag.frag new file mode 100644 index 00000000000..232ee1acb10 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bool_frag.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct sabcd +{ + bool a; + bool b; + bool c; + bool d; +}; + + + +void main (void) +{ + sabcd s1 = sabcd(bool(12), bool(0), bool(25.5), bool(0.0)); + sabcd s2 = sabcd(bool(0.0), bool(0.0), bool(0.0), bool(0.0)); + s2 = s1; + float gray = 0.0; + if( (s2.a==true) && (s2.b==false) && (s2.c == true) && (s2.d==false)) + gray=1.0; + else + gray =0.0; + gl_FragColor = vec4(gray,gray,gray,1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bool_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bool_vert.vert new file mode 100644 index 00000000000..965778e40df --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bool_vert.vert @@ -0,0 +1,55 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + + + +struct sabcd +{ + bool a; + bool b; + bool c; + bool d; +}; + + + +void main (void) +{ + sabcd s1 = sabcd(bool(12), bool(0), bool(25.5), bool(0.0)); + sabcd s2 = sabcd(bool(0.0), bool(0.0), bool(0.0), bool(0.0)); + s2 = s1; + float gray = 0.0; + if( (s2.a==true) && (s2.b==false) && (s2.c == true) && (s2.d==false)) + gray=1.0; + else + gray =0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bvec2bvec3bvec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bvec2bvec3bvec4_frag.frag new file mode 100644 index 00000000000..c84b2453b1e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bvec2bvec3bvec4_frag.frag @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct sabcd +{ + bvec2 a; + bvec3 b; + bvec4 c; +}; + +void main (void) +{ + sabcd s = sabcd( bvec2(12, 13), bvec3(14.0, 0.0, 139.0), bvec4(25.5, 17.0, 145, 163 ) ); + sabcd s2 = sabcd( bvec2(0, 0), bvec3(0.0, 0.0, 0.0), bvec4(0.0, 0.0, 0.0, 0.0 ) ); + s2 = s; + float gray = 0.0; + if( (s2.a[0]) && (s2.a[1]) && (s2.b[0]) && (!s2.b[1]) && (s2.b[2]) && (s2.c[0]) && (s2.c[1]) && (s2.c[2]) ) + gray=1.0; + else + gray =0.0; + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bvec2bvec3bvec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bvec2bvec3bvec4_vert.vert new file mode 100644 index 00000000000..43b2aeda4c2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_bvec2bvec3bvec4_vert.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct sabcd +{ + bvec2 a; + bvec3 b; + bvec4 c; +}; + +void main (void) +{ + sabcd s = sabcd( bvec2(12, 13), bvec3(14.0, 0.0, 139.0), bvec4(25.5, 17.0, 145, 163 ) ); + sabcd s2 = sabcd( bvec2(0, 0), bvec3(0.0, 0.0, 0.0), bvec4(0.0, 0.0, 0.0, 0.0 ) ); + s2 = s; + float gray = 0.0; + if( (s2.a[0]) && (s2.a[1]) && (s2.b[0]) && (!s2.b[1]) && (s2.b[2]) && (s2.c[0]) && (s2.c[1]) && (s2.c[2]) && (s2.c[3]) ) + gray=1.0; + else + gray =0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_float_frag.frag new file mode 100644 index 00000000000..b685fa4425b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_float_frag.frag @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct sabcd +{ + float a; + float b; + float c; + float d; +}; + + + +void main (void) +{ + sabcd s = sabcd(1.0, 2.0, 4.0, 8.0); + sabcd s2 = sabcd(0.0, 0.0, 0.0, 0.0); + s2 = s; + gl_FragColor = vec4((s.a + s.b + s.c + s.d) / 15.0, (s2.a + s2.b + s2.c + s2.d) / 15.0, 1.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_float_vert.vert new file mode 100644 index 00000000000..157e29221ea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_float_vert.vert @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + + + +struct sabcd +{ + float a; + float b; + float c; + float d; +}; + + + +void main (void) +{ + sabcd s = sabcd(1.0, 2.0, 4.0, 8.0); + sabcd s2 = sabcd(0.0, 0.0, 0.0, 0.0); + s2 = s; + color = vec4((s.a + s.b + s.c + s.d) / 15.0, (s2.a + s2.b + s2.c + s2.d) / 15.0, 1.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat2_frag.frag new file mode 100644 index 00000000000..35f4a0ea3c1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat2_frag.frag @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +struct sabcd +{ + mat2 a; +}; + +void main (void) +{ + sabcd s = sabcd(mat2(12.0, 29.0, 13.0, 26.0) ); + sabcd s2 = sabcd(mat2(0.0, 0.0, 0.0, 0.0) ); + s2 = s; + gl_FragColor = vec4( vec3( (s2.a[0][0] + s2.a[0][1] + s2.a[1][0] + s2.a[1][1]) / 80.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat2_vert.vert new file mode 100644 index 00000000000..e880bbbf1c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat2_vert.vert @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct sabcd +{ + mat2 a; +}; + +void main (void) +{ + sabcd s = sabcd(mat2(12.0, 29.0, 13.0, 26.0) ); + sabcd s2 = sabcd(mat2(0.0, 0.0, 0.0, 0.0) ); + s2 = s; + color = vec4( vec3( (s2.a[0][0] + s2.a[0][1] + s2.a[1][0] + s2.a[1][1]) / 80.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat3_frag.frag new file mode 100644 index 00000000000..6439b0180b8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat3_frag.frag @@ -0,0 +1,55 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +struct sabcd +{ + mat3 a; +}; + +void main (void) +{ + sabcd s = sabcd(mat3(12.0, 29.0, 13.0, 26.0, 71.0, 63.0, 90.0, 118.0, 128.0) ); + sabcd s2 = sabcd(mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ); + s2 = s; + float sum=0.0; + int i,j; + + sum = sum + s2.a[0][0]; + sum = sum + s2.a[0][1]; + sum = sum + s2.a[0][2]; + sum = sum + s2.a[1][0]; + sum = sum + s2.a[1][1]; + sum = sum + s2.a[1][2]; + sum = sum + s2.a[2][0]; + sum = sum + s2.a[2][1]; + sum = sum + s2.a[2][2]; + + gl_FragColor = vec4( vec3( sum / 550.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat3_vert.vert new file mode 100644 index 00000000000..2a53277a9fe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat3_vert.vert @@ -0,0 +1,56 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct sabcd +{ + mat3 a; +}; + +void main (void) +{ + sabcd s = sabcd(mat3(12.0, 29.0, 13.0, 26.0, 71.0, 63.0, 90.0, 118.0, 128.0) ); + sabcd s2 = sabcd(mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ); + s2 = s; + float sum=0.0; + + sum = sum + s2.a[0][0]; + sum = sum + s2.a[0][1]; + sum = sum + s2.a[0][2]; + + sum = sum + s2.a[1][0]; + sum = sum + s2.a[1][1]; + sum = sum + s2.a[1][2]; + + sum = sum + s2.a[2][0]; + sum = sum + s2.a[2][1]; + sum = sum + s2.a[2][2]; + + color = vec4( vec3( sum / 550.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat4_frag.frag new file mode 100644 index 00000000000..53deba872a6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat4_frag.frag @@ -0,0 +1,68 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +struct sabcd +{ + mat4 a; +}; + +void main (void) +{ + sabcd s = sabcd(mat4(12.0, 29.0, 13.0, 26.0, + 71.0, 63.0, 90.0, 118.0, + 128.0, 44.0, 57.0, 143.0, + 151.0, 14.0, 15.0, 21.0 ) ); + sabcd s2 = sabcd(mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0 ) ); + s2 = s; + float sum=0.0; + int i,j; + + sum = sum + s2.a[0][0]; + sum = sum + s2.a[0][1]; + sum = sum + s2.a[0][2]; + sum = sum + s2.a[0][3]; + sum = sum + s2.a[1][0]; + sum = sum + s2.a[1][1]; + sum = sum + s2.a[1][2]; + sum = sum + s2.a[1][3]; + sum = sum + s2.a[2][0]; + sum = sum + s2.a[2][1]; + sum = sum + s2.a[2][2]; + sum = sum + s2.a[2][3]; + sum = sum + s2.a[3][0]; + sum = sum + s2.a[3][1]; + sum = sum + s2.a[3][2]; + sum = sum + s2.a[3][3]; + + gl_FragColor = vec4( vec3( sum / 995.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat4_vert.vert new file mode 100644 index 00000000000..3c375279544 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_mat4_vert.vert @@ -0,0 +1,70 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct sabcd +{ + mat4 a; +}; + +void main (void) +{ + sabcd s = sabcd(mat4(12.0, 29.0, 13.0, 26.0, + 71.0, 63.0, 90.0, 118.0, + 128.0, 44.0, 57.0, 143.0, + 151.0, 14.0, 15.0, 21.0 ) ); + sabcd s2 = sabcd(mat4(0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0 ) ); + s2 = s; + float sum=0.0; + + sum = sum + s2.a[0][0]; + sum = sum + s2.a[0][1]; + sum = sum + s2.a[0][2]; + sum = sum + s2.a[0][3]; + + sum = sum + s2.a[1][0]; + sum = sum + s2.a[1][1]; + sum = sum + s2.a[1][2]; + sum = sum + s2.a[1][3]; + + sum = sum + s2.a[2][0]; + sum = sum + s2.a[2][1]; + sum = sum + s2.a[2][2]; + sum = sum + s2.a[2][3]; + + sum = sum + s2.a[3][0]; + sum = sum + s2.a[3][1]; + sum = sum + s2.a[3][2]; + sum = sum + s2.a[3][3]; + + color = vec4( vec3( sum / 995.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec2_frag.frag new file mode 100644 index 00000000000..56c15b6e907 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec2_frag.frag @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct sabcd +{ + vec2 a; + vec2 b; +}; + + +void main (void) +{ + sabcd s1 = sabcd(vec2(12.0, 29.0), vec2(13.0, 26.0) ); + sabcd s2 = sabcd(vec2(0.0, 0.0), vec2(0.0, 0.0) ); + s2 = s1; + gl_FragColor = vec4( vec3( (s2.a[0] + s2.a[1] + s2.b[0] + s2.b[1]) / 80.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec2_vert.vert new file mode 100644 index 00000000000..1ec34123f3d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec2_vert.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + + + +struct sabcd +{ + vec2 a; + vec2 b; +}; + + + +void main (void) +{ + sabcd s1 = sabcd(vec2(12.0, 29.0), vec2(13.0, 26.0) ); + sabcd s2 = sabcd(vec2(0.0, 0.0), vec2(0.0, 0.0) ); + s2 = s1; + color = vec4( vec3( (s2.a[0] + s2.a[1] + s2.b[0] + s2.b[1]) / 80.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec3_frag.frag new file mode 100644 index 00000000000..7d0530c8113 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec3_frag.frag @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct sabcd +{ + vec3 a; + vec3 b; +}; + + +void main (void) +{ + sabcd s = sabcd(vec3(12.0, 29.0, 32.0), vec3(13.0, 26.0, 38.0 ) ); + sabcd s2 = sabcd(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0 ) ); + s2 = s; + gl_FragColor = vec4( vec3( (s2.a[0] + s2.a[1] + s2.a[2] + s2.b[0] + s2.b[1] + s2.b[2]) / 150.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec3_vert.vert new file mode 100644 index 00000000000..a686f9c6d7f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec3_vert.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + + + +struct sabcd +{ + vec3 a; + vec3 b; +}; + + + +void main (void) +{ + sabcd s1 = sabcd(vec3(12.0, 29.0, 32.0), vec3(13.0, 26.0, 38.0 ) ); + sabcd s2 = sabcd(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0 ) ); + s2 = s1; + color = vec4( vec3( (s2.a[0] + s2.a[1] + s2.a[2] + s2.b[0] + s2.b[1] + s2.b[2]) / 150.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec4_frag.frag new file mode 100644 index 00000000000..e628b8caf18 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec4_frag.frag @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +struct sabcd +{ + vec4 a; + vec4 b; +}; + +void main (void) +{ + sabcd s = sabcd(vec4(12.0, 29.0, 32.0, 47.0), vec4(13.0, 26.0, 38.0, 53.0 ) ); + sabcd s2 = sabcd(vec4(0.0, 0.0, 0.0, 0.0), vec4(0.0, 0.0, 0.0, 0.0 ) ); + s2 = s; + gl_FragColor = vec4( vec3( (s2.a[0] + s2.a[1] + s2.a[2] + s2.a[3] + s2.b[0] + s2.b[1] + s2.b[2] + s2.b[3]) / 250.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec4_vert.vert new file mode 100644 index 00000000000..70f46538a91 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structcopy_vec4_vert.vert @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct sabcd +{ + vec4 a; + vec4 b; +}; + +void main (void) +{ + sabcd s = sabcd(vec4(12.0, 29.0, 32.0, 47.0), vec4(13.0, 26.0, 38.0, 53.0 ) ); + sabcd s2 = sabcd(vec4(0.0, 0.0, 0.0, 0.0), vec4(0.0, 0.0, 0.0, 0.0 ) ); + s2 = s; + color = vec4( vec3( (s2.a[0] + s2.a[1] + s2.a[2] + s2.a[3] + s2.b[0] + s2.b[1] + s2.b[2] + s2.b[3]) / 250.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bool_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bool_frag.frag new file mode 100644 index 00000000000..1d0abca4105 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bool_frag.frag @@ -0,0 +1,55 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct nestb +{ + bool b; +}; + +struct nesta +{ + bool a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta(bool(1.0), nestb(bool(0.0)))); + float gray = 0.0; + + if( (s.nest_a.a == true) && (s.nest_a.nest_b.b == false)) + gray=1.0; + else + gray =0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bool_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bool_vert.vert new file mode 100644 index 00000000000..8a52a6ab15f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bool_vert.vert @@ -0,0 +1,58 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct nestb +{ + bool b; +}; + +struct nesta +{ + bool a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta(bool(1.0), nestb(bool(0.0)))); + float gray = 0.0; + + if( (s.nest_a.a == true) && (s.nest_a.nest_b.b == false)) + gray=1.0; + else + gray =0.0; + color = vec4(gray, gray, gray, 1.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bvec2bvec3bvec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bvec2bvec3bvec4_frag.frag new file mode 100644 index 00000000000..d13d2bbb6c9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bvec2bvec3bvec4_frag.frag @@ -0,0 +1,71 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +struct nestb +{ + bvec2 a2; + bvec3 b2; + bvec4 c2; +}; + +struct nesta +{ + bvec2 a1; + bvec3 b1; + bvec4 c1; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest( nesta( bvec2(12, 13), bvec3(14.0, 0.0, 139.0), bvec4(25.5, 17.0, 145, 163 ), + nestb( bvec2(28, 0), bvec3(0.0, 0.0, 1.0), bvec4(0.0, 17.0, 145, 0 ) + ) + ) + ); + float gray = 0.0; + if( ( s.nest_a.a1[0] ) && ( s.nest_a.a1[1] ) && + ( s.nest_a.b1[0] ) && (! (s.nest_a.b1[1]) ) && ( s.nest_a.b1[2] ) && + ( s.nest_a.c1[0] ) && ( s.nest_a.c1[1] ) && ( s.nest_a.c1[2] ) && ( s.nest_a.c1[3] ) && + ( s.nest_a.nest_b.a2[0] ) && ( !( s.nest_a.nest_b.a2[1] ) ) && + (! ( s.nest_a.nest_b.b2[0] ) ) && (! ( s.nest_a.nest_b.b2[1] ) ) && (s.nest_a.nest_b.b2[2]) && + (! ( s.nest_a.nest_b.c2[0] ) ) && (s.nest_a.nest_b.c2[1]) && (s.nest_a.nest_b.c2[2]) && (! ( s.nest_a.nest_b.c2[3] ) ) + ) + gray=1.0; + else + gray =0.0; + + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bvec2bvec3bvec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bvec2bvec3bvec4_vert.vert new file mode 100644 index 00000000000..dfc515cac2d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_bvec2bvec3bvec4_vert.vert @@ -0,0 +1,74 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct nestb +{ + bvec2 a2; + bvec3 b2; + bvec4 c2; +}; + +struct nesta +{ + bvec2 a1; + bvec3 b1; + bvec4 c1; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + + nest s = nest( nesta( bvec2(12, 13), bvec3(14.0, 0.0, 139.0), bvec4(25.5, 17.0, 145, 163 ), + nestb( bvec2(28, 0), bvec3(0.0, 0.0, 1.0), bvec4(0.0, 17.0, 145, 0 ) + ) + ) + ); + + float gray = 0.0; + + if( ( s.nest_a.a1[0] ) && ( s.nest_a.a1[1] ) && + ( s.nest_a.b1[0] ) && (! (s.nest_a.b1[1]) ) && ( s.nest_a.b1[2] ) && + ( s.nest_a.c1[0] ) && ( s.nest_a.c1[1] ) && ( s.nest_a.c1[2] ) && ( s.nest_a.c1[3] ) && + ( s.nest_a.nest_b.a2[0] ) && ( !( s.nest_a.nest_b.a2[1] ) ) && + (! ( s.nest_a.nest_b.b2[0] ) ) && (! ( s.nest_a.nest_b.b2[1] ) ) && (s.nest_a.nest_b.b2[2]) && + (! ( s.nest_a.nest_b.c2[0] ) ) && (s.nest_a.nest_b.c2[1]) && (s.nest_a.nest_b.c2[2]) && (! ( s.nest_a.nest_b.c2[3] ) ) + ) + gray=1.0; + else + gray =0.0; + color = vec4(gray, gray, gray, 1.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_float_frag.frag new file mode 100644 index 00000000000..8cb2e49b088 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_float_frag.frag @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct nestb +{ + float b; +}; + +struct nesta +{ + float a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta(1.0, nestb(2.0))); + gl_FragColor = vec4(vec3((s.nest_a.a + s.nest_a.nest_b.b) / 3.0), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_float_vert.vert new file mode 100644 index 00000000000..18b3353c2d7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_float_vert.vert @@ -0,0 +1,51 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct nestb +{ + float b; +}; + +struct nesta +{ + float a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta(1.0, nestb(2.0))); + color = vec4(vec3((s.nest_a.a + s.nest_a.nest_b.b) / 3.0), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat2_frag.frag new file mode 100644 index 00000000000..d08a7b148ea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat2_frag.frag @@ -0,0 +1,51 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct nestb +{ + mat2 b; +}; + +struct nesta +{ + mat2 a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta( mat2(11, 13, 29, 33), nestb( mat2(12, 19, 79, 81) ) ) ); + + + gl_FragColor = vec4( vec3( (s.nest_a.a[0][0] + s.nest_a.a[0][1] + s.nest_a.a[1][0] + s.nest_a.a[1][1] + s.nest_a.nest_b.b[0][0] + s.nest_a.nest_b.b[0][1] + s.nest_a.nest_b.b[1][0] + s.nest_a.nest_b.b[1][1] ) / 277.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat2_vert.vert new file mode 100644 index 00000000000..770b63d74dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat2_vert.vert @@ -0,0 +1,51 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct nestb +{ + mat2 b; +}; + +struct nesta +{ + mat2 a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta( mat2(11, 13, 29, 33), nestb( mat2(12, 19, 79, 81) ) ) ); + color = vec4( vec3( (s.nest_a.a[0][0] + s.nest_a.a[0][1] + s.nest_a.a[1][0] + s.nest_a.a[1][1] + s.nest_a.nest_b.b[0][0] + s.nest_a.nest_b.b[0][1] + s.nest_a.nest_b.b[1][0] + s.nest_a.nest_b.b[1][1] ) / 277.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat3_frag.frag new file mode 100644 index 00000000000..3e01ed5b6fd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat3_frag.frag @@ -0,0 +1,79 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct nestb +{ + mat3 b; +}; + +struct nesta +{ + mat3 a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta( mat3(11, 13, 29, 33, 63, 13, 49, 57, 71), nestb( mat3(12, 19, 79, 81, 35, 51, 73, 66, 23) ) ) ); + float sum1=0.0,sum2=0.0; + int i,j; + + sum1 = sum1 + s.nest_a.a[0][0]; + sum2 = sum2 + s.nest_a.nest_b.b[0][0]; + + sum1 = sum1 + s.nest_a.a[0][1]; + sum2 = sum2 + s.nest_a.nest_b.b[0][1]; + + sum1 = sum1 + s.nest_a.a[0][2]; + sum2 = sum2 + s.nest_a.nest_b.b[0][2]; + + sum1 = sum1 + s.nest_a.a[1][0]; + sum2 = sum2 + s.nest_a.nest_b.b[1][0]; + + sum1 = sum1 + s.nest_a.a[1][1]; + sum2 = sum2 + s.nest_a.nest_b.b[1][1]; + + sum1 = sum1 + s.nest_a.a[1][2]; + sum2 = sum2 + s.nest_a.nest_b.b[1][2]; + + sum1 = sum1 + s.nest_a.a[2][0]; + sum2 = sum2 + s.nest_a.nest_b.b[2][0]; + + sum1 = sum1 + s.nest_a.a[2][1]; + sum2 = sum2 + s.nest_a.nest_b.b[2][1]; + + sum1 = sum1 + s.nest_a.a[2][2]; + sum2 = sum2 + s.nest_a.nest_b.b[2][2]; + + gl_FragColor = vec4( vec3( ( sum1 + sum2 )/ 778.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat3_vert.vert new file mode 100644 index 00000000000..0c63e231d7c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat3_vert.vert @@ -0,0 +1,74 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct nestb +{ + mat3 b; +}; + +struct nesta +{ + mat3 a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta( mat3(11, 13, 29, 33, 63, 13, 49, 57, 71), nestb( mat3(12, 19, 79, 81, 35, 51, 73, 66, 23) ) ) ); + float sum1=0.0,sum2=0.0; + + sum1 = sum1 + s.nest_a.a[0][0]; + sum2 = sum2 + s.nest_a.nest_b.b[0][0]; + sum1 = sum1 + s.nest_a.a[0][1]; + sum2 = sum2 + s.nest_a.nest_b.b[0][1]; + sum1 = sum1 + s.nest_a.a[0][2]; + sum2 = sum2 + s.nest_a.nest_b.b[0][2]; + + sum1 = sum1 + s.nest_a.a[1][0]; + sum2 = sum2 + s.nest_a.nest_b.b[1][0]; + sum1 = sum1 + s.nest_a.a[1][1]; + sum2 = sum2 + s.nest_a.nest_b.b[1][1]; + sum1 = sum1 + s.nest_a.a[1][2]; + sum2 = sum2 + s.nest_a.nest_b.b[1][2]; + + sum1 = sum1 + s.nest_a.a[2][0]; + sum2 = sum2 + s.nest_a.nest_b.b[2][0]; + sum1 = sum1 + s.nest_a.a[2][1]; + sum2 = sum2 + s.nest_a.nest_b.b[2][1]; + sum1 = sum1 + s.nest_a.a[2][2]; + sum2 = sum2 + s.nest_a.nest_b.b[2][2]; + + color = vec4( vec3( ( sum1 + sum2 )/ 778.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat4_frag.frag new file mode 100644 index 00000000000..03fb03c181b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat4_frag.frag @@ -0,0 +1,100 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct nestb +{ + mat4 b; +}; + +struct nesta +{ + mat4 a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta( mat4(11, 13, 29, 33, 63, 13, 49, 57, 71, 47, 91, 101, 167, 21, 39, 41), nestb( mat4(12, 19, 79, 81, 35, 51, 73, 66, 23, 134, 121, 156, 76, 23, 24, 78) ) ) ); + float sum1=0.0,sum2=0.0; + int i,j; + + sum1 = sum1 + s.nest_a.a[0][0]; + sum2 = sum2 + s.nest_a.nest_b.b[0][0]; + + sum1 = sum1 + s.nest_a.a[0][1]; + sum2 = sum2 + s.nest_a.nest_b.b[0][1]; + + sum1 = sum1 + s.nest_a.a[0][2]; + sum2 = sum2 + s.nest_a.nest_b.b[0][2]; + + sum1 = sum1 + s.nest_a.a[0][3]; + sum2 = sum2 + s.nest_a.nest_b.b[0][3]; + + sum1 = sum1 + s.nest_a.a[1][0]; + sum2 = sum2 + s.nest_a.nest_b.b[1][0]; + + sum1 = sum1 + s.nest_a.a[1][1]; + sum2 = sum2 + s.nest_a.nest_b.b[1][1]; + + sum1 = sum1 + s.nest_a.a[1][2]; + sum2 = sum2 + s.nest_a.nest_b.b[1][2]; + + sum1 = sum1 + s.nest_a.a[1][3]; + sum2 = sum2 + s.nest_a.nest_b.b[1][3]; + + sum1 = sum1 + s.nest_a.a[2][0]; + sum2 = sum2 + s.nest_a.nest_b.b[2][0]; + + sum1 = sum1 + s.nest_a.a[2][1]; + sum2 = sum2 + s.nest_a.nest_b.b[2][1]; + + sum1 = sum1 + s.nest_a.a[2][2]; + sum2 = sum2 + s.nest_a.nest_b.b[2][2]; + + sum1 = sum1 + s.nest_a.a[2][3]; + sum2 = sum2 + s.nest_a.nest_b.b[2][3]; + + sum1 = sum1 + s.nest_a.a[3][0]; + sum2 = sum2 + s.nest_a.nest_b.b[3][0]; + + sum1 = sum1 + s.nest_a.a[3][1]; + sum2 = sum2 + s.nest_a.nest_b.b[3][1]; + + sum1 = sum1 + s.nest_a.a[3][2]; + sum2 = sum2 + s.nest_a.nest_b.b[3][2]; + + sum1 = sum1 + s.nest_a.a[3][3]; + sum2 = sum2 + s.nest_a.nest_b.b[3][3]; + + gl_FragColor = vec4( vec3( ( sum1 + sum2 )/ 1897.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat4_vert.vert new file mode 100644 index 00000000000..89ae396b6c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_mat4_vert.vert @@ -0,0 +1,89 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct nestb +{ + mat4 b; +}; + +struct nesta +{ + mat4 a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta( mat4(11, 13, 29, 33, 63, 13, 49, 57, 71, 47, 91, 101, 167, 21, 39, 41), nestb( mat4(12, 19, 79, 81, 35, 51, 73, 66, 23, 134, 121, 156, 76, 23, 24, 78) ) ) ); + float sum1=0.0,sum2=0.0; + + sum1 = sum1 + s.nest_a.a[0][0]; + sum2 = sum2 + s.nest_a.nest_b.b[0][0]; + sum1 = sum1 + s.nest_a.a[0][1]; + sum2 = sum2 + s.nest_a.nest_b.b[0][1]; + sum1 = sum1 + s.nest_a.a[0][2]; + sum2 = sum2 + s.nest_a.nest_b.b[0][2]; + sum1 = sum1 + s.nest_a.a[0][3]; + sum2 = sum2 + s.nest_a.nest_b.b[0][3]; + + sum1 = sum1 + s.nest_a.a[1][0]; + sum2 = sum2 + s.nest_a.nest_b.b[1][0]; + sum1 = sum1 + s.nest_a.a[1][1]; + sum2 = sum2 + s.nest_a.nest_b.b[1][1]; + sum1 = sum1 + s.nest_a.a[1][2]; + sum2 = sum2 + s.nest_a.nest_b.b[1][2]; + sum1 = sum1 + s.nest_a.a[1][3]; + sum2 = sum2 + s.nest_a.nest_b.b[1][3]; + + sum1 = sum1 + s.nest_a.a[2][0]; + sum2 = sum2 + s.nest_a.nest_b.b[2][0]; + sum1 = sum1 + s.nest_a.a[2][1]; + sum2 = sum2 + s.nest_a.nest_b.b[2][1]; + sum1 = sum1 + s.nest_a.a[2][2]; + sum2 = sum2 + s.nest_a.nest_b.b[2][2]; + sum1 = sum1 + s.nest_a.a[2][3]; + sum2 = sum2 + s.nest_a.nest_b.b[2][3]; + + sum1 = sum1 + s.nest_a.a[3][0]; + sum2 = sum2 + s.nest_a.nest_b.b[3][0]; + sum1 = sum1 + s.nest_a.a[3][1]; + sum2 = sum2 + s.nest_a.nest_b.b[3][1]; + sum1 = sum1 + s.nest_a.a[3][2]; + sum2 = sum2 + s.nest_a.nest_b.b[3][2]; + sum1 = sum1 + s.nest_a.a[3][3]; + sum2 = sum2 + s.nest_a.nest_b.b[3][3]; + + color = vec4( vec3( ( sum1 + sum2 )/ 1897.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec2_frag.frag new file mode 100644 index 00000000000..feff010e6c3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec2_frag.frag @@ -0,0 +1,50 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct nestb +{ + vec2 b; +}; + +struct nesta +{ + vec2 a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta(vec2(11, 13), nestb(vec2(12, 19) ) ) ); + + gl_FragColor = vec4( vec3( (s.nest_a.a[0] + s.nest_a.a[1] + s.nest_a.nest_b.b[0] + s.nest_a.nest_b.b[1] ) / 55.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec2_vert.vert new file mode 100644 index 00000000000..d9db7a3573f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec2_vert.vert @@ -0,0 +1,51 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct nestb +{ + vec2 b; +}; + +struct nesta +{ + vec2 a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta(vec2(11, 13), nestb(vec2(12, 19) ) ) ); + color = vec4( vec3( (s.nest_a.a[0] + s.nest_a.a[1] + s.nest_a.nest_b.b[0] + s.nest_a.nest_b.b[1] ) / 55.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec3_frag.frag new file mode 100644 index 00000000000..6f23082574b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec3_frag.frag @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct nestb +{ + vec3 b; +}; + +struct nesta +{ + vec3 a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta(vec3(11, 13, 17), nestb(vec3(12, 19, 29) ) ) ); + gl_FragColor = vec4( vec3( (s.nest_a.a[0] + s.nest_a.a[1] + s.nest_a.a[2] + s.nest_a.nest_b.b[0] + s.nest_a.nest_b.b[1] + s.nest_a.nest_b.b[2]) / 101.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec3_vert.vert new file mode 100644 index 00000000000..b07d8f1fb16 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec3_vert.vert @@ -0,0 +1,51 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct nestb +{ + vec3 b; +}; + +struct nesta +{ + vec3 a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta(vec3(11, 13, 17), nestb(vec3(12, 19, 29) ) ) ); + color = vec4( vec3( (s.nest_a.a[0] + s.nest_a.a[1] + s.nest_a.a[2] + s.nest_a.nest_b.b[0] + s.nest_a.nest_b.b[1] + s.nest_a.nest_b.b[2]) / 101.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec4_frag.frag new file mode 100644 index 00000000000..0d365ea01e6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec4_frag.frag @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +struct nestb +{ + vec4 b; +}; + +struct nesta +{ + vec4 a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta(vec4(11, 13, 17, 31), nestb(vec4(12, 19, 29, 69) ) ) ); + gl_FragColor = vec4( vec3( (s.nest_a.a[0] + s.nest_a.a[1] + s.nest_a.a[2] + s.nest_a.a[3] + s.nest_a.nest_b.b[0] + s.nest_a.nest_b.b[1] + s.nest_a.nest_b.b[2] + s.nest_a.nest_b.b[3]) / 201.0 ), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec4_vert.vert new file mode 100644 index 00000000000..7dae13b129d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/struct/structnest_vec4_vert.vert @@ -0,0 +1,51 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +struct nestb +{ + vec4 b; +}; + +struct nesta +{ + vec4 a; + nestb nest_b; +}; + +struct nest +{ + nesta nest_a; +}; + +void main (void) +{ + nest s = nest(nesta(vec4(11, 13, 17, 31), nestb(vec4(12, 19, 29, 69) ) ) ); + color = vec4( vec3( (s.nest_a.a[0] + s.nest_a.a[1] + s.nest_a.a[2] + s.nest_a.a[3] + s.nest_a.nest_b.b[0] + s.nest_a.nest_b.b[1] + s.nest_a.nest_b.b[2] + s.nest_a.nest_b.b[3]) / 201.0 ), 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/input.run.txt new file mode 100644 index 00000000000..11fe45566aa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/input.run.txt @@ -0,0 +1,16 @@ +# this file is auto-generated. DO NOT EDIT. +swizzlers_001_to_008.html +swizzlers_009_to_016.html +swizzlers_017_to_024.html +swizzlers_025_to_032.html +swizzlers_033_to_040.html +swizzlers_041_to_048.html +swizzlers_049_to_056.html +swizzlers_057_to_064.html +swizzlers_065_to_072.html +swizzlers_073_to_080.html +swizzlers_081_to_088.html +swizzlers_089_to_096.html +swizzlers_097_to_104.html +swizzlers_105_to_112.html +swizzlers_113_to_120.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_001_to_008.html new file mode 100644 index 00000000000..022d14cab70 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_001_to_008.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_009_to_016.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_009_to_016.html new file mode 100644 index 00000000000..b4894c019ee --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_009_to_016.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_009_to_016.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_017_to_024.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_017_to_024.html new file mode 100644 index 00000000000..76e6a9a97e6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_017_to_024.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_017_to_024.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_025_to_032.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_025_to_032.html new file mode 100644 index 00000000000..6a38d1f9e33 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_025_to_032.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_025_to_032.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_033_to_040.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_033_to_040.html new file mode 100644 index 00000000000..27b9a25bd09 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_033_to_040.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_033_to_040.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_041_to_048.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_041_to_048.html new file mode 100644 index 00000000000..02586662570 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_041_to_048.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_041_to_048.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_049_to_056.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_049_to_056.html new file mode 100644 index 00000000000..e0953edc174 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_049_to_056.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_049_to_056.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_057_to_064.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_057_to_064.html new file mode 100644 index 00000000000..6932dca5693 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_057_to_064.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_057_to_064.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_065_to_072.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_065_to_072.html new file mode 100644 index 00000000000..8687c5dbde5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_065_to_072.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_065_to_072.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_073_to_080.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_073_to_080.html new file mode 100644 index 00000000000..5df7f6e3bfe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_073_to_080.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_073_to_080.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_081_to_088.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_081_to_088.html new file mode 100644 index 00000000000..f2705dd6559 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_081_to_088.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_081_to_088.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_089_to_096.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_089_to_096.html new file mode 100644 index 00000000000..7f4e8ffbd31 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_089_to_096.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_089_to_096.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_097_to_104.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_097_to_104.html new file mode 100644 index 00000000000..44ad2ab8a82 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_097_to_104.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_097_to_104.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_105_to_112.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_105_to_112.html new file mode 100644 index 00000000000..27f01167c48 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_105_to_112.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_105_to_112.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_113_to_120.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_113_to_120.html new file mode 100644 index 00000000000..23528dea2a7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/swizzlers_113_to_120.html @@ -0,0 +1,157 @@ + + + + + +WebGL GLSL conformance test: swizzlers_113_to_120.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_bgr_1vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_bgr_1vec3_frag.frag new file mode 100644 index 00000000000..ad4c2503097 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_bgr_1vec3_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.rgb; + vec3 t = m.bgr; + vec4 a = vec4(t.b, t.g, t.r ,al.a); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_bgr_1vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_bgr_1vec3_vert.vert new file mode 100644 index 00000000000..b4caea0eeb6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_bgr_1vec3_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.rgb; + vec3 t = m.bgr; + vec4 a = vec4(t.b, t.g, t.r, lightloc.a); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_br_g_1vec2_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_br_g_1vec2_1float_frag.frag new file mode 100644 index 00000000000..6b878fddbea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_br_g_1vec2_1float_frag.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.rgb; + float k = m.g; + vec2 n = m.br; + vec4 a = vec4(n.g, k, n.r, al.a); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_br_g_1vec2_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_br_g_1vec2_1float_vert.vert new file mode 100644 index 00000000000..615ad13e2d1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_br_g_1vec2_1float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.rgb; + vec2 t = m.br; + float k = m.g; + vec4 a = vec4(t.g, k, t.r, lightloc.a); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_gb_r_1vec2_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_gb_r_1vec2_1float_frag.frag new file mode 100644 index 00000000000..c0d2fb496ba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_gb_r_1vec2_1float_frag.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.rgb; + float k = m.r; + vec2 n = m.gb; + vec4 a = vec4(k, n.r, n.g, al.a); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_gb_r_1vec2_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_gb_r_1vec2_1float_vert.vert new file mode 100644 index 00000000000..99ea09fc418 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_gb_r_1vec2_1float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.rgb; + vec2 t = m.gb; + float k = m.r; + vec4 a = vec4(k, t.r, t.g, lightloc.a); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_grb_1vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_grb_1vec3_frag.frag new file mode 100644 index 00000000000..d0fd4432f11 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_grb_1vec3_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.rgb; + vec3 t = m.grb; + vec4 a = vec4(t.g, t.r, t.b ,al.a); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_grb_1vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_grb_1vec3_vert.vert new file mode 100644 index 00000000000..1b87fd8424b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_grb_1vec3_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.rgb; + vec3 t = m.grb; + vec4 a = vec4(t.g, t.r, t.b, lightloc.a); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_ps_t_1vec2_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_ps_t_1vec2_1float_frag.frag new file mode 100644 index 00000000000..b1af38f61e2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_ps_t_1vec2_1float_frag.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.stp; + float k = m.t; + vec2 n = m.ps; + vec4 a = vec4(n.t, k, n.s, al.q); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_ps_t_1vec2_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_ps_t_1vec2_1float_vert.vert new file mode 100644 index 00000000000..9ad785edab4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_ps_t_1vec2_1float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.stp; + vec2 t = m.ps; + float k = m.t; + vec4 a = vec4(t.t, k, t.s, lightloc.q); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_pts_1vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_pts_1vec3_frag.frag new file mode 100644 index 00000000000..e32c444ca3a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_pts_1vec3_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.stp; + vec3 t = m.pts; + vec4 a = vec4(t.p, t.t, t.s ,al.q); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_pts_1vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_pts_1vec3_vert.vert new file mode 100644 index 00000000000..56dd2a5fdb4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_pts_1vec3_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.stp; + vec3 t = m.pts; + vec4 a = vec4(t.p, t.t, t.s, lightloc.q); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rb_g_1vec2_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rb_g_1vec2_1float_frag.frag new file mode 100644 index 00000000000..f3a5db36f20 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rb_g_1vec2_1float_frag.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.rgb; + float k = m.g; + vec2 n = m.rb; + vec4 a = vec4(n.r, k, n.g, al.a); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rb_g_1vec2_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rb_g_1vec2_1float_vert.vert new file mode 100644 index 00000000000..eba6b333724 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rb_g_1vec2_1float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.rgb; + vec2 t = m.rb; + float k = m.g; + vec4 a = vec4(t.r, k, t.g, lightloc.a); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rg_b_1vec2_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rg_b_1vec2_1float_frag.frag new file mode 100644 index 00000000000..a7765ae5295 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rg_b_1vec2_1float_frag.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.rgb; + float k = m.b; + vec2 n = m.rg; + vec4 a = vec4(n, k, al.a); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rg_b_1vec2_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rg_b_1vec2_1float_vert.vert new file mode 100644 index 00000000000..ff44c4bd3a8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rg_b_1vec2_1float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.rgb; + vec2 t = m.rg; + float k = m.b; + vec4 a = vec4(t, k, lightloc.a); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rgb_1vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rgb_1vec3_frag.frag new file mode 100644 index 00000000000..16ca1bf55f0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rgb_1vec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.rgb; + vec4 a = vec4(m.rgb,al.a); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rgb_1vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rgb_1vec3_vert.vert new file mode 100644 index 00000000000..3cbb049d620 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_rgb_1vec3_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.rgb; + vec4 a = vec4(m.rgb,lightloc.a); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_sp_t_1vec2_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_sp_t_1vec2_1float_frag.frag new file mode 100644 index 00000000000..1246e9f9adc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_sp_t_1vec2_1float_frag.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.stp; + float k = m.t; + vec2 n = m.sp; + vec4 a = vec4(n.s, k, n.t, al.q); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_sp_t_1vec2_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_sp_t_1vec2_1float_vert.vert new file mode 100644 index 00000000000..4f3327c746f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_sp_t_1vec2_1float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.stp; + vec2 t = m.sp; + float k = m.t; + vec4 a = vec4(t.s, k, t.t, lightloc.q); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_st_p_1vec2_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_st_p_1vec2_1float_frag.frag new file mode 100644 index 00000000000..73a9a27c50a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_st_p_1vec2_1float_frag.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.stp; + float k = m.p; + vec2 n = m.st; + vec4 a = vec4(n, k, al.q); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_st_p_1vec2_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_st_p_1vec2_1float_vert.vert new file mode 100644 index 00000000000..240354816a3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_st_p_1vec2_1float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.stp; + vec2 t = m.st; + float k = m.p; + vec4 a = vec4(t, k, lightloc.q); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_stp_1vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_stp_1vec3_frag.frag new file mode 100644 index 00000000000..6a96f44ecec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_stp_1vec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.stp; + vec4 a = vec4(m.stp,al.q); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_stp_1vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_stp_1vec3_vert.vert new file mode 100644 index 00000000000..985e8f29894 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_stp_1vec3_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.stp; + vec4 a = vec4(m.stp,lightloc.q); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tp_s_1vec2_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tp_s_1vec2_1float_frag.frag new file mode 100644 index 00000000000..86912c02292 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tp_s_1vec2_1float_frag.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.stp; + float k = m.s; + vec2 n = m.tp; + vec4 a = vec4(k, n.s, n.t, al.q); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tp_s_1vec2_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tp_s_1vec2_1float_vert.vert new file mode 100644 index 00000000000..c6f48a25fc0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tp_s_1vec2_1float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.stp; + vec2 t = m.tp; + float k = m.s; + vec4 a = vec4(k, t.s, t.t, lightloc.q); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tsp_1vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tsp_1vec3_frag.frag new file mode 100644 index 00000000000..672cfa9392e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tsp_1vec3_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.stp; + vec3 t = m.tsp; + vec4 a = vec4(t.t, t.s, t.p ,al.q); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tsp_1vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tsp_1vec3_vert.vert new file mode 100644 index 00000000000..0a031f39510 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_tsp_1vec3_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.stp; + vec3 t = m.tsp; + vec4 a = vec4(t.t, t.s, t.p, lightloc.q); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xy_z_1vec2_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xy_z_1vec2_1float_frag.frag new file mode 100644 index 00000000000..ac820d26517 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xy_z_1vec2_1float_frag.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.xyz; + float k = m.z; + vec2 n = m.xy; + vec4 a = vec4(n, k, al.w); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xy_z_1vec2_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xy_z_1vec2_1float_vert.vert new file mode 100644 index 00000000000..03451256c0d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xy_z_1vec2_1float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.xyz; + vec2 t = m.xy; + float k = m.z; + vec4 a = vec4(t, k, lightloc.w); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xyz_1vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xyz_1vec3_frag.frag new file mode 100644 index 00000000000..011e0572efb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xyz_1vec3_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.xyz; + vec4 a = vec4(m.xyz,al.w); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xyz_1vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xyz_1vec3_vert.vert new file mode 100644 index 00000000000..ab46b50ff70 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xyz_1vec3_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.xyz; + vec4 a = vec4(m.xyz,lightloc.w); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xz_y_1vec2_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xz_y_1vec2_1float_frag.frag new file mode 100644 index 00000000000..58b59deca38 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xz_y_1vec2_1float_frag.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.xyz; + float k = m.y; + vec2 n = m.xz; + vec4 a = vec4(n.x, k, n.y, al.w); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xz_y_1vec2_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xz_y_1vec2_1float_vert.vert new file mode 100644 index 00000000000..d747725f332 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_xz_y_1vec2_1float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.xyz; + vec2 t = m.xz; + float k = m.y; + vec4 a = vec4(t.x, k, t.y, lightloc.w); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yxz_1vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yxz_1vec3_frag.frag new file mode 100644 index 00000000000..2141bf3003b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yxz_1vec3_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.xyz; + vec3 t = m.yxz; + vec4 a = vec4(t.y, t.x, t.z ,al.w); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yxz_1vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yxz_1vec3_vert.vert new file mode 100644 index 00000000000..ebe9e6e63d7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yxz_1vec3_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.xyz; + vec3 t = m.yxz; + vec4 a = vec4(t.y, t.x, t.z, lightloc.w); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yz_x_1vec2_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yz_x_1vec2_1float_frag.frag new file mode 100644 index 00000000000..92a8bd4fe94 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yz_x_1vec2_1float_frag.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.xyz; + float k = m.x; + vec2 n = m.yz; + vec4 a = vec4(k, n.x, n.y, al.w); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yz_x_1vec2_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yz_x_1vec2_1float_vert.vert new file mode 100644 index 00000000000..4e43c5be23a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_yz_x_1vec2_1float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.xyz; + vec2 t = m.yz; + float k = m.x; + vec4 a = vec4(k, t.x, t.y, lightloc.w); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zx_y_1vec2_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zx_y_1vec2_1float_frag.frag new file mode 100644 index 00000000000..f3ff8238992 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zx_y_1vec2_1float_frag.frag @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.xyz; + float k = m.y; + vec2 n = m.zx; + vec4 a = vec4(n.y, k, n.x, al.w); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zx_y_1vec2_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zx_y_1vec2_1float_vert.vert new file mode 100644 index 00000000000..121ca1f670c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zx_y_1vec2_1float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.xyz; + vec2 t = m.zx; + float k = m.y; + vec4 a = vec4(t.y, k, t.x, lightloc.w); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zyx_1vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zyx_1vec3_frag.frag new file mode 100644 index 00000000000..e3679559281 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zyx_1vec3_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.xyz; + vec3 t = m.zyx; + vec4 a = vec4(t.z, t.y, t.x ,al.w); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zyx_1vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zyx_1vec3_vert.vert new file mode 100644 index 00000000000..aa1f2e2d1b6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec3_zyx_1vec3_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.xyz; + vec3 t = m.zyx; + vec4 a = vec4(t.z, t.y, t.x, lightloc.w); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ar_bg_2vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ar_bg_2vec2_frag.frag new file mode 100644 index 00000000000..9588e402040 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ar_bg_2vec2_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec2 m = al.ar; + vec2 n = al.bg; + vec4 a = vec4(m.g, n.g, n.r, m.r); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ar_bg_2vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ar_bg_2vec2_vert.vert new file mode 100644 index 00000000000..4994e10937c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ar_bg_2vec2_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec2 m = lightloc.ar; + vec2 n = lightloc.bg; + vec4 a = vec4(m.g, n.g, n.r, m.r); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arb_g_1vec3_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arb_g_1vec3_1float_frag.frag new file mode 100644 index 00000000000..c3b91a5f858 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arb_g_1vec3_1float_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.arb; + float g = al.g; + vec4 a = vec4(m.g, g, m.b, m.r); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arb_g_1vec3_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arb_g_1vec3_1float_vert.vert new file mode 100644 index 00000000000..fe1e74fed26 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arb_g_1vec3_1float_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.arb; + float g = lightloc.g; + vec4 a = vec4(m.g, g, m.b, m.r); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arbg_1vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arbg_1vec4_frag.frag new file mode 100644 index 00000000000..0f78a88847f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arbg_1vec4_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec4 m = al.arbg; + vec4 a = vec4(m.g, m.a, m.b, m.r); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arbg_1vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arbg_1vec4_vert.vert new file mode 100644 index 00000000000..e384b19ca2d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_arbg_1vec4_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec4 m = lightloc.arbg; + vec4 a = vec4(m.g, m.a, m.b, m.r); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_bar_g_1vec3_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_bar_g_1vec3_1float_frag.frag new file mode 100644 index 00000000000..0111f494e39 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_bar_g_1vec3_1float_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.bar; + float g = al.g; + vec4 a = vec4(m.b, g, m.r, m.g); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_bar_g_1vec3_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_bar_g_1vec3_1float_vert.vert new file mode 100644 index 00000000000..ab8b2b2dc18 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_bar_g_1vec3_1float_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.bar; + float g = lightloc.g; + vec4 a = vec4(m.b, g, m.r, m.g); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_barg_1vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_barg_1vec4_frag.frag new file mode 100644 index 00000000000..2569183a38a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_barg_1vec4_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec4 m = al.barg; + vec4 a = vec4(m.b, m.a, m.r, m.g); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_barg_1vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_barg_1vec4_vert.vert new file mode 100644 index 00000000000..2142720d48f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_barg_1vec4_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec4 m = lightloc.barg; + vec4 a = vec4(m.b, m.a, m.r, m.g); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_br_ag_2vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_br_ag_2vec2_frag.frag new file mode 100644 index 00000000000..ab9e05c0b7b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_br_ag_2vec2_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec2 m = al.br; + vec2 n = al.ag; + vec4 a = vec4(m.g, n.g, m.r, n.r); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_br_ag_2vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_br_ag_2vec2_vert.vert new file mode 100644 index 00000000000..c181e0c0c91 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_br_ag_2vec2_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec2 m = lightloc.br; + vec2 n = lightloc.ag; + vec4 a = vec4(m.g, n.g, m.r, n.r); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gr_ab_2vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gr_ab_2vec2_frag.frag new file mode 100644 index 00000000000..b1462af6e68 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gr_ab_2vec2_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec2 m = al.gr; + vec2 n = al.ab; + vec4 a = vec4(m.g, m.r, n.g, n.r); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gr_ab_2vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gr_ab_2vec2_vert.vert new file mode 100644 index 00000000000..bb3993f1b78 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gr_ab_2vec2_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec2 m = lightloc.gr; + vec2 n = lightloc.ab; + vec4 a = vec4(m.g, m.r, n.g, n.r); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gra_b_1vec3_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gra_b_1vec3_1float_frag.frag new file mode 100644 index 00000000000..3388c78fa3c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gra_b_1vec3_1float_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.gra; + float b = al.b; + vec4 a = vec4(m.g, m.r, b, m.b); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gra_b_1vec3_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gra_b_1vec3_1float_vert.vert new file mode 100644 index 00000000000..1ec63ed7510 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_gra_b_1vec3_1float_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.gra; + float b = lightloc.b; + vec4 a = vec4(m.g, m.r, b, m.b); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_grab_1vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_grab_1vec4_frag.frag new file mode 100644 index 00000000000..f8d4f33c18f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_grab_1vec4_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec4 m = al.grab; + vec4 a = vec4(m.g, m.r, m.a, m.b); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_grab_1vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_grab_1vec4_vert.vert new file mode 100644 index 00000000000..85f8d0c7563 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_grab_1vec4_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec4 m = lightloc.grab; + vec4 a = vec4(m.g, m.r, m.a, m.b); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqs_t_1vec3_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqs_t_1vec3_1float_frag.frag new file mode 100644 index 00000000000..84fe428ee8b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqs_t_1vec3_1float_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.pqs; + float t = al.t; + vec4 a = vec4(m.p, t, m.s, m.t); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqs_t_1vec3_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqs_t_1vec3_1float_vert.vert new file mode 100644 index 00000000000..1fa79b24bbe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqs_t_1vec3_1float_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.pqs; + float t = lightloc.t; + vec4 a = vec4(m.p, t, m.s, m.t); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqst_1vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqst_1vec4_frag.frag new file mode 100644 index 00000000000..04cdf35363e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqst_1vec4_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec4 m = al.pqst; + vec4 a = vec4(m.p, m.q, m.s, m.t); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqst_1vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqst_1vec4_vert.vert new file mode 100644 index 00000000000..1a4d502a4d7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_pqst_1vec4_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec4 m = lightloc.pqst; + vec4 a = vec4(m.p, m.q, m.s, m.t); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ps_qt_2vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ps_qt_2vec2_frag.frag new file mode 100644 index 00000000000..2f932a49af7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ps_qt_2vec2_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec2 m = al.ps; + vec2 n = al.qt; + vec4 a = vec4(m.t, n.t, m.s, n.s); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ps_qt_2vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ps_qt_2vec2_vert.vert new file mode 100644 index 00000000000..7b6f4394d8a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ps_qt_2vec2_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec2 m = lightloc.ps; + vec2 n = lightloc.qt; + vec4 a = vec4(m.t, n.t, m.s, n.s); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qs_pt_2vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qs_pt_2vec2_frag.frag new file mode 100644 index 00000000000..e5d725eec60 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qs_pt_2vec2_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec2 m = al.qs; + vec2 n = al.pt; + vec4 a = vec4(m.t, n.t, n.s, m.s); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qs_pt_2vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qs_pt_2vec2_vert.vert new file mode 100644 index 00000000000..0f36642aca0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qs_pt_2vec2_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec2 m = lightloc.qs; + vec2 n = lightloc.pt; + vec4 a = vec4(m.t, n.t, n.s, m.s); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qsp_t_1vec3_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qsp_t_1vec3_1float_frag.frag new file mode 100644 index 00000000000..8649155b86d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qsp_t_1vec3_1float_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.qsp; + float t = al.t; + vec4 a = vec4(m.t, t, m.p, m.s); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qsp_t_1vec3_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qsp_t_1vec3_1float_vert.vert new file mode 100644 index 00000000000..cdf2a3934af --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qsp_t_1vec3_1float_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.qsp; + float t = lightloc.t; + vec4 a = vec4(m.t, t, m.p, m.s); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qspt_1vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qspt_1vec4_frag.frag new file mode 100644 index 00000000000..7c7ab1ca36e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qspt_1vec4_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec4 m = al.qspt; + vec4 a = vec4(m.t, m.q, m.p, m.s); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qspt_1vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qspt_1vec4_vert.vert new file mode 100644 index 00000000000..dec21c445de --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_qspt_1vec4_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec4 m = lightloc.qspt; + vec4 a = vec4(m.t, m.q, m.p, m.s); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_r_g_b_a_4float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_r_g_b_a_4float_frag.frag new file mode 100644 index 00000000000..1f6ba05dbf4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_r_g_b_a_4float_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + float r = al.r; + float g = al.g; + float b = al.b; + float a = al.a; + vec4 m = vec4(r,g,b,a); + gl_FragColor = m; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_r_g_b_a_4float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_r_g_b_a_4float_vert.vert new file mode 100644 index 00000000000..bd69ccbe2ea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_r_g_b_a_4float_vert.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + float r = lightloc.r; + float g = lightloc.g; + float b = lightloc.b; + float a = lightloc.a; + vec4 m = vec4(r, g, b, a); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * m; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rg_ba_2vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rg_ba_2vec2_frag.frag new file mode 100644 index 00000000000..7483c92f1ee --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rg_ba_2vec2_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec2 m = al.rg; + vec2 n = al.ba; + vec4 a = vec4(m,n); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rg_ba_2vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rg_ba_2vec2_vert.vert new file mode 100644 index 00000000000..1b1fa0e2593 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rg_ba_2vec2_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec2 m = lightloc.rg; + vec2 n = lightloc.ba; + vec4 a = vec4(m,n); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgb_a_1vec3_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgb_a_1vec3_1float_frag.frag new file mode 100644 index 00000000000..91f88ab550f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgb_a_1vec3_1float_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.rgb; + float a = al.a; + vec4 b = vec4(m, a); + gl_FragColor = b; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgb_a_1vec3_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgb_a_1vec3_1float_vert.vert new file mode 100644 index 00000000000..68e1a75b962 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgb_a_1vec3_1float_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.rgb; + float a = lightloc.a; + vec4 b = vec4(m, a); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * b; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgba_1vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgba_1vec4_frag.frag new file mode 100644 index 00000000000..a470f51cce4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgba_1vec4_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec4 m = al.rgba; + gl_FragColor = m; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgba_1vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgba_1vec4_vert.vert new file mode 100644 index 00000000000..adf605add96 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_rgba_1vec4_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec4 m = lightloc.rgba; + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * m; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_s_t_p_q_4float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_s_t_p_q_4float_frag.frag new file mode 100644 index 00000000000..b848511c3be --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_s_t_p_q_4float_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + float s = al.s; + float t = al.t; + float p = al.p; + float q = al.q; + vec4 m = vec4(s,t,p,q); + gl_FragColor = m; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_s_t_p_q_4float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_s_t_p_q_4float_vert.vert new file mode 100644 index 00000000000..689d7d5e7db --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_s_t_p_q_4float_vert.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + float s = lightloc.s; + float t = lightloc.t; + float p = lightloc.p; + float q = lightloc.q; + vec4 m = vec4(s, t, p, q); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * m; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_st_pq_2vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_st_pq_2vec2_frag.frag new file mode 100644 index 00000000000..5d600a2cfab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_st_pq_2vec2_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec2 m = al.st; + vec2 n = al.pq; + vec4 a = vec4(m,n); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_st_pq_2vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_st_pq_2vec2_vert.vert new file mode 100644 index 00000000000..9c57a8d5da4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_st_pq_2vec2_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec2 m = lightloc.st; + vec2 n = lightloc.pq; + vec4 a = vec4(m,n); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stp_q_1vec3_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stp_q_1vec3_1float_frag.frag new file mode 100644 index 00000000000..c709061a525 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stp_q_1vec3_1float_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.stp; + float q = al.q; + vec4 a = vec4(m, q); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stp_q_1vec3_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stp_q_1vec3_1float_vert.vert new file mode 100644 index 00000000000..93316f4ebdc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stp_q_1vec3_1float_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.stp; + float q = lightloc.q; + vec4 a = vec4(m, q); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stpq_1vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stpq_1vec4_frag.frag new file mode 100644 index 00000000000..c97bf22073d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stpq_1vec4_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec4 m = al.stpq; + gl_FragColor = m; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stpq_1vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stpq_1vec4_vert.vert new file mode 100644 index 00000000000..e8496216389 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_stpq_1vec4_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec4 m = lightloc.stpq; + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * m; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ts_qp_2vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ts_qp_2vec2_frag.frag new file mode 100644 index 00000000000..45b472c1090 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ts_qp_2vec2_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec2 m = al.ts; + vec2 n = al.qp; + vec4 a = vec4(m.t, m.s, n.t, n.s); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ts_qp_2vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ts_qp_2vec2_vert.vert new file mode 100644 index 00000000000..d433805fd58 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_ts_qp_2vec2_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec2 m = lightloc.ts; + vec2 n = lightloc.qp; + vec4 a = vec4(m.t, m.s, n.t, n.s); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsq_p_1vec3_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsq_p_1vec3_1float_frag.frag new file mode 100644 index 00000000000..b78c8e49e3a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsq_p_1vec3_1float_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.tsq; + float p = al.p; + vec4 a = vec4(m.t, m.s, p, m.p); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsq_p_1vec3_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsq_p_1vec3_1float_vert.vert new file mode 100644 index 00000000000..c30c6aa9529 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsq_p_1vec3_1float_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.tsq; + float p = lightloc.p; + vec4 a = vec4(m.t, m.s, p, m.p); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsqp_1vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsqp_1vec4_frag.frag new file mode 100644 index 00000000000..cad5fab2c3d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsqp_1vec4_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec4 m = al.tsqp; + vec4 a = vec4(m.t, m.s, m.q, m.p); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsqp_1vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsqp_1vec4_vert.vert new file mode 100644 index 00000000000..7296ff0ae9a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_tsqp_1vec4_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec4 m = lightloc.tsqp; + vec4 a = vec4(m.t, m.s, m.q, m.p); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wx_zy_2vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wx_zy_2vec2_frag.frag new file mode 100644 index 00000000000..2c23493b67b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wx_zy_2vec2_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec2 m = al.wx; + vec2 n = al.zy; + vec4 a = vec4(m.y, n.y, n.x, m.x); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wx_zy_2vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wx_zy_2vec2_vert.vert new file mode 100644 index 00000000000..dd3af2d9f86 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wx_zy_2vec2_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec2 m = lightloc.wx; + vec2 n = lightloc.zy; + vec4 a = vec4(m.y, n.y, n.x, m.x); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxz_y_1vec3_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxz_y_1vec3_1float_frag.frag new file mode 100644 index 00000000000..d0856d99a96 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxz_y_1vec3_1float_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.wxz; + float y = al.y; + vec4 a = vec4(m.y, y, m.z, m.x); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxz_y_1vec3_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxz_y_1vec3_1float_vert.vert new file mode 100644 index 00000000000..3229f29aab7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxz_y_1vec3_1float_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.wxz; + float y = lightloc.y; + vec4 a = vec4(m.y, y, m.z, m.x); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxzy_1vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxzy_1vec4_frag.frag new file mode 100644 index 00000000000..500a03fcb98 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxzy_1vec4_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec4 m = al.wxzy; + vec4 a = vec4(m.y, m.w, m.z, m.x); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxzy_1vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxzy_1vec4_vert.vert new file mode 100644 index 00000000000..147c13482ca --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_wxzy_1vec4_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec4 m = lightloc.wxzy; + vec4 a = vec4(m.y, m.w, m.z, m.x); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_x_y_z_w_4float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_x_y_z_w_4float_frag.frag new file mode 100644 index 00000000000..8b807bfd243 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_x_y_z_w_4float_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + float x = al.x; + float y = al.y; + float z = al.z; + float w = al.w; + vec4 m = vec4(x,y,z,w); + gl_FragColor = m; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_x_y_z_w_4float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_x_y_z_w_4float_vert.vert new file mode 100644 index 00000000000..1b70abe6dca --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_x_y_z_w_4float_vert.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + float x = lightloc.x; + float y = lightloc.y; + float z = lightloc.z; + float w = lightloc.w; + vec4 m = vec4(x, y, z, w); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * m; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xy_zw_2vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xy_zw_2vec2_frag.frag new file mode 100644 index 00000000000..89e6c8d0dc0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xy_zw_2vec2_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec2 m = al.xy; + vec2 n = al.zw; + vec4 a = vec4(m,n); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xy_zw_2vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xy_zw_2vec2_vert.vert new file mode 100644 index 00000000000..b0b7c276c57 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xy_zw_2vec2_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec2 m = lightloc.xy; + vec2 n = lightloc.zw; + vec4 a = vec4(m,n); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyz_w_1vec3_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyz_w_1vec3_1float_frag.frag new file mode 100644 index 00000000000..37be342cf75 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyz_w_1vec3_1float_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.xyz; + float w = al.w; + vec4 a = vec4(m, w); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyz_w_1vec3_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyz_w_1vec3_1float_vert.vert new file mode 100644 index 00000000000..8ae968d1840 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyz_w_1vec3_1float_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.xyz; + float w = lightloc.w; + vec4 a = vec4(m, w); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyzw_1vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyzw_1vec4_frag.frag new file mode 100644 index 00000000000..4fc638f249f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyzw_1vec4_frag.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec4 m = al.xyzw; + gl_FragColor = m; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyzw_1vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyzw_1vec4_vert.vert new file mode 100644 index 00000000000..71b245113d4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_xyzw_1vec4_vert.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec4 m = lightloc.xyzw; + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * m; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yx_wz_2vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yx_wz_2vec2_frag.frag new file mode 100644 index 00000000000..403a9110a85 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yx_wz_2vec2_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec2 m = al.yx; + vec2 n = al.wz; + vec4 a = vec4(m.y, m.x, n.y, n.x); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yx_wz_2vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yx_wz_2vec2_vert.vert new file mode 100644 index 00000000000..0d05df10109 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yx_wz_2vec2_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec2 m = lightloc.yx; + vec2 n = lightloc.wz; + vec4 a = vec4(m.y, m.x, n.y, n.x); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxw_z_1vec3_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxw_z_1vec3_1float_frag.frag new file mode 100644 index 00000000000..07757ff1a98 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxw_z_1vec3_1float_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.yxw; + float z = al.z; + vec4 a = vec4(m.y, m.x, z, m.z); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxw_z_1vec3_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxw_z_1vec3_1float_vert.vert new file mode 100644 index 00000000000..00f5f2e7e84 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxw_z_1vec3_1float_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.yxw; + float z = lightloc.z; + vec4 a = vec4(m.y, m.x, z, m.z); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxwz_1vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxwz_1vec4_frag.frag new file mode 100644 index 00000000000..9e49edde780 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxwz_1vec4_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec4 m = al.yxwz; + vec4 a = vec4(m.y, m.x, m.w, m.z); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxwz_1vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxwz_1vec4_vert.vert new file mode 100644 index 00000000000..99bf91c1ee9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_yxwz_1vec4_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec4 m = lightloc.yxwz; + vec4 a = vec4(m.y, m.x, m.w, m.z); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwx_y_1vec3_1float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwx_y_1vec3_1float_frag.frag new file mode 100644 index 00000000000..d67d7b1387c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwx_y_1vec3_1float_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec3 m = al.zwx; + float y = al.y; + vec4 a = vec4(m.z, y, m.x, m.y); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwx_y_1vec3_1float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwx_y_1vec3_1float_vert.vert new file mode 100644 index 00000000000..9bb3028ebc6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwx_y_1vec3_1float_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec3 m = lightloc.zwx; + float y = lightloc.y; + vec4 a = vec4(m.z, y, m.x, m.y); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwxy_1vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwxy_1vec4_frag.frag new file mode 100644 index 00000000000..6af3719cbe8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwxy_1vec4_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec4 m = al.zwxy; + vec4 a = vec4(m.z, m.w, m.x, m.y); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwxy_1vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwxy_1vec4_vert.vert new file mode 100644 index 00000000000..106077653f5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zwxy_1vec4_vert.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec4 m = lightloc.zwxy; + vec4 a = vec4(m.z, m.w, m.x, m.y); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zx_wy_2vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zx_wy_2vec2_frag.frag new file mode 100644 index 00000000000..059d5dcd042 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zx_wy_2vec2_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; +void main (void) +{ + vec4 al = color; + vec2 m = al.zx; + vec2 n = al.wy; + vec4 a = vec4(m.y, n.y, m.x, n.x); + gl_FragColor = a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zx_wy_2vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zx_wy_2vec2_vert.vert new file mode 100644 index 00000000000..ff8513507e2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/swizzlers/vec4_zx_wy_2vec2_vert.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 lightloc = gtf_Vertex; + vec2 m = lightloc.zx; + vec2 n = lightloc.wy; + vec4 a = vec4(m.y, n.y, m.x, n.x); + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * a; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/input.run.txt new file mode 100644 index 00000000000..443a00f7001 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +tan_001_to_006.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_001_to_006.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_001_to_006.html new file mode 100644 index 00000000000..0d8b1d70a87 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_001_to_006.html @@ -0,0 +1,131 @@ + + + + + +WebGL GLSL conformance test: tan_001_to_006.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_frag_xvary.frag new file mode 100644 index 00000000000..f5c02d0457a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_frag_xvary.frag @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 0.5 * M_PI * 2.0 * (color.r - 0.5); + float o; + + if(abs(c) < 0.5) // -45..45 + o = 0.5 * tan(c) + 0.5; + else // 45..90, -45..-90 + o = 0.5 / tan(c) + 0.5; + gl_FragColor = vec4(o, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_frag_xvary_ref.frag new file mode 100644 index 00000000000..65a820e13eb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_frag_xvary_ref.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 0.5 * M_PI * 2.0 * (color.r - 0.5); + float o; + if(abs(c) < 0.5) // -45..45 + o = 0.5 * (sin(c) / cos(c)) + 0.5; + else // 45..90, -45..-90 + o = 0.5 * (cos(c) / sin(c)) + 0.5; + gl_FragColor = vec4(o, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_vert_xvary.vert new file mode 100644 index 00000000000..501b5725fe8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_vert_xvary.vert @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 0.5 * M_PI * 2.0 * (gtf_Color.r - 0.5); + float o; + + if(abs(c) < 0.5) // -45..45 + o = 0.5 * tan(c) + 0.5; + else // 45..90, -45..-90 + o = 0.5 / tan(c) + 0.5; + color = vec4(o, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_vert_xvary_ref.vert new file mode 100644 index 00000000000..97cd3cca258 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_float_vert_xvary_ref.vert @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float c = 0.5 * M_PI * 2.0 * (gtf_Color.r - 0.5); + float o; + if(abs(c) < 0.5) // -45..45 + o = 0.5 * (sin(c) / cos(c)) + 0.5; + else // 45..90, -45..-90 + o = 0.5 * (cos(c) / sin(c)) + 0.5; + color = vec4(o, 0.0, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_frag_xvary.frag new file mode 100644 index 00000000000..759e622e95e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_frag_xvary.frag @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 0.5 * M_PI * 2.0 * (color.rg - 0.5); + vec2 o; + if(abs(c.r) < 0.5) // -45..45 + o.r = 0.5 * tan(c.r) + 0.5; + else // 45..90, -45..-90 + o.r = 0.5 / tan(c.r) + 0.5; + + if(abs(c.g) < 0.5) // -45..45 + o.g = 0.5 * tan(c.g) + 0.5; + else // 45..90, -45..-90 + o.g = 0.5 / tan(c.g) + 0.5; + + gl_FragColor = vec4(o, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_frag_xvary_ref.frag new file mode 100644 index 00000000000..0b427094bdd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_frag_xvary_ref.frag @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 0.5 * M_PI * 2.0 * (color.rg - 0.5); + vec2 o; + if(abs(c.r) < 0.5) // -45..45 + o.r = 0.5 * (sin(c.r) / cos(c.r)) + 0.5; + else // 45..90, -45..-90 + o.r = 0.5 * (cos(c.r) / sin(c.r)) + 0.5; + + if(abs(c.g) < 0.5) // -45..45 + o.g = 0.5 * (sin(c.g) / cos(c.g)) + 0.5; + else // 45..90, -45..-90 + o.g = 0.5 * (cos(c.g) / sin(c.g)) + 0.5; + + gl_FragColor = vec4(o, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_vert_xvary.vert new file mode 100644 index 00000000000..9bb1d5b0fdb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_vert_xvary.vert @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 0.5 * M_PI * 2.0 * (gtf_Color.rg - 0.5); + vec2 o; + if(abs(c.r) < 0.5) // -45..45 + o.r = 0.5 * tan(c.r) + 0.5; + else // 45..90, -45..-90 + o.r = 0.5 / tan(c.r) + 0.5; + + if(abs(c.g) < 0.5) // -45..45 + o.g = 0.5 * tan(c.g) + 0.5; + else // 45..90, -45..-90 + o.g = 0.5 / tan(c.g) + 0.5; + + color = vec4(o, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_vert_xvary_ref.vert new file mode 100644 index 00000000000..fdd63bc2e6d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec2_vert_xvary_ref.vert @@ -0,0 +1,48 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec2 c = 0.5 * M_PI * 2.0 * (gtf_Color.rg - 0.5); + vec2 o; + if(abs(c.r) < 0.5) // -45..45 + o.r = 0.5 * (sin(c.r) / cos(c.r)) + 0.5; + else // 45..90, -45..-90 + o.r = 0.5 * (cos(c.r) / sin(c.r)) + 0.5; + + if(abs(c.g) < 0.5) // -45..45 + o.g = 0.5 * (sin(c.g) / cos(c.g)) + 0.5; + else // 45..90, -45..-90 + o.g = 0.5 * (cos(c.g) / sin(c.g)) + 0.5; + + color = vec4(o, 0.0, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_frag_xvary.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_frag_xvary.frag new file mode 100644 index 00000000000..5e442b591a9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_frag_xvary.frag @@ -0,0 +1,52 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 0.5 * M_PI * 2.0 * (color.rgb - 0.5); + vec3 o; + if(abs(c.r) < 0.5) // -45..45 + o.r = 0.5 * tan(c.r) + 0.5; + else // 45..90, -45..-90 + o.r = 0.5 / tan(c.r) + 0.5; + + if(abs(c.g) < 0.5) // -45..45 + o.g = 0.5 * tan(c.g) + 0.5; + else // 45..90, -45..-90 + o.g = 0.5 / tan(c.g) + 0.5; + + if(abs(c.b) < 0.5) // -45..45 + o.b = 0.5 * tan(c.b) + 0.5; + else // 45..90, -45..-90 + o.b = 0.5 / tan(c.b) + 0.5; + + gl_FragColor = vec4(o, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_frag_xvary_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_frag_xvary_ref.frag new file mode 100644 index 00000000000..09d152b2518 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_frag_xvary_ref.frag @@ -0,0 +1,52 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 0.5 * M_PI * 2.0 * (color.rgb - 0.5); + vec3 o; + if(abs(c.r) < 0.5) // -45..45 + o.r = 0.5 * (sin(c.r) / cos(c.r)) + 0.5; + else // 45..90, -45..-90 + o.r = 0.5 * (cos(c.r) / sin(c.r)) + 0.5; + + if(abs(c.g) < 0.5) // -45..45 + o.g = 0.5 * (sin(c.g) / cos(c.g)) + 0.5; + else // 45..90, -45..-90 + o.g = 0.5 * (cos(c.g) / sin(c.g)) + 0.5; + + if(abs(c.b) < 0.5) // -45..45 + o.b = 0.5 * (sin(c.b) / cos(c.b)) + 0.5; + else // 45..90, -45..-90 + o.b = 0.5 * (cos(c.b) / sin(c.b)) + 0.5; + + gl_FragColor = vec4(o, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_vert_xvary.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_vert_xvary.vert new file mode 100644 index 00000000000..66929bae675 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_vert_xvary.vert @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 0.5 * M_PI * 2.0 * (gtf_Color.rgb - 0.5); + vec3 o; + if(abs(c.r) < 0.5) // -45..45 + o.r = 0.5 * tan(c.r) + 0.5; + else // 45..90, -45..-90 + o.r = 0.5 / tan(c.r) + 0.5; + + if(abs(c.g) < 0.5) // -45..45 + o.g = 0.5 * tan(c.g) + 0.5; + else // 45..90, -45..-90 + o.g = 0.5 / tan(c.g) + 0.5; + + if(abs(c.b) < 0.5) // -45..45 + o.b = 0.5 * tan(c.b) + 0.5; + else // 45..90, -45..-90 + o.b = 0.5 / tan(c.b) + 0.5; + + color = vec4(o, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_vert_xvary_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_vert_xvary_ref.vert new file mode 100644 index 00000000000..fd99616bac6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/tan/tan_vec3_vert_xvary_ref.vert @@ -0,0 +1,53 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + vec3 c = 0.5 * M_PI * 2.0 * (gtf_Color.rgb - 0.5); + vec3 o; + if(abs(c.r) < 0.5) // -45..45 + o.r = 0.5 * (sin(c.r) / cos(c.r)) + 0.5; + else // 45..90, -45..-90 + o.r = 0.5 * (cos(c.r) / sin(c.r)) + 0.5; + + if(abs(c.g) < 0.5) // -45..45 + o.g = 0.5 * (sin(c.g) / cos(c.g)) + 0.5; + else // 45..90, -45..-90 + o.g = 0.5 * (cos(c.g) / sin(c.g)) + 0.5; + + if(abs(c.b) < 0.5) // -45..45 + o.b = 0.5 * (sin(c.b) / cos(c.b)) + 0.5; + else // 45..90, -45..-90 + o.b = 0.5 * (cos(c.b) / sin(c.b)) + 0.5; + + color = vec4(o, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/bvec4_2int_2float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/bvec4_2int_2float_frag.frag new file mode 100644 index 00000000000..91f6ba06950 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/bvec4_2int_2float_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + bvec4 a = bvec4(0, 23, 0.0, 23.0); + float gray; + if( (a[0] == false) && (a[1] == true) && (a[2] == false) && (a[3] == true) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/bvec4_2int_2float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/bvec4_2int_2float_vert.vert new file mode 100644 index 00000000000..9a672e0ef73 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/bvec4_2int_2float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + bvec4 a = bvec4(0, 23, 0.0, 23.0); + float gray; + if( (a[0] == false) && (a[1] == true) && (a[2] == false) && (a[3] == true) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/input.run.txt new file mode 100644 index 00000000000..e5ba07f12c5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/input.run.txt @@ -0,0 +1,4 @@ +# this file is auto-generated. DO NOT EDIT. +vec_001_to_008.html +vec_009_to_016.html +vec_017_to_018.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/ivec3_3int_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/ivec3_3int_frag.frag new file mode 100644 index 00000000000..a603bad89cb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/ivec3_3int_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + ivec3 a = ivec3(20, 13, 17); + float gray; + if( (a[0] == 20) && (a[1] == 13) && (a[2] == 17) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/ivec3_3int_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/ivec3_3int_vert.vert new file mode 100644 index 00000000000..81d0b3701ff --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/ivec3_3int_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + ivec3 a = ivec3(20, 13, 17); + float gray; + if( (a[0] == 20) && (a[1] == 13) && (a[2] == 17) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_2float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_2float_frag.frag new file mode 100644 index 00000000000..d2b17980a70 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_2float_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 a = vec2(13.0,53.0); + float gray; + if( (a[0] == 13.0) && (a[1] == 53.0) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_2float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_2float_vert.vert new file mode 100644 index 00000000000..0a1854c8129 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_2float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 a = vec2(13.0,53.0); + float gray; + if( (a[0] == 13.0) && (a[1] == 53.0) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_vec3_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_vec3_frag.frag new file mode 100644 index 00000000000..6dae4e49bd1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_vec3_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 b = vec3(13.0, 53.0, 139.0); + vec2 a = vec2(b); + float gray; + if( (a[0] == 13.0) && (a[1] == 53.0) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_vec3_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_vec3_vert.vert new file mode 100644 index 00000000000..b0be5bb6f25 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec2_vec3_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 b = vec3(13.0, 53.0, 139.0); + vec2 a = vec2(b); + float gray; + if( (a[0] == 13.0) && (a[1] == 53.0) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_float_vec2_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_float_vec2_frag.frag new file mode 100644 index 00000000000..50f3b951b9c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_float_vec2_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 b = vec2(53.0, 139.0); + vec3 a = vec3(13.0, b); + float gray; + if( (a[0] == 13.0) && (a[1] == 53.0) && (a[2] == 139.0) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_float_vec2_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_float_vec2_vert.vert new file mode 100644 index 00000000000..cb6dbca18ff --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_float_vec2_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 b = vec2(53.0, 139.0); + vec3 a = vec3(13.0, b); + float gray; + if( (a[0] == 13.0) && (a[1] == 53.0) && (a[2] == 139.0) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec2_float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec2_float_frag.frag new file mode 100644 index 00000000000..d093aa29fdd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec2_float_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec2 b = vec2(13.0, 53.0); + vec3 a = vec3(b, 139.0); + float gray; + if( (a[0] == 13.0) && (a[1] == 53.0) && (a[2] == 139.0) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec2_float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec2_float_vert.vert new file mode 100644 index 00000000000..21da106893c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec2_float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec2 b = vec2(13.0, 53.0); + vec3 a = vec3(b,139.0); + float gray; + if( (a[0] == 13.0) && (a[1] == 53.0) && (a[2] == 139.0) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec4_frag.frag new file mode 100644 index 00000000000..b0c8e3b6cfe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec4_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec4 b = vec4(13.0, 53.0, 139.0, 217.0); + vec3 a = vec3(b); + float gray; + if( (a[0] == 13.0) && (a[1] == 53.0) && (a[2] == 139.0) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec4_vert.vert new file mode 100644 index 00000000000..60e3e4d79a3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec3_vec4_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec4 b = vec4(13.0, 53.0, 139.0, 217.0); + vec3 a = vec3(b); + float gray; + if( (a[0] == 13.0) && (a[1] == 53.0) && (a[2] == 139.0) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_ivec4_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_ivec4_frag.frag new file mode 100644 index 00000000000..15ce47066dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_ivec4_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + ivec4 init = ivec4(2,3,5,9); + vec4 a = vec4(init); + float gray; + if( (a[0] == 2.0) && (a[1] == 3.0) && (a[2] == 5.0) && (a[3] == 9.0) ) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_ivec4_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_ivec4_vert.vert new file mode 100644 index 00000000000..510fd123a32 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_ivec4_vert.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + ivec4 init = ivec4(2,3,5,9); + vec4 a = vec4(init); + float gray; + if( (a[0] == 2.0) && (a[1] == 3.0) && (a[2] == 5.0) && (a[3] == 9.0) ) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_vec3_float_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_vec3_float_frag.frag new file mode 100644 index 00000000000..6e330f797af --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_vec3_float_frag.frag @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + vec3 b = vec3(13.0, 53.0, 139.0); + vec4 a = vec4(b, 217.0); + float gray; + if( (a[0] == 13.0) && (a[1] == 53.0) && (a[2] == 139.0) && (a[3] == 217.0)) + gray=1.0; + else gray=0.0; + gl_FragColor = vec4(gray, gray, gray, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_vec3_float_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_vec3_float_vert.vert new file mode 100644 index 00000000000..3ad46ce59d8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec4_vec3_float_vert.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + vec3 b = vec3(13.0, 53.0, 139.0); + vec4 a = vec4(b, 217.0); + float gray; + if( (a[0] == 13.0) && (a[1] == 53.0) && (a[2] == 139.0) && (a[3] == 217.0)) + gray=1.0; + else gray=0.0; + color = vec4(gray, gray, gray, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec_001_to_008.html new file mode 100644 index 00000000000..5f55e732176 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec_001_to_008.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: vec_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec_009_to_016.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec_009_to_016.html new file mode 100644 index 00000000000..d8573af715c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec_009_to_016.html @@ -0,0 +1,253 @@ + + + + + +WebGL GLSL conformance test: vec_009_to_016.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec_017_to_018.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec_017_to_018.html new file mode 100644 index 00000000000..0b4c05e4309 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec/vec_017_to_018.html @@ -0,0 +1,103 @@ + + + + + +WebGL GLSL conformance test: vec_017_to_018.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/input.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/input.run.txt new file mode 100644 index 00000000000..1d1f9189d7f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/input.run.txt @@ -0,0 +1,2 @@ +# this file is auto-generated. DO NOT EDIT. +vec3_001_to_008.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3_001_to_008.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3_001_to_008.html new file mode 100644 index 00000000000..b88ba393ff6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3_001_to_008.html @@ -0,0 +1,335 @@ + + + + + +WebGL GLSL conformance test: vec3_001_to_008.html + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3array_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3array_frag.frag new file mode 100644 index 00000000000..80bd508787c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3array_frag.frag @@ -0,0 +1,49 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// +// vec3array_frag.frag: Simple Fragment shader using vec3 to get colors. +// +// + +varying vec4 color; + +uniform vec3 lightPosition[2]; + +void main(void) +{ + vec3 v[2]; + + v[1] = vec3(color.r, color.g, color.b); + + + v[0] = lightPosition[1]; + + + gl_FragColor = vec4(v[1] + v[1], 0.0)/2.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3array_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3array_vert.vert new file mode 100644 index 00000000000..c0852715ae2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3array_vert.vert @@ -0,0 +1,47 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +// +// vec3array_vert.vert: Simple vertex shader using vec3 to get colors. +// +// + +varying vec4 color; +uniform vec3 lightPosition[2]; + +void main(void) +{ + vec3 v[2]; + + v[1] = vec3(gtf_Color.r, gtf_Color.g, gtf_Color.b); + + v[0] = lightPosition[1]; + + color = vec4(v[1] + v[1], 0.0)/2.0; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arraydirect_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arraydirect_frag.frag new file mode 100644 index 00000000000..0f3972477e3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arraydirect_frag.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// +// vec3arraydirect_frag.frag: Fragment shader solid color +// +// +// + +uniform vec3 lightPosition[2]; +varying vec4 color; + +void main(void) +{ + gl_FragColor = vec4(lightPosition[0] + lightPosition[1], 0.0) * 0.5; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arraydirect_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arraydirect_vert.vert new file mode 100644 index 00000000000..05aa58d5d1a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arraydirect_vert.vert @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +// +// vec3arraydirect_vert.vert: Vertex shader solid color +// +// +// + +uniform vec3 lightPosition[2]; +varying vec4 color; + +void main(void) +{ + + color = vec4(lightPosition[0] + lightPosition[1], 0.0) * 0.5; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + + +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arrayindirect_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arrayindirect_frag.frag new file mode 100644 index 00000000000..7e6e26e49c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arrayindirect_frag.frag @@ -0,0 +1,55 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// +// vec3arrayindirect_frag.frag: Fragment shader solid color +// The vec3 values are determined at runtime. +// +// + +uniform vec3 lightPosition[2]; +varying vec4 color; + +void main(void) +{ + int i; + + gl_FragColor = vec4(0.0); + + /* + // No indirect indexing in fragment shaders + for (i = 0; i < 2; i++) + { + gl_FragColor += vec4(lightPosition[i], 0.0); + } + */ + gl_FragColor += vec4(lightPosition[0], 0.0); + gl_FragColor += vec4(lightPosition[1], 0.0); + + gl_FragColor /= 2.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arrayindirect_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arrayindirect_vert.vert new file mode 100644 index 00000000000..671ecb6c9f4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3arrayindirect_vert.vert @@ -0,0 +1,51 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +// +// vec3arrayindirect_vert.vert: Vertex shader solid color +// The vec3 values are determined at runtime. +// +// + +uniform vec3 lightPosition[2]; +varying vec4 color; + +void main(void) +{ + color = vec4(0.0); + + for (int i = 0; i < 2; i++) + { + color += vec4(lightPosition[i], 0.0); + } + + color /= 2.0; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + + +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3single_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3single_frag.frag new file mode 100644 index 00000000000..5ec7bd239d3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3single_frag.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// +// vec3Matrix_frag.frag: Fragment shader solid color +// +// +// + +uniform vec3 lightPosition; +varying vec4 color; + +void main(void) +{ + gl_FragColor = vec4(lightPosition, 0.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3single_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3single_vert.vert new file mode 100644 index 00000000000..3affb309537 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL/vec3/vec3single_vert.vert @@ -0,0 +1,45 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +// +// vec3Matrix_vert.vert: Vertex shader solid color +// +// +// + +uniform vec3 lightPosition; +varying vec4 color; + +void main(void) +{ + + color = vec4(lightPosition, 0.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + + +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/compressed_paletted_texture/compressed_paletted_texture.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/compressed_paletted_texture/compressed_paletted_texture.frag new file mode 100644 index 00000000000..dc65a5a7183 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/compressed_paletted_texture/compressed_paletted_texture.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform sampler2D gtf_Texture0; +varying vec4 color; +varying vec4 gtf_TexCoord[1]; + +void main (void) +{ + gl_FragColor = color * texture2D(gtf_Texture0, gtf_TexCoord[0].xy); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/compressed_paletted_texture/compressed_paletted_texture.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/compressed_paletted_texture/compressed_paletted_texture.vert new file mode 100644 index 00000000000..16a2c2a72b6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/compressed_paletted_texture/compressed_paletted_texture.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 gtf_TexCoord[1]; +attribute vec4 gtf_MultiTexCoord0; +varying vec4 color; + +void main (void) +{ + color = gtf_Color; + gtf_TexCoord[0] = gtf_MultiTexCoord0; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag.frag new file mode 100644 index 00000000000..e605bf75854 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag.frag @@ -0,0 +1,68 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#extension GL_OES_standard_derivatives : enable +precision mediump float; +#endif + +// setting a boundary for cases where screen sizes may exceed the precision +// of the arithmetic used. +#define SAFETY_BOUND 500.0 + +// Macro to scale/bias the range of output. If input is [-1.0, 1.0], maps to [0.5, 1.0].. +// Accounts for precision errors magnified by derivative operation. +#define REDUCE_RANGE(A) ((A) + 3.0) / 4.0 + +// This fragment shader computes an image representation of the derivative of +// sine. The derivative of sine is cosine. This shader's output is compared to +// the reference shader that computes an image representation of cosine +// directly. + +uniform float viewportwidth; +uniform float viewportheight; + +varying vec2 vertXY; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float sine; + float cosine; + +#ifdef GL_OES_standard_derivatives + sine = sin(fract(gl_FragCoord.x / 128.0) * (2.0 * M_PI)); + cosine = REDUCE_RANGE((128.0 / (2.0 * M_PI)) * dFdx(sine)); +#else + cosine = 0.5; +#endif + + if( gl_FragCoord.x < SAFETY_BOUND ) + { + gl_FragColor = vec4(cosine, cosine, cosine, 1.0); + } + else discard; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag.vert new file mode 100644 index 00000000000..19f17bd5edc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying vec2 vertXY; + +void main (void) +{ + vertXY = gtf_Vertex.xy; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag_ref.frag new file mode 100644 index 00000000000..6cae5b9557d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag_ref.frag @@ -0,0 +1,61 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#extension GL_OES_standard_derivatives : enable +precision mediump float; +#endif + +// setting a boundary for cases where screen sizes may exceed the precision +// of the arithmetic used. +#define SAFETY_BOUND 500.0 + +// Macro to scale/bias the range of output. If input is [-1.0, 1.0], maps to [0.5, 1.0].. +// Accounts for precision errors magnified by derivative operation. +#define REDUCE_RANGE(A) ((A) + 3.0) / 4.0 + +uniform float viewportwidth; +uniform float viewportheight; + +varying vec2 vertXY; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float cosine; + + if( gl_FragCoord.x < SAFETY_BOUND ) + { + // horizontal cosine wave with a period of 128 pixels +#ifdef GL_OES_standard_derivatives + cosine = REDUCE_RANGE(cos(fract(gl_FragCoord.x / 128.0) * (2.0 * M_PI))); +#else + cosine = 0.5; +#endif + gl_FragColor = vec4(cosine, cosine, cosine, 1.0); + } + else discard; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag_ref.vert new file mode 100644 index 00000000000..19f17bd5edc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdx/dFdx_frag_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying vec2 vertXY; + +void main (void) +{ + vertXY = gtf_Vertex.xy; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag.frag new file mode 100644 index 00000000000..dfeb3db7c15 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag.frag @@ -0,0 +1,68 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#extension GL_OES_standard_derivatives : enable +precision mediump float; +#endif + +// setting a boundary for cases where screen sizes may exceed the precision +// of the arithmetic used. +#define SAFETY_BOUND 500.0 + +// Macro to scale/bias the range of output. If input is [-1.0, 1.0], maps to [0.5, 1.0].. +// Accounts for precision errors magnified by derivative operation. +#define REDUCE_RANGE(A) ((A) + 3.0) / 4.0 + +// This fragment shader computes an image representation of the derivative of +// sine. The derivative of sine is cosine. This shader's output is compared to +// the reference shader that computes an image representation of cosine +// directly. + +uniform float viewportwidth; +uniform float viewportheight; + +varying vec2 vertXY; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float sine; + float cosine; + +#ifdef GL_OES_standard_derivatives + sine = sin(fract(gl_FragCoord.y / 128.0) * (2.0 * M_PI)); + cosine = REDUCE_RANGE((128.0 / (2.0 * M_PI)) * dFdy(sine)); +#else + cosine = 0.5; +#endif + + if( gl_FragCoord.y < SAFETY_BOUND ) + { + gl_FragColor = vec4(cosine, cosine, cosine, 1.0); + } + else discard; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag.vert new file mode 100644 index 00000000000..a373ce62499 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying vec2 vertXY; + +void main (void) +{ + vertXY = gtf_Vertex.xy; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag_ref.frag new file mode 100644 index 00000000000..1036de45551 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag_ref.frag @@ -0,0 +1,64 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#extension GL_OES_standard_derivatives : enable +precision mediump float; +#endif + +// setting a boundary for cases where screen sizes may exceed the precision +// of the arithmetic used. +#define SAFETY_BOUND 500.0 + +// Macro to scale/bias the range of output. If input is [-1.0, 1.0], maps to [0.5, 1.0].. +// Accounts for precision errors magnified by derivative operation. +#define REDUCE_RANGE(A) ((A) + 3.0) / 4.0 + +uniform float viewportwidth; +uniform float viewportheight; + +varying vec2 vertXY; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float cosine; + + if( gl_FragCoord.y < SAFETY_BOUND ) + { + // vertical cosine wave with a period of 128 pixels + +#ifdef GL_OES_standard_derivatives + cosine = REDUCE_RANGE(cos(fract(gl_FragCoord.y / 128.0) * (2.0 * M_PI))); +#else + cosine = 0.5; +#endif + + gl_FragColor = vec4(cosine, cosine, cosine, 1.0); + } + else discard; +} + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag_ref.vert new file mode 100644 index 00000000000..a373ce62499 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/dFdy/dFdy_frag_ref.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying vec2 vertXY; + +void main (void) +{ + vertXY = gtf_Vertex.xy; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default.frag new file mode 100644 index 00000000000..e9d460fb20c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default.vert new file mode 100644 index 00000000000..4cb92aa773d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + gl_PointSize = 1.0; + +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default_textured.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default_textured.frag new file mode 100644 index 00000000000..8db3c6954f7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default_textured.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform sampler2D gtf_Texture0; +varying vec4 color; +varying vec4 gtf_TexCoord[1]; + +void main (void) +{ + gl_FragColor = texture2D(gtf_Texture0, gtf_TexCoord[0].xy); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default_textured.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default_textured.vert new file mode 100644 index 00000000000..1b5b7831a46 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/default_shaders/default_textured.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 gtf_TexCoord[1]; +attribute vec4 gtf_MultiTexCoord0; +varying vec4 color; + +void main (void) +{ + color = gtf_Color; + gtf_TexCoord[0] = gtf_MultiTexCoord0; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + gl_PointSize = 1.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag.frag new file mode 100644 index 00000000000..cae6f567444 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag.frag @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#extension GL_OES_standard_derivatives : enable +precision mediump float; +#endif + +// setting a boundary for cases where screen sizes may exceed the precision +// of the arithmetic used. +#define SAFETY_BOUND 500.0 + +// Macro to scale/bias the range of output. If input is [-1.0, 1.0], maps to [0.5, 1.0].. +// Accounts for precision errors magnified by derivative operation. +#define REDUCE_RANGE(A) ((A) + 3.0) / 4.0 + + +varying vec2 vertXY; + +uniform float viewportwidth; +uniform float viewportheight; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float func; + float funcfwidth; + +#ifdef GL_OES_standard_derivatives + // fwidth of average of horizontal and vertical sine waves with periods of 128 pixels, scaled to go from -1 to +1 + func = 0.5 * (sin(fract(gl_FragCoord.x / 128.0) * (2.0 * M_PI)) + sin(fract(gl_FragCoord.y / 128.0) * (2.0 * M_PI))); + funcfwidth = REDUCE_RANGE((128.0 / (2.0 * M_PI)) * fwidth(func)); +#else + funcfwidth = 0.5; +#endif + + if( (gl_FragCoord.x < SAFETY_BOUND) && (gl_FragCoord.y < SAFETY_BOUND) ) + { + gl_FragColor = vec4(funcfwidth, funcfwidth, funcfwidth, 1.0); + } + else discard; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag.vert new file mode 100644 index 00000000000..19f17bd5edc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying vec2 vertXY; + +void main (void) +{ + vertXY = gtf_Vertex.xy; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dx.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dx.frag new file mode 100644 index 00000000000..023f07111a1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dx.frag @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#extension GL_OES_standard_derivatives : enable +precision mediump float; +#endif + +// setting a boundary for cases where screen sizes may exceed the precision +// of the arithmetic used. +#define SAFETY_BOUND 500.0 + + +// Macro to scale/bias the range of output. If input is [-1.0, 1.0], maps to [0.5, 1.0].. +// Accounts for precision errors magnified by derivative operation. +#define REDUCE_RANGE(A) ((A) + 3.0) / 4.0 + +varying vec2 vertXY; + +uniform float viewportwidth; +uniform float viewportheight; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float cosine; + float sine; + +#ifdef GL_OES_standard_derivatives + // fwidth of horizontal sine wave with a period of 128 pixels, scaled to go from -1 to +1 + sine = sin(fract(gl_FragCoord.x / 128.0) * (2.0 * M_PI)); + cosine = REDUCE_RANGE((128.0 / (2.0 * M_PI)) * fwidth(sine)); +#else + cosine = 0.5; +#endif + + if( (gl_FragCoord.x < SAFETY_BOUND) && (gl_FragCoord.y < SAFETY_BOUND) ) + { + gl_FragColor = vec4(cosine, cosine, cosine, 1.0); + } + else discard; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dx.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dx.vert new file mode 100644 index 00000000000..19f17bd5edc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dx.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying vec2 vertXY; + +void main (void) +{ + vertXY = gtf_Vertex.xy; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dy.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dy.frag new file mode 100644 index 00000000000..24e6be01333 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dy.frag @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#extension GL_OES_standard_derivatives : enable +precision mediump float; +#endif + +// setting a boundary for cases where screen sizes may exceed the precision +// of the arithmetic used. +#define SAFETY_BOUND 500.0 + +// Macro to scale/bias the range of output. If input is [-1.0, 1.0], maps to [0.5, 1.0].. +// Accounts for precision errors magnified by derivative operation. +#define REDUCE_RANGE(A) ((A) + 3.0) / 4.0 + + +varying vec2 vertXY; + +uniform float viewportwidth; +uniform float viewportheight; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float cosine; + float sine; + +#ifdef GL_OES_standard_derivatives + // fwidth of vertical sine wave with a period of 128 pixels, scaled to go from -1 to +1 + sine = sin(fract(gl_FragCoord.y / 128.0) * (2.0 * M_PI)); + cosine = REDUCE_RANGE((128.0 / (2.0 * M_PI)) * fwidth(sine)); +#else + cosine = 0.5; +#endif + + if( (gl_FragCoord.x < SAFETY_BOUND) && (gl_FragCoord.y < SAFETY_BOUND) ) + { + gl_FragColor = vec4(cosine, cosine, cosine, 1.0); + } + else discard; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dy.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dy.vert new file mode 100644 index 00000000000..19f17bd5edc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_dy.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying vec2 vertXY; + +void main (void) +{ + vertXY = gtf_Vertex.xy; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref.frag new file mode 100644 index 00000000000..6dc825a7865 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref.frag @@ -0,0 +1,64 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#extension GL_OES_standard_derivatives : enable +precision mediump float; +#endif + +// setting a boundary for cases where screen sizes may exceed the precision +// of the arithmetic used. +#define SAFETY_BOUND 500.0 + +// Macro to scale/bias the range of output. If input is [-1.0, 1.0], maps to [0.5, 1.0].. +// Accounts for precision errors magnified by derivative operation. +#define REDUCE_RANGE(A) ((A) + 3.0) / 4.0 + + +uniform float viewportwidth; +uniform float viewportheight; + +varying vec2 vertXY; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float func; + + if( (gl_FragCoord.x < SAFETY_BOUND) && (gl_FragCoord.y < SAFETY_BOUND) ) + { + // average of horizontal and vertical abs cosine waves with periods of 128 pixels + +#ifdef GL_OES_standard_derivatives + func = REDUCE_RANGE(0.5 * (abs(cos(fract(gl_FragCoord.x / 128.0) * (2.0 * M_PI))) + abs(cos(fract(gl_FragCoord.y / 128.0) * (2.0 * M_PI))))); +#else + func = 0.5; +#endif + + gl_FragColor = vec4(func, func, func, 1.0); + } + else discard; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref.vert new file mode 100644 index 00000000000..19f17bd5edc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying vec2 vertXY; + +void main (void) +{ + vertXY = gtf_Vertex.xy; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dx.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dx.frag new file mode 100644 index 00000000000..5f7173c3e88 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dx.frag @@ -0,0 +1,63 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#extension GL_OES_standard_derivatives : enable +precision mediump float; +#endif + +// setting a boundary for cases where screen sizes may exceed the precision +// of the arithmetic used. +#define SAFETY_BOUND 500.0 + +// Macro to scale/bias the range of output. If input is [-1.0, 1.0], maps to [0.5, 1.0].. +// Accounts for precision errors magnified by derivative operation. +#define REDUCE_RANGE(A) ((A) + 3.0) / 4.0 + +uniform float viewportwidth; +uniform float viewportheight; + +varying vec2 vertXY; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float cosine; + + if( (gl_FragCoord.x < SAFETY_BOUND) && (gl_FragCoord.y < SAFETY_BOUND) ) + { + // horizontal abs cosine wave with a period of 128 pixels + +#ifdef GL_OES_standard_derivatives + cosine = REDUCE_RANGE(abs(cos(fract(gl_FragCoord.x / 128.0) * (2.0 * M_PI)))); +#else + cosine = 0.5; +#endif + + gl_FragColor = vec4(cosine, cosine, cosine, 1.0); + } + else discard; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dx.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dx.vert new file mode 100644 index 00000000000..19f17bd5edc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dx.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying vec2 vertXY; + +void main (void) +{ + vertXY = gtf_Vertex.xy; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dy.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dy.frag new file mode 100644 index 00000000000..1f25729b44e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dy.frag @@ -0,0 +1,64 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +#extension GL_OES_standard_derivatives : enable +precision mediump float; +#endif + +// setting a boundary for cases where screen sizes may exceed the precision +// of the arithmetic used. +#define SAFETY_BOUND 500.0 + +// Macro to scale/bias the range of output. If input is [-1.0, 1.0], maps to [0.5, 1.0]. +// Accounts for precision errors magnified by derivative operation. +#define REDUCE_RANGE(A) ((A) + 3.0) / 4.0 + + +uniform float viewportwidth; +uniform float viewportheight; + +varying vec2 vertXY; + +void main (void) +{ + const float M_PI = 3.14159265358979323846; + float cosine; + + if( (gl_FragCoord.x < SAFETY_BOUND) && (gl_FragCoord.y < SAFETY_BOUND) ) + { + // vertical abs cosine wave with a period of 128 pixels + +#ifdef GL_OES_standard_derivatives + cosine = REDUCE_RANGE(abs(cos(fract(gl_FragCoord.y / 128.0) * (2.0 * M_PI)))); +#else + cosine = 0.5; +#endif + + gl_FragColor = vec4(cosine, cosine, cosine, 1.0); + } + else discard; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dy.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dy.vert new file mode 100644 index 00000000000..19f17bd5edc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2ExtensionTests/fwidth/fwidth_frag_ref_dy.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying vec2 vertXY; + +void main (void) +{ + vertXY = gtf_Vertex.xy; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects.frag new file mode 100644 index 00000000000..b25540e1e6e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform sampler2D gtf_Texture0; +varying vec4 color; +varying vec4 gtf_TexCoord[1]; + +void main (void) +{ + gl_FragColor = texture2D(gtf_Texture0, gtf_TexCoord[0].st, 1.0) * color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects.vert new file mode 100644 index 00000000000..3c0c0e0764a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects.vert @@ -0,0 +1,161 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +attribute vec3 gtf_Normal; +attribute vec4 gtf_MultiTexCoord0; + +uniform mat4 gtf_ModelViewProjectionMatrix; +uniform mat3 gtf_NormalMatrix; + +varying vec4 gtf_TexCoord[1]; +varying vec4 color; + +vec4 Ambient; +vec4 Diffuse; +vec4 Specular; + +const vec3 lightPosition = vec3(0.0, 0.0, 1.0); +const vec3 spotDirection = vec3(0.0, 0.0, -1.0); +const float spotCutoff = 180.0; +const float spotExponent = 0.0; + +const float lightAttenuationConstant = 1.0; +const float lightAttenuationLinear = 0.0; +const float lightAttenuationQuadratic = 0.0; + +const vec4 lightAmbient = vec4(0.0, 0.0, 0.0, 0.0); +vec4 lightDiffuse = vec4(1.0, 1.0, 1.0, 1.0); +vec4 lightSpecular = vec4(1.0, 1.0, 1.0, 1.0); + +const float materialShininess = 0.0; + +const vec4 sceneColor = vec4(0.0, 0.0, 0.0, 0.0); + +void spotLight(in int i, + in vec3 normal, + in vec3 eye, + in vec3 ecPosition3 + ) +{ + float nDotVP; // normal . light direction + float nDotHV; // normal . light half vector + float pf; // power factor + float spotDot; // cosine of angle between spotlight + float spotAttenuation; // spotlight attenuation factor + float attenuation; // computed attenuation factor + float d; // distance from surface to light source + vec3 VP; // direction from surface to light position + vec3 halfVector; // direction of maximum highlights + + // Compute vector from surface to light position + VP = lightPosition - ecPosition3; + + // Compute distance between surface and light position + d = length(VP); + + // Normalize the vector from surface to light position + VP = normalize(VP); + + // Compute attenuation + attenuation = 1.0 / (lightAttenuationConstant + + lightAttenuationLinear * d + + lightAttenuationQuadratic * d * d); + + // See if point on surface is inside cone of illumination + spotDot = dot(-VP, normalize(spotDirection)); + + if (spotDot < cos(radians(spotCutoff))) + spotAttenuation = 0.0; // light adds no contribution + else + spotAttenuation = pow(spotDot, spotExponent); + + // Combine the spotlight and distance attenuation. + attenuation *= spotAttenuation; + + halfVector = normalize(VP + eye); + + nDotVP = max(0.0, dot(normal, VP)); + nDotHV = max(0.0, dot(normal, halfVector)); + + if (nDotVP == 0.0) + pf = 0.0; + else + pf = pow(nDotHV, materialShininess); + + Ambient += lightAmbient * attenuation; + Diffuse += lightDiffuse * nDotVP * attenuation; + Specular += lightSpecular * pf * attenuation; +} + +vec3 fnormal(void) +{ + //Compute the normal + vec3 normal = gtf_NormalMatrix * gtf_Normal; + normal = normalize(normal); + + return normal; +} + +void flight(in vec3 normal, in vec4 ecPosition, float alphaFade) +{ + vec3 ecPosition3; + vec3 eye; + + ecPosition3 = (vec3 (ecPosition)) / ecPosition.w; + eye = vec3 (0.0, 0.0, 1.0); + + // Clear the light intensity accumulators + Ambient = vec4 (0.0); + Diffuse = vec4 (0.0); + Specular = vec4 (0.0); + + //lightSpecular = gtf_Color; + + spotLight(0, normal, eye, ecPosition3); + + color = sceneColor + + Ambient * gtf_Color + + Diffuse * gtf_Color; + color += Specular * gtf_Color; + color = clamp( color, 0.0, 1.0 ); + + color.a *= alphaFade; +} + +void main (void) +{ + vec3 transformedNormal; + float alphaFade = 1.0; + + vec4 ecPosition = gtf_Vertex; + + color = gtf_Color; + gtf_TexCoord[0] = gtf_MultiTexCoord0; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + transformedNormal = fnormal(); + flight(transformedNormal, ecPosition, alphaFade); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_multitexturing.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_multitexturing.frag new file mode 100644 index 00000000000..30115c372b2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_multitexturing.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform sampler2D gtf_Texture0; +uniform sampler2D gtf_Texture1; + +varying vec4 color; +varying vec4 gtf_TexCoord[2]; + +void main (void) +{ + gl_FragColor = texture2D(gtf_Texture0, gtf_TexCoord[0].st, 1.0); + gl_FragColor += texture2D(gtf_Texture1, gtf_TexCoord[1].st, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_multitexturing.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_multitexturing.vert new file mode 100644 index 00000000000..a327a7e0d86 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_multitexturing.vert @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +uniform mat4 gtf_ModelViewProjectionMatrix; + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +attribute vec4 gtf_MultiTexCoord0; +attribute vec4 gtf_MultiTexCoord1; + +varying vec4 color; +varying vec4 gtf_TexCoord[2]; + +void main (void) +{ + color = gtf_Color; + gtf_TexCoord[0] = gtf_MultiTexCoord0; + gtf_TexCoord[1] = gtf_MultiTexCoord1; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_pointSize.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_pointSize.frag new file mode 100644 index 00000000000..e9d460fb20c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_pointSize.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_pointSize.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_pointSize.vert new file mode 100644 index 00000000000..2811521b7fb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/buffer_objects/buffer_objects_pointSize.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +attribute float gtf_PointSize; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + gl_PointSize = gtf_PointSize; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/copy_texture/copy_texture.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/copy_texture/copy_texture.frag new file mode 100644 index 00000000000..3fc499ba0b0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/copy_texture/copy_texture.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform sampler2D gtf_Texture0; +varying vec4 color; +varying vec4 gtf_TexCoord[1]; + +void main (void) +{ + if (gtf_TexCoord[0].s == 1.0) + gl_FragColor = color; + else + gl_FragColor = texture2D(gtf_Texture0, gtf_TexCoord[0].st, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default.frag new file mode 100644 index 00000000000..e9d460fb20c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default.vert new file mode 100644 index 00000000000..72e83fd0322 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + gl_PointSize = 1.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default_textured.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default_textured.frag new file mode 100644 index 00000000000..8db3c6954f7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default_textured.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform sampler2D gtf_Texture0; +varying vec4 color; +varying vec4 gtf_TexCoord[1]; + +void main (void) +{ + gl_FragColor = texture2D(gtf_Texture0, gtf_TexCoord[0].xy); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default_textured.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default_textured.vert new file mode 100644 index 00000000000..1b5b7831a46 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/default_shaders/default_textured.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 gtf_TexCoord[1]; +attribute vec4 gtf_MultiTexCoord0; +varying vec4 color; + +void main (void) +{ + color = gtf_Color; + gtf_TexCoord[0] = gtf_MultiTexCoord0; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + gl_PointSize = 1.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse.frag new file mode 100644 index 00000000000..2f751e7062b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse.vert new file mode 100644 index 00000000000..aafe53fbba4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse.vert @@ -0,0 +1,149 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; +uniform mat3 gtf_NormalMatrix; + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +attribute vec3 gtf_Normal; + +varying vec4 color; + +vec4 Ambient; +vec4 Diffuse; +vec4 Specular; + +const vec3 lightPosition = vec3(0.0, 0.0, 10.0); +const float lightAttenuationConstant = 1.0; +const float lightAttenuationLinear = 0.0; +const float lightAttenuationQuadratic = 0.0; + +const vec4 lightAmbient = vec4(0.0, 0.0, 0.0, 0.0); +vec4 lightDiffuse = vec4(1.0, 0.0, 0.0, 1.0); + +const vec4 materialAmbient = vec4(0.0, 0.0, 0.0, 1.0); +const vec4 materialDiffuse = vec4(1.0, 1.0, 1.0, 1.0); +const vec4 materialSpecular = vec4(0.0, 0.0, 0.0, 0.0); +const float materialShininess = 20.0; + +const vec4 sceneColor = vec4(0.0, 0.0, 0.0, 0.0); + + +void pointLight(in int i, in vec3 normal, in vec3 eye, in vec3 ecPosition3) +{ + float nDotVP; // normal . light direction + float nDotHV; // normal . light half vector + float pf; // power factor + float attenuation; // computed attenuation factor + float d; // distance from surface to light source + vec3 VP; // direction from surface to light position + vec3 halfVector; // direction of maximum highlights + + // Compute vector from surface to light position + VP = lightPosition - ecPosition3; + + // Compute distance between surface and light position + d = length(VP); + + // Normalize the vector from surface to light position + VP = normalize(VP); + + // Compute attenuation + attenuation = 1.0 / (lightAttenuationConstant + + lightAttenuationLinear * d + + lightAttenuationQuadratic * d * d); + + halfVector = normalize(VP + eye); + + nDotVP = max(0.0, dot(normal, VP)); + nDotHV = max(0.0, dot(normal, halfVector)); + + if (nDotVP == 0.0) + { + pf = 0.0; + } + else + { + pf = pow(nDotHV, materialShininess); + + } + Ambient += lightAmbient * attenuation; + Diffuse += lightDiffuse * nDotVP * attenuation; +// Specular += lightSpecular * pf * attenuation; +} + +vec3 fnormal(void) +{ + //Compute the normal + vec3 normal = gtf_Normal * gtf_NormalMatrix; + normal = normalize(normal); + + // This should change to "return normal" but for this test, we force a normal pointing towards the light + // return normal + return vec3(0.0, 0.0, 1.0); +} + +void flight(in vec3 normal, in vec4 ecPosition, float alphaFade) +{ + vec3 ecPosition3; + vec3 eye; + + ecPosition3 = (vec3 (ecPosition)) / ecPosition.w; + eye = vec3 (0.0, 0.0, 1.0); + + // Clear the light intensity accumulators + Ambient = vec4 (0.0); + Diffuse = vec4 (0.0); + Specular = vec4 (0.0); + + lightDiffuse = gtf_Color; + + pointLight(0, normal, eye, ecPosition3); + + color = sceneColor + + Ambient * materialAmbient + + Diffuse * materialDiffuse; + color += Specular * materialSpecular; + color = clamp( color, 0.0, 1.0 ); + + color.a *= alphaFade; +} + + +void main (void) +{ + vec3 transformedNormal; + float alphaFade = 1.0; + + // Eye-coordinate position of vertex, needed in various calculations + vec4 ecPosition = gtf_ModelViewMatrix * gtf_Vertex; + + // Do fixed functionality vertex transform + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + transformedNormal = fnormal(); + flight(transformedNormal, ecPosition, alphaFade); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse_ref.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse_ref.frag new file mode 100644 index 00000000000..e9d460fb20c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse_ref.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse_ref.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse_ref.vert new file mode 100644 index 00000000000..da6387dcc67 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/lighting_diffuse/lighting_diffuse_ref.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_rasterization/point_rasterization.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_rasterization/point_rasterization.frag new file mode 100644 index 00000000000..e9d460fb20c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_rasterization/point_rasterization.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_rasterization/point_rasterization.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_rasterization/point_rasterization.vert new file mode 100644 index 00000000000..5ff01258741 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_rasterization/point_rasterization.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +uniform float gtf_PointSize; +varying vec4 color; + +void main (void) +{ + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + gl_PointSize = gtf_PointSize; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_sprites/point_sprites.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_sprites/point_sprites.frag new file mode 100644 index 00000000000..96a04a9ce24 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_sprites/point_sprites.frag @@ -0,0 +1,31 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +uniform sampler2D gtf_Texture0; + +void main (void) +{ + gl_FragColor = texture2D(gtf_Texture0, gl_PointCoord.st); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_sprites/point_sprites.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_sprites/point_sprites.vert new file mode 100644 index 00000000000..a85dd66bb8a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/point_sprites/point_sprites.vert @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute float gtf_PointSize; +uniform mat4 gtf_ModelViewProjectionMatrix; + +void main (void) +{ + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + gl_PointSize = gtf_PointSize; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/user_clip_planes/user_clip_planes.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/user_clip_planes/user_clip_planes.frag new file mode 100644 index 00000000000..f91d4b0e8d5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/user_clip_planes/user_clip_planes.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +varying vec4 color; +varying float dotClip[2]; + +void main (void) +{ + if (dotClip[0] >= 0.0 || dotClip[1] >= 0.0) + discard; + + gl_FragColor = color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/user_clip_planes/user_clip_planes.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/user_clip_planes/user_clip_planes.vert new file mode 100644 index 00000000000..ed27fe77e45 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2FixedTests/user_clip_planes/user_clip_planes.vert @@ -0,0 +1,44 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +varying float dotClip[2]; + +void main (void) +{ + vec4 userClipPlanes[2]; + userClipPlanes[0] = vec4(0.0, 1.0, 0.0, 0.0); + userClipPlanes[1] = vec4(-1.0, 0.0, 0.0, 0.0); + + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + + dotClip[0] = dot(userClipPlanes[0], gl_Position); + dotClip[1] = dot(userClipPlanes[1], gl_Position); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/successfulcompile_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/successfulcompile_frag.frag new file mode 100644 index 00000000000..9069489545a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/successfulcompile_frag.frag @@ -0,0 +1,63 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float mortarThickness; +uniform vec3 brickColor; +uniform vec3 mortarColor; + +uniform float brickMortarWidth; +uniform float brickMortarHeight; +uniform float mwf; +uniform float mhf; + +varying vec3 Position; +varying float lightIntensity; + +void main (void) +{ + vec3 ct; + float ss, tt, w, h; + + vec3 pos = Position; + + ss = pos.x / brickMortarWidth; + tt = pos.z / brickMortarHeight; + + if (fract (tt * 0.5) > 0.5) + ss += 0.5; + + ss = fract (ss); + tt = fract (tt); + + w = step (mwf, ss) - step (1.0 - mwf, ss); + h = step (mhf, tt) - step (1.0 - mhf, tt); + + ct = clamp(mix (mortarColor, brickColor, w * h) * lightIntensity, 0.0, 1.0); + + gl_FragColor = vec4 (ct, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/successfulcompile_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/successfulcompile_vert.vert new file mode 100644 index 00000000000..3b42e9d1595 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/successfulcompile_vert.vert @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform float Scale; + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex) * Scale; + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + lightIntensity = dot(normalize(LightPosition - vec3(pos)), tnorm) * 1.5; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/unsuccessfulcompile_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/unsuccessfulcompile_frag.frag new file mode 100644 index 00000000000..fd471888521 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/unsuccessfulcompile_frag.frag @@ -0,0 +1,83 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float GrainSize; +uniform vec3 DarkColor; +uniform vec3 colorSpread; + +varying float lightIntensity; +varying vec3 Position; + +void main (void) +{ + // + // cheap noise + // + vec3 location = Position; + + vec3 floorvec = vec3(floor(Position.x * 10.0), 0.0, floor(Position.z * 10.0)); + vec3 noise = Position * 10.0 - floorvec - 0.5; + noise *= noise; + location += noise * 0.12; + + // + // distance from axis + // + float dist = location.x * location.x + location.z * location.z; + float grain = dist / GrainSize; + + // + // grain effects as function of distance + // + float brightness = fract(grain); + if (brightness > 0.5) + brightness = (1.0 - brightness); + vec3 color = DarkColor + 0.5 * brightness * (colorSpread); + + brightness = fract(grain*7.0); + if (brightness > 0.5) + brightness = 1.0 - brightness; + color -= 0.5 * brightness * colorSpread; + + // + // also as a function of lines parallel to the axis + // + brightness = fract(grain*47.0); + float line = fract(Position.z + Position.x); + float snap = floor(line * 30.0) * (1.0/30.0); + if (line < snap + 0.004) + color -= 0.5 * brightness * colorSpread; + + // + // apply lighting effects from vertex processor + // + color *= lightIntensity; + color = clamp(color, 0.0, 1.0); + + gl_FragColor = vec4(color, 0.1) +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/unsuccessfulcompile_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/unsuccessfulcompile_vert.vert new file mode 100644 index 00000000000..c73892a4cab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/attach_shader/unsuccessfulcompile_vert.vert @@ -0,0 +1,60 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform vec3 NotActiveOne; +attribute float myAttribute1; +attribute float myAttribute2; + +const float specularContribution = 0.7; +const float diffuseContribution = (1.0 - specularContribution); + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex_Color; + Position = vec3(gtf_Vertex); + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + vec3 lightVec = normalize(LightPosition - vec3(pos)); + vec3 reflectVec = reflect(lightVec, tnorm); + vec3 viewVec = normalize(vec3(pos)); + + //float spec = clamp(dot(reflectVec, viewVec), 0.0, 1.0); + float spec = clamp(dot(reflectVec, viewVec), myAttribute1, myAttribute2); + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + + lightIntensity = diffuseContribution * dot(lightVec, tnorm) + + specularContribution * spec; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/bind_attribute_location/brick.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/bind_attribute_location/brick.frag new file mode 100644 index 00000000000..870d53d0533 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/bind_attribute_location/brick.frag @@ -0,0 +1,64 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +uniform float mortarThickness; +uniform vec3 brickColor; +uniform vec3 mortarColor; + +uniform float brickMortarWidth; +uniform float brickMortarHeight; +uniform float mwf; +uniform float mhf; + +varying vec3 Position; +varying float lightIntensity; + +void main (void) +{ + vec3 ct; + float ss, tt, w, h; + + vec3 pos = Position; + + ss = pos.x / brickMortarWidth; + tt = pos.z / brickMortarHeight; + + if (fract (tt * 0.5) > 0.5) + ss += 0.5; + + ss = fract (ss); + tt = fract (tt); + + w = step (mwf, ss) - step (1.0 - mwf, ss); + h = step (mhf, tt) - step (1.0 - mhf, tt); + + ct = clamp(mix (mortarColor, brickColor, w * h) * lightIntensity, 0.0, 1.0); + + gl_FragColor = vec4 (ct, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/bind_attribute_location/brick.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/bind_attribute_location/brick.vert new file mode 100644 index 00000000000..8895eba8810 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/bind_attribute_location/brick.vert @@ -0,0 +1,60 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform vec3 NotActiveOne; +attribute float myAttribute1; +attribute vec3 myAttribute2; + +const float specularContribution = 0.7; +const float diffuseContribution = (1.0 - specularContribution); + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex); + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + vec3 lightVec = normalize(LightPosition - vec3(pos)); + vec3 reflectVec = reflect(lightVec, tnorm); + vec3 viewVec = normalize(vec3(pos)); + + //float spec = clamp(dot(reflectVec, viewVec), 0.0, 1.0); + float spec = clamp(dot(reflectVec, viewVec), myAttribute1, myAttribute2[1]); + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + + lightIntensity = diffuseContribution * dot(lightVec, tnorm) + + specularContribution * spec; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/brick.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/brick.vert new file mode 100644 index 00000000000..c73892a4cab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/brick.vert @@ -0,0 +1,60 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform vec3 NotActiveOne; +attribute float myAttribute1; +attribute float myAttribute2; + +const float specularContribution = 0.7; +const float diffuseContribution = (1.0 - specularContribution); + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex_Color; + Position = vec3(gtf_Vertex); + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + vec3 lightVec = normalize(LightPosition - vec3(pos)); + vec3 reflectVec = reflect(lightVec, tnorm); + vec3 viewVec = normalize(vec3(pos)); + + //float spec = clamp(dot(reflectVec, viewVec), 0.0, 1.0); + float spec = clamp(dot(reflectVec, viewVec), myAttribute1, myAttribute2); + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + + lightIntensity = diffuseContribution * dot(lightVec, tnorm) + + specularContribution * spec; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/texture.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/texture.frag new file mode 100644 index 00000000000..c37982eb2a6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/texture.frag @@ -0,0 +1,52 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +// +// wobble.frag: Fragment shader for wobbling a texture +// +// author: Antonio Tejada +// +// + +varying vec3 Position; +varying float lightIntensity; + +/* Constants */ + +uniform sampler2D sampler2d; // value of sampler2d = 0 +varying vec4 gtf_TexCoord[1]; + +void main (void) +{ + vec3 lightColor = vec3(texture2D(sampler2d, vec2(gtf_TexCoord[0]))) * lightIntensity; + + vec3 ct = clamp(lightColor, 0.0, 1.0); + + gl_FragColor = vec4 (ct, 1.0); +} + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/wood.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/wood.frag new file mode 100644 index 00000000000..fd471888521 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/wood.frag @@ -0,0 +1,83 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float GrainSize; +uniform vec3 DarkColor; +uniform vec3 colorSpread; + +varying float lightIntensity; +varying vec3 Position; + +void main (void) +{ + // + // cheap noise + // + vec3 location = Position; + + vec3 floorvec = vec3(floor(Position.x * 10.0), 0.0, floor(Position.z * 10.0)); + vec3 noise = Position * 10.0 - floorvec - 0.5; + noise *= noise; + location += noise * 0.12; + + // + // distance from axis + // + float dist = location.x * location.x + location.z * location.z; + float grain = dist / GrainSize; + + // + // grain effects as function of distance + // + float brightness = fract(grain); + if (brightness > 0.5) + brightness = (1.0 - brightness); + vec3 color = DarkColor + 0.5 * brightness * (colorSpread); + + brightness = fract(grain*7.0); + if (brightness > 0.5) + brightness = 1.0 - brightness; + color -= 0.5 * brightness * colorSpread; + + // + // also as a function of lines parallel to the axis + // + brightness = fract(grain*47.0); + float line = fract(Position.z + Position.x); + float snap = floor(line * 30.0) * (1.0/30.0); + if (line < snap + 0.004) + color -= 0.5 * brightness * colorSpread; + + // + // apply lighting effects from vertex processor + // + color *= lightIntensity; + color = clamp(color, 0.0, 1.0); + + gl_FragColor = vec4(color, 0.1) +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/wood.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/wood.vert new file mode 100644 index 00000000000..3b42e9d1595 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/compile_shader/wood.vert @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform float Scale; + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex) * Scale; + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + lightIntensity = dot(normalize(LightPosition - vec3(pos)), tnorm) * 1.5; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/delete_object/successfulcompile_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/delete_object/successfulcompile_frag.frag new file mode 100644 index 00000000000..9069489545a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/delete_object/successfulcompile_frag.frag @@ -0,0 +1,63 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float mortarThickness; +uniform vec3 brickColor; +uniform vec3 mortarColor; + +uniform float brickMortarWidth; +uniform float brickMortarHeight; +uniform float mwf; +uniform float mhf; + +varying vec3 Position; +varying float lightIntensity; + +void main (void) +{ + vec3 ct; + float ss, tt, w, h; + + vec3 pos = Position; + + ss = pos.x / brickMortarWidth; + tt = pos.z / brickMortarHeight; + + if (fract (tt * 0.5) > 0.5) + ss += 0.5; + + ss = fract (ss); + tt = fract (tt); + + w = step (mwf, ss) - step (1.0 - mwf, ss); + h = step (mhf, tt) - step (1.0 - mhf, tt); + + ct = clamp(mix (mortarColor, brickColor, w * h) * lightIntensity, 0.0, 1.0); + + gl_FragColor = vec4 (ct, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/delete_object/successfulcompile_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/delete_object/successfulcompile_vert.vert new file mode 100644 index 00000000000..3b42e9d1595 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/delete_object/successfulcompile_vert.vert @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform float Scale; + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex) * Scale; + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + lightIntensity = dot(normalize(LightPosition - vec3(pos)), tnorm) * 1.5; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/detach_shader/successfulcompile_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/detach_shader/successfulcompile_frag.frag new file mode 100644 index 00000000000..9069489545a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/detach_shader/successfulcompile_frag.frag @@ -0,0 +1,63 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float mortarThickness; +uniform vec3 brickColor; +uniform vec3 mortarColor; + +uniform float brickMortarWidth; +uniform float brickMortarHeight; +uniform float mwf; +uniform float mhf; + +varying vec3 Position; +varying float lightIntensity; + +void main (void) +{ + vec3 ct; + float ss, tt, w, h; + + vec3 pos = Position; + + ss = pos.x / brickMortarWidth; + tt = pos.z / brickMortarHeight; + + if (fract (tt * 0.5) > 0.5) + ss += 0.5; + + ss = fract (ss); + tt = fract (tt); + + w = step (mwf, ss) - step (1.0 - mwf, ss); + h = step (mhf, tt) - step (1.0 - mhf, tt); + + ct = clamp(mix (mortarColor, brickColor, w * h) * lightIntensity, 0.0, 1.0); + + gl_FragColor = vec4 (ct, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/detach_shader/successfulcompile_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/detach_shader/successfulcompile_vert.vert new file mode 100644 index 00000000000..3b42e9d1595 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/detach_shader/successfulcompile_vert.vert @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform float Scale; + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex) * Scale; + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + lightIntensity = dot(normalize(LightPosition - vec3(pos)), tnorm) * 1.5; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/framebuffer_objects/fboShader0.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/framebuffer_objects/fboShader0.frag new file mode 100644 index 00000000000..92e465d7e3b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/framebuffer_objects/fboShader0.frag @@ -0,0 +1,46 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +varying vec4 color; +varying vec4 texCoord[1]; + +uniform sampler2D gtf_Texture0; +uniform int gtf_UseTexture; + +void main (void) +{ + if ( gtf_UseTexture == 1 ) + { + gl_FragColor = texture2D(gtf_Texture0, texCoord[0].xy); + } + else + { + gl_FragColor = color; + } +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/framebuffer_objects/fboShader0.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/framebuffer_objects/fboShader0.vert new file mode 100644 index 00000000000..97b4bcf81bd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/framebuffer_objects/fboShader0.vert @@ -0,0 +1,40 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Color; +attribute vec4 gtf_Vertex; +attribute vec4 gtf_MultiTexCoord0; + +varying vec4 texCoord[1]; +varying vec4 color; + +uniform mat4 gtf_ModelViewProjectionMatrix; + +void main (void) +{ + color = gtf_Color; + texCoord[0] = gtf_MultiTexCoord0; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick.frag new file mode 100644 index 00000000000..9069489545a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick.frag @@ -0,0 +1,63 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float mortarThickness; +uniform vec3 brickColor; +uniform vec3 mortarColor; + +uniform float brickMortarWidth; +uniform float brickMortarHeight; +uniform float mwf; +uniform float mhf; + +varying vec3 Position; +varying float lightIntensity; + +void main (void) +{ + vec3 ct; + float ss, tt, w, h; + + vec3 pos = Position; + + ss = pos.x / brickMortarWidth; + tt = pos.z / brickMortarHeight; + + if (fract (tt * 0.5) > 0.5) + ss += 0.5; + + ss = fract (ss); + tt = fract (tt); + + w = step (mwf, ss) - step (1.0 - mwf, ss); + h = step (mhf, tt) - step (1.0 - mhf, tt); + + ct = clamp(mix (mortarColor, brickColor, w * h) * lightIntensity, 0.0, 1.0); + + gl_FragColor = vec4 (ct, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_mat2.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_mat2.vert new file mode 100644 index 00000000000..2f30ce65417 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_mat2.vert @@ -0,0 +1,62 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec3 gtf_Normal; +attribute mat2 myAttrib2m; + +uniform mat3 gtf_NormalMatrix; +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; + +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; + +const float specularContribution = 0.7; +const float diffuseContribution = (1.0 - specularContribution); + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex); + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + vec3 lightVec = normalize(LightPosition - vec3(pos)); + vec3 reflectVec = reflect(lightVec, tnorm); + vec3 viewVec = normalize(vec3(pos)); + + float f = myAttrib2m[0][0]; + + float spec = clamp(dot(reflectVec, viewVec), f, 1.0); + //float spec = clamp(dot(reflectVec, viewVec), myAttribute1, myAttribute2); + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + + lightIntensity = diffuseContribution * dot(lightVec, tnorm) + + specularContribution * spec; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_mat3.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_mat3.vert new file mode 100644 index 00000000000..6653570d694 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_mat3.vert @@ -0,0 +1,62 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec3 gtf_Normal; +attribute mat3 myAttrib3m; + +uniform mat3 gtf_NormalMatrix; +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; + +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; + +const float specularContribution = 0.7; +const float diffuseContribution = (1.0 - specularContribution); + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex); + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + vec3 lightVec = normalize(LightPosition - vec3(pos)); + vec3 reflectVec = reflect(lightVec, tnorm); + vec3 viewVec = normalize(vec3(pos)); + + float f = myAttrib3m[0][0]; + + float spec = clamp(dot(reflectVec, viewVec), f, 1.0); + //float spec = clamp(dot(reflectVec, viewVec), myAttribute1, myAttribute2); + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + + lightIntensity = diffuseContribution * dot(lightVec, tnorm) + + specularContribution * spec; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_mat4.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_mat4.vert new file mode 100644 index 00000000000..41cbc95b24f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_mat4.vert @@ -0,0 +1,62 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec3 gtf_Normal; +attribute mat4 myAttrib4m; + +uniform mat3 gtf_NormalMatrix; +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; + +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; + +const float specularContribution = 0.7; +const float diffuseContribution = (1.0 - specularContribution); + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex); + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + vec3 lightVec = normalize(LightPosition - vec3(pos)); + vec3 reflectVec = reflect(lightVec, tnorm); + vec3 viewVec = normalize(vec3(pos)); + + float f = myAttrib4m[0][0]; + + float spec = clamp(dot(reflectVec, viewVec), f, 1.0); + //float spec = clamp(dot(reflectVec, viewVec), myAttribute1, myAttribute2); + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + + lightIntensity = diffuseContribution * dot(lightVec, tnorm) + + specularContribution * spec; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_vec.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_vec.vert new file mode 100644 index 00000000000..cbb971545b2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_attribute/brick_vec.vert @@ -0,0 +1,65 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec3 gtf_Normal; +attribute float myAttrib1f; +attribute vec2 myAttrib2f; +attribute vec3 myAttrib3f; +attribute vec4 myAttrib4f; + +uniform mat3 gtf_NormalMatrix; +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; + +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; + +const float specularContribution = 0.7; +const float diffuseContribution = (1.0 - specularContribution); + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex); + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + vec3 lightVec = normalize(LightPosition - vec3(pos)); + vec3 reflectVec = reflect(lightVec, tnorm); + vec3 viewVec = normalize(vec3(pos)); + + float f = myAttrib1f + myAttrib2f[0] + myAttrib3f[0] + myAttrib4f[0]; + + float spec = clamp(dot(reflectVec, viewVec), f, 1.0); + //float spec = clamp(dot(reflectVec, viewVec), myAttribute1, myAttribute2); + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + + lightIntensity = diffuseContribution * dot(lightVec, tnorm) + + specularContribution * spec; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_uniform/brick.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_uniform/brick.frag new file mode 100644 index 00000000000..41c8d30a202 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_uniform/brick.frag @@ -0,0 +1,62 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif + +uniform vec3 brickColor; +uniform vec3 mortarColor; +uniform float brickMortarWidth; +uniform float brickMortarHeight; +uniform float mwf; +uniform float mhf; + +varying vec3 Position; +varying float lightIntensity; + +void main (void) +{ + vec3 ct; + float ss, tt, w, h; + + vec3 pos = Position; + + ss = pos.x / brickMortarWidth; + tt = pos.z / brickMortarHeight; + + if (fract (tt * 0.5) > 0.5) + ss += 0.5; + + ss = fract (ss); + tt = fract (tt); + + w = step (mwf, ss) - step (1.0 - mwf, ss); + h = step (mhf, tt) - step (1.0 - mhf, tt); + + ct = clamp(mix (mortarColor, brickColor, w * h) * lightIntensity, 0.0, 1.0); + + gl_FragColor = vec4 (ct, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_uniform/brick.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_uniform/brick.vert new file mode 100644 index 00000000000..cc24e815f70 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_active_uniform/brick.vert @@ -0,0 +1,88 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +varying float lightIntensity; +varying vec3 Position; + + // Used in the vertex shader. +uniform mat3 gtf_NormalMatrix; //< 1 +uniform mat4 gtf_ModelViewMatrix; //< 2 +uniform mat4 gtf_ModelViewProjectionMatrix; //< 3 +uniform float myAttrib1f; //< 4 +uniform vec2 myAttrib2f; //< 5 +uniform vec3 LightPosition; //< 6 +uniform vec4 myAttrib4f; //< 7 +uniform int myAttrib1i; //< 8 +uniform ivec2 myAttrib2i; //< 9 +uniform ivec3 myAttrib3i; //< 10 +uniform ivec4 myAttrib4i; //< 11 +uniform bool myAttrib1b; //< 12 +uniform bvec2 myAttrib2b; //< 13 +uniform bvec3 myAttrib3b; //< 14 +uniform bvec4 myAttrib4b; //< 15 +uniform mat2 myAttrib2m; //< 16 +uniform mat3 myAttrib3m; //< 17 +uniform mat4 myAttrib4m; //< 18 +uniform float myUniformfv[5]; //< 19 + // Used in the fragment shader. +uniform vec3 brickColor; //< 20 +uniform vec3 mortarColor; //< 21 +uniform float brickMortarWidth; //< 22 +uniform float brickMortarHeight; //< 23 +uniform float mwf; //< 24 +uniform float mhf; //< 25 + + +const float specularContribution = 0.7; +const float diffuseContribution = (1.0 - specularContribution); + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex); + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + vec3 lightVec = normalize(LightPosition - vec3(pos)); + vec3 reflectVec = reflect(lightVec, tnorm); + vec3 viewVec = normalize(vec3(pos)); + + float f = myAttrib1f + myAttrib2f[0] + myAttrib4f[0] + + float(myAttrib1i) + float(myAttrib2i[0]) + float(myAttrib3i[0]) + float(myAttrib4i[0]) + + float(myAttrib1b) + float(myAttrib2b[0]) + float(myAttrib3b[0]) + float(myAttrib4b[0]) + + myAttrib2m[0][0] + myAttrib3m[0][0] + myAttrib4m[0][0] + + myUniformfv[0] + myUniformfv[1] + myUniformfv[2] + myUniformfv[3] + myUniformfv[4]; + + //float spec = clamp(dot(reflectVec, viewVec), 0.0, 1.0); + float spec = clamp(dot(reflectVec, viewVec), f, 1.0); + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + + lightIntensity = diffuseContribution * dot(lightVec, tnorm) + + specularContribution * spec; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_attribute_location/brick.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_attribute_location/brick.frag new file mode 100644 index 00000000000..2bec40d3cf1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_attribute_location/brick.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec3 colors; + +void main (void) +{ + gl_FragColor = vec4 (colors, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_attribute_location/brick.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_attribute_location/brick.vert new file mode 100644 index 00000000000..2a94ead4fbc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_attribute_location/brick.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute float myAttribute1; +attribute float myAttribute2; +attribute float myAttribute3; + +varying vec3 colors; + +void main(void) +{ + colors = vec3(myAttribute1, 0, 0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_handle/successfulcompile_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_handle/successfulcompile_frag.frag new file mode 100644 index 00000000000..9069489545a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_handle/successfulcompile_frag.frag @@ -0,0 +1,63 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float mortarThickness; +uniform vec3 brickColor; +uniform vec3 mortarColor; + +uniform float brickMortarWidth; +uniform float brickMortarHeight; +uniform float mwf; +uniform float mhf; + +varying vec3 Position; +varying float lightIntensity; + +void main (void) +{ + vec3 ct; + float ss, tt, w, h; + + vec3 pos = Position; + + ss = pos.x / brickMortarWidth; + tt = pos.z / brickMortarHeight; + + if (fract (tt * 0.5) > 0.5) + ss += 0.5; + + ss = fract (ss); + tt = fract (tt); + + w = step (mwf, ss) - step (1.0 - mwf, ss); + h = step (mhf, tt) - step (1.0 - mhf, tt); + + ct = clamp(mix (mortarColor, brickColor, w * h) * lightIntensity, 0.0, 1.0); + + gl_FragColor = vec4 (ct, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_handle/successfulcompile_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_handle/successfulcompile_vert.vert new file mode 100644 index 00000000000..3b42e9d1595 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_handle/successfulcompile_vert.vert @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform float Scale; + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex) * Scale; + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + lightIntensity = dot(normalize(LightPosition - vec3(pos)), tnorm) * 1.5; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_uniform_location/brick.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_uniform_location/brick.frag new file mode 100644 index 00000000000..9069489545a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_uniform_location/brick.frag @@ -0,0 +1,63 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float mortarThickness; +uniform vec3 brickColor; +uniform vec3 mortarColor; + +uniform float brickMortarWidth; +uniform float brickMortarHeight; +uniform float mwf; +uniform float mhf; + +varying vec3 Position; +varying float lightIntensity; + +void main (void) +{ + vec3 ct; + float ss, tt, w, h; + + vec3 pos = Position; + + ss = pos.x / brickMortarWidth; + tt = pos.z / brickMortarHeight; + + if (fract (tt * 0.5) > 0.5) + ss += 0.5; + + ss = fract (ss); + tt = fract (tt); + + w = step (mwf, ss) - step (1.0 - mwf, ss); + h = step (mhf, tt) - step (1.0 - mhf, tt); + + ct = clamp(mix (mortarColor, brickColor, w * h) * lightIntensity, 0.0, 1.0); + + gl_FragColor = vec4 (ct, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_uniform_location/brick.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_uniform_location/brick.vert new file mode 100644 index 00000000000..24227d48f74 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/get_uniform_location/brick.vert @@ -0,0 +1,60 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform vec3 NotActiveOne; +attribute float myAttribute1; +attribute float myAttribute2; + +const float specularContribution = 0.7; +const float diffuseContribution = (1.0 - specularContribution); + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex); + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + vec3 lightVec = normalize(LightPosition - vec3(pos)); + vec3 reflectVec = reflect(lightVec, tnorm); + vec3 viewVec = normalize(vec3(pos)); + + //float spec = clamp(dot(reflectVec, viewVec), 0.0, 1.0); + float spec = clamp(dot(reflectVec, viewVec), myAttribute1, myAttribute2); + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + + lightIntensity = diffuseContribution * dot(lightVec, tnorm) + + specularContribution * spec; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramInfoLog_2.0/simple.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramInfoLog_2.0/simple.frag new file mode 100644 index 00000000000..99c78e20739 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramInfoLog_2.0/simple.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec3 tc; + +void main (void) +{ + vec3 foo = tc; + gl_FragColor = vec4 (foo, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramInfoLog_2.0/simple.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramInfoLog_2.0/simple.vert new file mode 100644 index 00000000000..cc4028a5f7d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramInfoLog_2.0/simple.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +uniform vec3 triangleColor; +varying vec3 tc; + +void main(void) +{ + tc = triangleColor; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramiv_2.0/brick.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramiv_2.0/brick.frag new file mode 100644 index 00000000000..9069489545a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramiv_2.0/brick.frag @@ -0,0 +1,63 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float mortarThickness; +uniform vec3 brickColor; +uniform vec3 mortarColor; + +uniform float brickMortarWidth; +uniform float brickMortarHeight; +uniform float mwf; +uniform float mhf; + +varying vec3 Position; +varying float lightIntensity; + +void main (void) +{ + vec3 ct; + float ss, tt, w, h; + + vec3 pos = Position; + + ss = pos.x / brickMortarWidth; + tt = pos.z / brickMortarHeight; + + if (fract (tt * 0.5) > 0.5) + ss += 0.5; + + ss = fract (ss); + tt = fract (tt); + + w = step (mwf, ss) - step (1.0 - mwf, ss); + h = step (mhf, tt) - step (1.0 - mhf, tt); + + ct = clamp(mix (mortarColor, brickColor, w * h) * lightIntensity, 0.0, 1.0); + + gl_FragColor = vec4 (ct, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramiv_2.0/brick.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramiv_2.0/brick.vert new file mode 100644 index 00000000000..24227d48f74 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetProgramiv_2.0/brick.vert @@ -0,0 +1,60 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform vec3 NotActiveOne; +attribute float myAttribute1; +attribute float myAttribute2; + +const float specularContribution = 0.7; +const float diffuseContribution = (1.0 - specularContribution); + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex); + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + vec3 lightVec = normalize(LightPosition - vec3(pos)); + vec3 reflectVec = reflect(lightVec, tnorm); + vec3 viewVec = normalize(vec3(pos)); + + //float spec = clamp(dot(reflectVec, viewVec), 0.0, 1.0); + float spec = clamp(dot(reflectVec, viewVec), myAttribute1, myAttribute2); + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + + lightIntensity = diffuseContribution * dot(lightVec, tnorm) + + specularContribution * spec; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetShaderInfoLog_2.0/simple.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetShaderInfoLog_2.0/simple.frag new file mode 100644 index 00000000000..99c78e20739 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetShaderInfoLog_2.0/simple.frag @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec3 tc; + +void main (void) +{ + vec3 foo = tc; + gl_FragColor = vec4 (foo, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetShaderInfoLog_2.0/simple.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetShaderInfoLog_2.0/simple.vert new file mode 100644 index 00000000000..cc4028a5f7d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetShaderInfoLog_2.0/simple.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +uniform vec3 triangleColor; +varying vec3 tc; + +void main(void) +{ + tc = triangleColor; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/bvec_tests.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/bvec_tests.frag new file mode 100644 index 00000000000..5ca53807ea2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/bvec_tests.frag @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform bool funi1; +uniform bvec2 funi2; +uniform bvec3 funi3; +uniform bvec4 funi4; +varying vec4 color; + +void main (void) +{ + vec4 temp = vec4(0.0, 0.0, 0.0, 0.0); + if(funi1 || funi2[0] && funi2[1] && funi3[0] && funi3[1] && funi3[2] || funi4[0] && funi4[1] && funi4[2] && funi4[3]) + temp = vec4(1.0, 0.0, 0.5, 1.0); + gl_FragColor = temp + color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/bvec_tests.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/bvec_tests.vert new file mode 100644 index 00000000000..1d9153361e3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/bvec_tests.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +uniform bool vuni1; +uniform bvec2 vuni2; +uniform bvec3 vuni3; +uniform bvec4 vuni4; +varying vec4 color; + +void main (void) +{ + if(vuni1 || vuni2[0] && vuni2[1] && vuni3[0] && vuni3[1] && vuni3[2] || vuni4[0] && vuni4[1] && vuni4[2] && vuni4[3]) + color = vec4(1.0, 0.0, 0.5, 1.0); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/ivec_tests.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/ivec_tests.frag new file mode 100644 index 00000000000..6d7e37eba35 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/ivec_tests.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform int funi1; +uniform ivec2 funi2; +uniform ivec3 funi3; +uniform ivec4 funi4; +varying vec4 color; + +void main (void) +{ + vec4 temp = vec4(float(funi1), float(funi2[0] + funi2[1]), float(funi3[0] + funi3[1] + funi3[2]), float(funi4[0] + funi4[1] + funi4[2] + funi4[3])); + gl_FragColor = temp + color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/ivec_tests.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/ivec_tests.vert new file mode 100644 index 00000000000..d854d0f4b4b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/ivec_tests.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +uniform int vuni1; +uniform ivec2 vuni2; +uniform ivec3 vuni3; +uniform ivec4 vuni4; +varying vec4 color; + +void main (void) +{ + color = vec4(float(vuni1), float(vuni2[0] + vuni2[1]), float(vuni3[0] + vuni3[1] + vuni3[2]), float(vuni4[0] + vuni4[1] + vuni4[2] + vuni4[3]) ); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/mat_tests.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/mat_tests.frag new file mode 100644 index 00000000000..ea3f8599515 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/mat_tests.frag @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform mat2 funi2; +uniform mat3 funi3; +uniform mat4 funi4; +varying vec4 color; + +void main (void) +{ + vec4 temp = vec4( funi2[0][0] + funi2[0][1] + funi2[1][0] + funi2[1][1], + + funi3[0][0] + funi3[0][1] + funi3[0][2] + funi3[1][0] + funi3[1][1] + funi3[1][2] + funi3[2][0] + funi3[2][1] + funi3[2][2], + + funi4[0][0] + funi4[0][1] + funi4[0][2] + funi4[0][3] + funi4[1][0] + funi4[1][1] + funi4[1][2] + funi4[1][3] + funi4[2][0] + funi4[2][1] + funi4[2][2] + funi4[2][3] + funi4[3][0] + funi4[3][1] + funi4[3][2] + funi4[3][3], 1.0 ); + gl_FragColor = temp + color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/mat_tests.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/mat_tests.vert new file mode 100644 index 00000000000..f3f6e0dcc75 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/mat_tests.vert @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +uniform mat2 vuni2; +uniform mat3 vuni3; +uniform mat4 vuni4; +varying vec4 color; + +void main (void) +{ + color = vec4( vuni2[0][0] + vuni2[0][1] + vuni2[1][0] + vuni2[1][1], + + vuni3[0][0] + vuni3[0][1] + vuni3[0][2] + vuni3[1][0] + vuni3[1][1] + vuni3[1][2] + vuni3[2][0] + vuni3[2][1] + vuni3[2][2], + + vuni4[0][0] + vuni4[0][1] + vuni4[0][2] + vuni4[0][3] + vuni4[1][0] + vuni4[1][1] + vuni4[1][2] + vuni4[1][3] + vuni4[2][0] + vuni4[2][1] + vuni4[2][2] + vuni4[2][3] + vuni4[3][0] + vuni4[3][1] + vuni4[3][2] + vuni4[3][3], 1.0 ); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/vec_tests.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/vec_tests.frag new file mode 100644 index 00000000000..e3f2c84db2c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/vec_tests.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float funi1; +uniform vec2 funi2; +uniform vec3 funi3; +uniform vec4 funi4; +varying vec4 color; + +void main (void) +{ + vec4 temp = vec4(funi1, funi2[0] + funi2[1], funi3[0] + funi3[1] + funi3[2], funi4[0] + funi4[1] + funi4[2] + funi4[3]); + gl_FragColor = temp + color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/vec_tests.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/vec_tests.vert new file mode 100644 index 00000000000..86138149d75 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetUniform/vec_tests.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +uniform float vuni1; +uniform vec2 vuni2; +uniform vec3 vuni3; +uniform vec4 vuni4; +varying vec4 color; + +void main (void) +{ + color = vec4(vuni1, vuni2[0] + vuni2[1], vuni3[0] + vuni3[1] + vuni3[2], vuni4[0] + vuni4[1] + vuni4[2] + vuni4[3]); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetVertexAttrib/mat_tests.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetVertexAttrib/mat_tests.vert new file mode 100644 index 00000000000..e9b83a49094 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetVertexAttrib/mat_tests.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute mat3 att3; +attribute mat4 att4; +varying vec4 color; + +void main (void) +{ + color = vec4( 1.0, + + att3[0][0] + att3[0][1] + att3[0][2] + att3[1][0] + att3[1][1] + att3[1][2] + att3[2][0] + att3[2][1] + att3[2][2], + + att4[0][0] + att4[0][1] + att4[0][2] + att4[0][3] + att4[1][0] + att4[1][1] + att4[1][2] + att4[1][3] + att4[2][0] + att4[2][1] + att4[2][2] + att4[2][3] + att4[3][0] + att4[3][1] + att4[3][2] + att4[3][3], 1.0 ); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetVertexAttrib/mat_tests2.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetVertexAttrib/mat_tests2.vert new file mode 100644 index 00000000000..2d0fbeea7d1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetVertexAttrib/mat_tests2.vert @@ -0,0 +1,41 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute mat2 att2; +attribute mat3 att3; +varying vec4 color; + +void main (void) +{ + color = vec4( att2[0][0] + att2[0][1] + att2[1][0] + att2[1][1], + + att3[0][0] + att3[0][1] + att3[0][2] + att3[1][0] + att3[1][1] + att3[1][2] + att3[2][0] + att3[2][1] + att3[2][2], + + 1.0, 1.0 ); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetVertexAttrib/vec_tests.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetVertexAttrib/vec_tests.vert new file mode 100644 index 00000000000..fc870e7393f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glGetVertexAttrib/vec_tests.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute float att1; +attribute vec2 att2; +attribute vec3 att3; +attribute vec4 att4; +varying vec4 color; + +void main (void) +{ + color = vec4(att1, att2.x + att2.y, att3.x + att3.y + att3.z, att4.x + att4.y + att4.z + att4.w); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1b_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1b_frag.frag new file mode 100644 index 00000000000..a8d9f3fe430 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1b_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform bool color; + +void main (void) +{ + gl_FragColor = vec4 (float(color), 0.0, 0.0, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1b_vert.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1b_vert.frag new file mode 100644 index 00000000000..ba62f2f2d93 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1b_vert.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying float col; + +void main (void) +{ + gl_FragColor = vec4 (col, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1b_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1b_vert.vert new file mode 100644 index 00000000000..a28e76a77ad --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1b_vert.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute vec4 gtf_Color; +uniform bool color; +varying float col; +void main (void) +{ + col = float(color); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1f_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1f_frag.frag new file mode 100644 index 00000000000..9156be3c0ae --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1f_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float color; + +void main (void) +{ + gl_FragColor = vec4 (color, 0.0, 0.0, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1f_vert.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1f_vert.frag new file mode 100644 index 00000000000..ac8f2b4ccaa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1f_vert.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying float col; +void main (void) +{ + gl_FragColor = vec4 (col, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1f_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1f_vert.vert new file mode 100644 index 00000000000..06699439726 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1f_vert.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute vec4 gtf_Color; +uniform float color; +varying float col; +void main (void) +{ + col = color; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1i_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1i_frag.frag new file mode 100644 index 00000000000..35d70bce9ce --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1i_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform int color; + +void main (void) +{ + gl_FragColor = vec4 (color, 0.0, 0.0, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1i_vert.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1i_vert.frag new file mode 100644 index 00000000000..ac8f2b4ccaa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1i_vert.frag @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying float col; +void main (void) +{ + gl_FragColor = vec4 (col, 0.0, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1i_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1i_vert.vert new file mode 100644 index 00000000000..7f22a96747d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/1i_vert.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute vec4 gtf_Color; +uniform int color; +varying float col; +void main (void) +{ + col = float(color); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/21f_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/21f_frag.frag new file mode 100644 index 00000000000..c60e5e07d60 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/21f_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float color[2]; + +void main (void) +{ + gl_FragColor = vec4 (color[0], color[1], 0.0, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/21i_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/21i_frag.frag new file mode 100644 index 00000000000..16960a59bab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/21i_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform int color[2]; + +void main (void) +{ + float r = float(color[0]); + float g = float(color[1]); + gl_FragColor = vec4 (r/256.0, g/256.0, 0.0, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/22f_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/22f_frag.frag new file mode 100644 index 00000000000..dd823e36172 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/22f_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform vec2 color[2]; + +void main (void) +{ + gl_FragColor = vec4 (color[0][0], color[0][1], color[1][0], color[1][1]); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/22i_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/22i_frag.frag new file mode 100644 index 00000000000..67577430b14 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/22i_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform ivec2 color[2]; + +void main (void) +{ + float r = float(color[0][0]); + float g = float(color[0][1]); + float b = float(color[1][0]); + float a = float(color[1][1]); + + gl_FragColor = vec4 (r/256.0, g/256.0, b/256.0, a/256.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/23f_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/23f_frag.frag new file mode 100644 index 00000000000..8d7a6c3ba68 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/23f_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform vec3 color[2]; + +void main (void) +{ + gl_FragColor = vec4 (color[0][0] + color[0][1] + color[0][2], + color[1][0] + color[1][1] + color[1][2], + 0.0, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/23i_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/23i_frag.frag new file mode 100644 index 00000000000..c4574b87078 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/23i_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform ivec3 color[2]; + +void main (void) +{ + float r = float(color[0][0] + color[0][1] + color[0][2]); + float g = float(color[1][0] + color[1][1] + color[1][2]); + + gl_FragColor = vec4(r/256.0, g/256.0, 0.0, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/24f_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/24f_frag.frag new file mode 100644 index 00000000000..5363d5e4970 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/24f_frag.frag @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform vec4 color[2]; + +void main (void) +{ + gl_FragColor = vec4 (color[0][0] + color[0][1] + color[0][2] + color[0][3], + color[1][0] + color[1][1] + color[1][2] + color[1][3], + 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/24i_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/24i_frag.frag new file mode 100644 index 00000000000..8427354158f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/24i_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform ivec4 color[2]; + +void main (void) +{ + float r = float(color[0][0] + color[0][1] + color[0][2] + color[0][3]); + float g = float(color[1][0] + color[1][1] + color[1][2] + color[1][3]); + + gl_FragColor = vec4 (r/256.0, g/256.0, 0.0, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2b_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2b_frag.frag new file mode 100644 index 00000000000..83e9039ca81 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2b_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform bvec2 color; + +void main (void) +{ + gl_FragColor = vec4 (vec2(color), 0.0, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2b_vert.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2b_vert.frag new file mode 100644 index 00000000000..7ce39a19131 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2b_vert.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec2 col; + +void main (void) +{ + gl_FragColor = vec4 (col[0], col[1], 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2b_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2b_vert.vert new file mode 100644 index 00000000000..b4096752887 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2b_vert.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute vec4 gtf_Color; +uniform bvec2 color; +varying vec2 col; +void main (void) +{ + col = vec2(color); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2f_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2f_frag.frag new file mode 100644 index 00000000000..655e0d31d64 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2f_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform vec2 color; + +void main (void) +{ + gl_FragColor = vec4 (color, 0.0, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2f_vert.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2f_vert.frag new file mode 100644 index 00000000000..14a4b29599f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2f_vert.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec2 col; + +void main (void) +{ + gl_FragColor = vec4 (col, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2f_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2f_vert.vert new file mode 100644 index 00000000000..41ecaf70ebf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2f_vert.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute vec4 gtf_Color; +uniform vec2 color; +varying vec2 col; +void main (void) +{ + col = color; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2i_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2i_frag.frag new file mode 100644 index 00000000000..edb986a0b4f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2i_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform ivec2 color; + +void main (void) +{ + gl_FragColor = vec4 (color[0], color[1], 0.0, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2i_vert.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2i_vert.frag new file mode 100644 index 00000000000..14a4b29599f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2i_vert.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec2 col; + +void main (void) +{ + gl_FragColor = vec4 (col, 0.0, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2i_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2i_vert.vert new file mode 100644 index 00000000000..8cd247668f3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2i_vert.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute vec4 gtf_Color; +uniform ivec2 color; +varying vec2 col; +void main (void) +{ + col = vec2(color); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2m_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2m_frag.frag new file mode 100644 index 00000000000..98e98ac4a5e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/2m_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform mat2 color; + +void main (void) +{ + gl_FragColor = vec4 (color[0][0] + color[0][1], color[1][0] + color[1][1], 0.0, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3b_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3b_frag.frag new file mode 100644 index 00000000000..80f1ef9f871 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3b_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform bvec3 color; + +void main (void) +{ + gl_FragColor = vec4 (vec3(color), 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3b_vert.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3b_vert.frag new file mode 100644 index 00000000000..be8e7b195fe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3b_vert.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec3 col; + +void main (void) +{ + gl_FragColor = vec4 (col[0], col[1], col[2], 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3b_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3b_vert.vert new file mode 100644 index 00000000000..d74e4a37f55 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3b_vert.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute vec4 gtf_Color; +uniform bvec3 color; +varying vec3 col; +void main (void) +{ + col = vec3(color); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3f_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3f_frag.frag new file mode 100644 index 00000000000..00e8aa71d2e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3f_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform vec3 color; + +void main (void) +{ + gl_FragColor = vec4 (color, 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3f_vert.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3f_vert.frag new file mode 100644 index 00000000000..603ba0d6537 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3f_vert.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec3 col; + +void main (void) +{ + gl_FragColor = vec4 (col, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3f_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3f_vert.vert new file mode 100644 index 00000000000..d35becff12f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3f_vert.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute vec4 gtf_Color; +uniform vec3 color; +varying vec3 col; +void main (void) +{ + col = color; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3i_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3i_frag.frag new file mode 100644 index 00000000000..a2f0a3cddbe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3i_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform ivec3 color; + +void main (void) +{ + gl_FragColor = vec4 (color[0], color[1], color[2], 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3i_vert.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3i_vert.frag new file mode 100644 index 00000000000..603ba0d6537 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3i_vert.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec3 col; + +void main (void) +{ + gl_FragColor = vec4 (col, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3i_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3i_vert.vert new file mode 100644 index 00000000000..d27c38f5886 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3i_vert.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute vec4 gtf_Color; +uniform ivec3 color; +varying vec3 col; +void main (void) +{ + col = vec3(color); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3m_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3m_frag.frag new file mode 100644 index 00000000000..9de57288406 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/3m_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform mat3 color; + +void main (void) +{ + gl_FragColor = vec4 (color[0][0] + color[0][1] + color[0][2], + color[1][0] + color[1][1] + color[1][2], + color[2][0] + color[2][1] + color[2][2], + 1.0); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_firstthree_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_firstthree_frag.frag new file mode 100644 index 00000000000..1700c2b7635 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_firstthree_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform bvec4 color; + +void main (void) +{ + gl_FragColor = vec4 (float(color[0]), float(color[1]), float(color[2]), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_firstthree_vert.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_firstthree_vert.frag new file mode 100644 index 00000000000..ee81a869b36 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_firstthree_vert.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 col; + +void main (void) +{ + gl_FragColor = vec4 (col[0], col[1], col[2], 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_lastthree_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_lastthree_frag.frag new file mode 100644 index 00000000000..024f3ca5443 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_lastthree_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform bvec4 color; + +void main (void) +{ + gl_FragColor = vec4 (float(color[1]), float(color[2]), float(color[3]), 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_lastthree_vert.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_lastthree_vert.frag new file mode 100644 index 00000000000..408d6035431 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_lastthree_vert.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 col; + +void main (void) +{ + gl_FragColor = vec4 (col[1], col[2], col[3], 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_vert.vert new file mode 100644 index 00000000000..a8ce5e1d7ea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4b_vert.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute vec4 gtf_Color; +uniform bvec4 color; +varying vec4 col; +void main (void) +{ + col = vec4(color); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4f_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4f_frag.frag new file mode 100644 index 00000000000..bda6bc1394b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4f_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform vec4 color; + +void main (void) +{ + gl_FragColor = vec4 (color[0], color[1], color[2], color[3]); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4f_vert.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4f_vert.frag new file mode 100644 index 00000000000..4f771b09f90 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4f_vert.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 col; + +void main (void) +{ + gl_FragColor = vec4 (col[0], col[1], col[2], col[3]); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4f_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4f_vert.vert new file mode 100644 index 00000000000..53129488413 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4f_vert.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute vec4 gtf_Color; +uniform vec4 color; +varying vec4 col; +void main (void) +{ + col = color; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4i_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4i_frag.frag new file mode 100644 index 00000000000..bd00e3c3309 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4i_frag.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform ivec4 color; + +void main (void) +{ + gl_FragColor = vec4 (color[0], color[1], color[2], color[3]); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4i_vert.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4i_vert.frag new file mode 100644 index 00000000000..4f771b09f90 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4i_vert.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 col; + +void main (void) +{ + gl_FragColor = vec4 (col[0], col[1], col[2], col[3]); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4i_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4i_vert.vert new file mode 100644 index 00000000000..ea97a42551b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4i_vert.vert @@ -0,0 +1,35 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute vec4 gtf_Color; +uniform ivec4 color; +varying vec4 col; +void main (void) +{ + col = vec4(color); + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4m_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4m_frag.frag new file mode 100644 index 00000000000..030ef608f1e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/4m_frag.frag @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform mat4 color; + +void main (void) +{ + gl_FragColor = vec4 (color[0][0] + color[0][1] + color[0][2] + color[0][3], + color[1][0] + color[1][1] + color[1][2] + color[1][3], + color[2][0] + color[2][1] + color[2][2] + color[2][3], + color[3][0] + color[3][1] + color[3][2] + color[3][3]); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/default.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/default.vert new file mode 100644 index 00000000000..45426238de0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/default.vert @@ -0,0 +1,33 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; + +void main (void) +{ + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; + gl_PointSize = 1.0; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2VSU.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2VSU.frag new file mode 100644 index 00000000000..fc4b633d382 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2VSU.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = color; // Apply it on a per vertex level +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2VSU.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2VSU.vert new file mode 100644 index 00000000000..c5908900ae8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2VSU.vert @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +uniform mat4 transforms; +uniform mat4 anotherMatrix; + +varying vec4 color; + +void main(void) +{ + color = gtf_Color; // color is per vertex and matches glColor already used by Vertex + + gl_Position = gtf_ModelViewProjectionMatrix* transforms * anotherMatrix * gtf_Vertex; +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2arrayVSU.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2arrayVSU.frag new file mode 100644 index 00000000000..fc4b633d382 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2arrayVSU.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = color; // Apply it on a per vertex level +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2arrayVSU.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2arrayVSU.vert new file mode 100644 index 00000000000..b28a0a52ec7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrix2arrayVSU.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +uniform mat4 transforms[2]; + +varying vec4 color; + +void main(void) +{ + color = gtf_Color; // color is per vertex and matches glColor already used by Vertex + + gl_Position = gtf_ModelViewProjectionMatrix* transforms[0] * transforms[1] * gtf_Vertex; +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrixVSU.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrixVSU.frag new file mode 100644 index 00000000000..fc4b633d382 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrixVSU.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 color; + +void main (void) +{ + gl_FragColor = color; // Apply it on a per vertex level +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrixVSU.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrixVSU.vert new file mode 100644 index 00000000000..1e4264cbcce --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/glUniform/matrixVSU.vert @@ -0,0 +1,38 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +uniform mat4 transforms; +varying vec4 color; + +void main(void) +{ + color = gtf_Color; // color is per vertex and matches glColor used + + gl_Position = gtf_ModelViewProjectionMatrix* transforms * gtf_Vertex; + +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/successfulcompile_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/successfulcompile_frag.frag new file mode 100644 index 00000000000..9069489545a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/successfulcompile_frag.frag @@ -0,0 +1,63 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float mortarThickness; +uniform vec3 brickColor; +uniform vec3 mortarColor; + +uniform float brickMortarWidth; +uniform float brickMortarHeight; +uniform float mwf; +uniform float mhf; + +varying vec3 Position; +varying float lightIntensity; + +void main (void) +{ + vec3 ct; + float ss, tt, w, h; + + vec3 pos = Position; + + ss = pos.x / brickMortarWidth; + tt = pos.z / brickMortarHeight; + + if (fract (tt * 0.5) > 0.5) + ss += 0.5; + + ss = fract (ss); + tt = fract (tt); + + w = step (mwf, ss) - step (1.0 - mwf, ss); + h = step (mhf, tt) - step (1.0 - mhf, tt); + + ct = clamp(mix (mortarColor, brickColor, w * h) * lightIntensity, 0.0, 1.0); + + gl_FragColor = vec4 (ct, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/successfulcompile_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/successfulcompile_vert.vert new file mode 100644 index 00000000000..3b42e9d1595 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/successfulcompile_vert.vert @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform float Scale; + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex) * Scale; + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + lightIntensity = dot(normalize(LightPosition - vec3(pos)), tnorm) * 1.5; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/unsuccessfulcompile_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/unsuccessfulcompile_frag.frag new file mode 100644 index 00000000000..fd471888521 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/unsuccessfulcompile_frag.frag @@ -0,0 +1,83 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float GrainSize; +uniform vec3 DarkColor; +uniform vec3 colorSpread; + +varying float lightIntensity; +varying vec3 Position; + +void main (void) +{ + // + // cheap noise + // + vec3 location = Position; + + vec3 floorvec = vec3(floor(Position.x * 10.0), 0.0, floor(Position.z * 10.0)); + vec3 noise = Position * 10.0 - floorvec - 0.5; + noise *= noise; + location += noise * 0.12; + + // + // distance from axis + // + float dist = location.x * location.x + location.z * location.z; + float grain = dist / GrainSize; + + // + // grain effects as function of distance + // + float brightness = fract(grain); + if (brightness > 0.5) + brightness = (1.0 - brightness); + vec3 color = DarkColor + 0.5 * brightness * (colorSpread); + + brightness = fract(grain*7.0); + if (brightness > 0.5) + brightness = 1.0 - brightness; + color -= 0.5 * brightness * colorSpread; + + // + // also as a function of lines parallel to the axis + // + brightness = fract(grain*47.0); + float line = fract(Position.z + Position.x); + float snap = floor(line * 30.0) * (1.0/30.0); + if (line < snap + 0.004) + color -= 0.5 * brightness * colorSpread; + + // + // apply lighting effects from vertex processor + // + color *= lightIntensity; + color = clamp(color, 0.0, 1.0); + + gl_FragColor = vec4(color, 0.1) +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/unsuccessfulcompile_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/unsuccessfulcompile_vert.vert new file mode 100644 index 00000000000..c73892a4cab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/link_program/unsuccessfulcompile_vert.vert @@ -0,0 +1,60 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform vec3 NotActiveOne; +attribute float myAttribute1; +attribute float myAttribute2; + +const float specularContribution = 0.7; +const float diffuseContribution = (1.0 - specularContribution); + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex_Color; + Position = vec3(gtf_Vertex); + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + vec3 lightVec = normalize(LightPosition - vec3(pos)); + vec3 reflectVec = reflect(lightVec, tnorm); + vec3 viewVec = normalize(vec3(pos)); + + //float spec = clamp(dot(reflectVec, viewVec), 0.0, 1.0); + float spec = clamp(dot(reflectVec, viewVec), myAttribute1, myAttribute2); + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + + lightIntensity = diffuseContribution * dot(lightVec, tnorm) + + specularContribution * spec; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/precision_specifiers/precision_specifiers.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/precision_specifiers/precision_specifiers.frag new file mode 100644 index 00000000000..9010f5a1212 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/precision_specifiers/precision_specifiers.frag @@ -0,0 +1,31 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +varying mediump vec4 color; + +void main (void) +{ + gl_FragColor = color; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/precision_specifiers/precision_specifiers.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/precision_specifiers/precision_specifiers.vert new file mode 100644 index 00000000000..4cc0174c81c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/precision_specifiers/precision_specifiers.vert @@ -0,0 +1,42 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute highp vec4 gtf_Color; +attribute highp vec4 gtf_Vertex; +uniform highp mat4 gtf_ModelViewProjectionMatrix; +varying highp vec4 color; + +void main (void) +{ + mediump int x = 5; + lowp int y = 3; + mediump float x2 = 5.0; + lowp float y2 = 1.0; + + color = vec4(x + y, x2 * y2, x, 1.0); + + color = gtf_Color; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/relink_program/simple.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/relink_program/simple.frag new file mode 100644 index 00000000000..966495e61c6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/relink_program/simple.frag @@ -0,0 +1,34 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +varying vec4 tc; + +void main (void) +{ + gl_FragColor = tc; +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/relink_program/simple.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/relink_program/simple.vert new file mode 100644 index 00000000000..703847d5ff5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/relink_program/simple.vert @@ -0,0 +1,37 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +uniform mat4 gtf_ModelViewProjectionMatrix; +attribute float gtf_Color; + +varying vec4 tc; + +void main (void) +{ + tc = vec4(gtf_Color, 0.0, 0.0, 1.0); + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/successfulcompile_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/successfulcompile_frag.frag new file mode 100644 index 00000000000..9069489545a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/successfulcompile_frag.frag @@ -0,0 +1,63 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float mortarThickness; +uniform vec3 brickColor; +uniform vec3 mortarColor; + +uniform float brickMortarWidth; +uniform float brickMortarHeight; +uniform float mwf; +uniform float mhf; + +varying vec3 Position; +varying float lightIntensity; + +void main (void) +{ + vec3 ct; + float ss, tt, w, h; + + vec3 pos = Position; + + ss = pos.x / brickMortarWidth; + tt = pos.z / brickMortarHeight; + + if (fract (tt * 0.5) > 0.5) + ss += 0.5; + + ss = fract (ss); + tt = fract (tt); + + w = step (mwf, ss) - step (1.0 - mwf, ss); + h = step (mhf, tt) - step (1.0 - mhf, tt); + + ct = clamp(mix (mortarColor, brickColor, w * h) * lightIntensity, 0.0, 1.0); + + gl_FragColor = vec4 (ct, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/successfulcompile_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/successfulcompile_vert.vert new file mode 100644 index 00000000000..3b42e9d1595 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/successfulcompile_vert.vert @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform float Scale; + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex) * Scale; + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + lightIntensity = dot(normalize(LightPosition - vec3(pos)), tnorm) * 1.5; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/unsuccessfulcompile_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/unsuccessfulcompile_frag.frag new file mode 100644 index 00000000000..fd471888521 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/unsuccessfulcompile_frag.frag @@ -0,0 +1,83 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float GrainSize; +uniform vec3 DarkColor; +uniform vec3 colorSpread; + +varying float lightIntensity; +varying vec3 Position; + +void main (void) +{ + // + // cheap noise + // + vec3 location = Position; + + vec3 floorvec = vec3(floor(Position.x * 10.0), 0.0, floor(Position.z * 10.0)); + vec3 noise = Position * 10.0 - floorvec - 0.5; + noise *= noise; + location += noise * 0.12; + + // + // distance from axis + // + float dist = location.x * location.x + location.z * location.z; + float grain = dist / GrainSize; + + // + // grain effects as function of distance + // + float brightness = fract(grain); + if (brightness > 0.5) + brightness = (1.0 - brightness); + vec3 color = DarkColor + 0.5 * brightness * (colorSpread); + + brightness = fract(grain*7.0); + if (brightness > 0.5) + brightness = 1.0 - brightness; + color -= 0.5 * brightness * colorSpread; + + // + // also as a function of lines parallel to the axis + // + brightness = fract(grain*47.0); + float line = fract(Position.z + Position.x); + float snap = floor(line * 30.0) * (1.0/30.0); + if (line < snap + 0.004) + color -= 0.5 * brightness * colorSpread; + + // + // apply lighting effects from vertex processor + // + color *= lightIntensity; + color = clamp(color, 0.0, 1.0); + + gl_FragColor = vec4(color, 0.1) +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/unsuccessfulcompile_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/unsuccessfulcompile_vert.vert new file mode 100644 index 00000000000..6e3536513c3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/shader_source/unsuccessfulcompile_vert.vert @@ -0,0 +1,61 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Vertex_Color; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform vec3 NotActiveOne; +attribute float myAttribute1; +attribute float myAttribute2; + +const float specularContribution = 0.7; +const float diffuseContribution = (1.0 - specularContribution); + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex_Color; + Position = vec3(gtf_Vertex); + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + vec3 lightVec = normalize(LightPosition - vec3(pos); + vec3 reflectVec = reflect(lightVec, tnorm); + vec3 viewVec = normalize(vec3(pos)); + + //float spec = clamp(dot(reflectVec, viewVec), 0.0, 1.0); + float spec = clamp(dot(reflectVec, viewVec), myAttribute1, myAttribute2); + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + + lightIntensity = diffuseContribution * dot(lightVec, tnorm) + + specularContribution * spec; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/three_uniforms/4f_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/three_uniforms/4f_frag.frag new file mode 100644 index 00000000000..b37c5a0e03a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/three_uniforms/4f_frag.frag @@ -0,0 +1,39 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform vec4 color; +uniform ivec4 icolor; +uniform bool flag; + +void main (void) +{ + if(flag) + gl_FragColor = vec4 (icolor[0], icolor[1], icolor[2], icolor[3]); + else + gl_FragColor = vec4 (color[0], color[1], color[2], color[3]); +} \ No newline at end of file diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/successfulcompile_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/successfulcompile_frag.frag new file mode 100644 index 00000000000..9069489545a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/successfulcompile_frag.frag @@ -0,0 +1,63 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float mortarThickness; +uniform vec3 brickColor; +uniform vec3 mortarColor; + +uniform float brickMortarWidth; +uniform float brickMortarHeight; +uniform float mwf; +uniform float mhf; + +varying vec3 Position; +varying float lightIntensity; + +void main (void) +{ + vec3 ct; + float ss, tt, w, h; + + vec3 pos = Position; + + ss = pos.x / brickMortarWidth; + tt = pos.z / brickMortarHeight; + + if (fract (tt * 0.5) > 0.5) + ss += 0.5; + + ss = fract (ss); + tt = fract (tt); + + w = step (mwf, ss) - step (1.0 - mwf, ss); + h = step (mhf, tt) - step (1.0 - mhf, tt); + + ct = clamp(mix (mortarColor, brickColor, w * h) * lightIntensity, 0.0, 1.0); + + gl_FragColor = vec4 (ct, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/successfulcompile_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/successfulcompile_vert.vert new file mode 100644 index 00000000000..3b42e9d1595 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/successfulcompile_vert.vert @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform float Scale; + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex) * Scale; + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + lightIntensity = dot(normalize(LightPosition - vec3(pos)), tnorm) * 1.5; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/unsuccessfulcompile_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/unsuccessfulcompile_frag.frag new file mode 100644 index 00000000000..fd471888521 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/unsuccessfulcompile_frag.frag @@ -0,0 +1,83 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float GrainSize; +uniform vec3 DarkColor; +uniform vec3 colorSpread; + +varying float lightIntensity; +varying vec3 Position; + +void main (void) +{ + // + // cheap noise + // + vec3 location = Position; + + vec3 floorvec = vec3(floor(Position.x * 10.0), 0.0, floor(Position.z * 10.0)); + vec3 noise = Position * 10.0 - floorvec - 0.5; + noise *= noise; + location += noise * 0.12; + + // + // distance from axis + // + float dist = location.x * location.x + location.z * location.z; + float grain = dist / GrainSize; + + // + // grain effects as function of distance + // + float brightness = fract(grain); + if (brightness > 0.5) + brightness = (1.0 - brightness); + vec3 color = DarkColor + 0.5 * brightness * (colorSpread); + + brightness = fract(grain*7.0); + if (brightness > 0.5) + brightness = 1.0 - brightness; + color -= 0.5 * brightness * colorSpread; + + // + // also as a function of lines parallel to the axis + // + brightness = fract(grain*47.0); + float line = fract(Position.z + Position.x); + float snap = floor(line * 30.0) * (1.0/30.0); + if (line < snap + 0.004) + color -= 0.5 * brightness * colorSpread; + + // + // apply lighting effects from vertex processor + // + color *= lightIntensity; + color = clamp(color, 0.0, 1.0); + + gl_FragColor = vec4(color, 0.1) +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/unsuccessfulcompile_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/unsuccessfulcompile_vert.vert new file mode 100644 index 00000000000..c73892a4cab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/use_program/unsuccessfulcompile_vert.vert @@ -0,0 +1,60 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform vec3 NotActiveOne; +attribute float myAttribute1; +attribute float myAttribute2; + +const float specularContribution = 0.7; +const float diffuseContribution = (1.0 - specularContribution); + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex_Color; + Position = vec3(gtf_Vertex); + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + vec3 lightVec = normalize(LightPosition - vec3(pos)); + vec3 reflectVec = reflect(lightVec, tnorm); + vec3 viewVec = normalize(vec3(pos)); + + //float spec = clamp(dot(reflectVec, viewVec), 0.0, 1.0); + float spec = clamp(dot(reflectVec, viewVec), myAttribute1, myAttribute2); + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + + lightIntensity = diffuseContribution * dot(lightVec, tnorm) + + specularContribution * spec; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/successfulcompile_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/successfulcompile_frag.frag new file mode 100644 index 00000000000..9069489545a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/successfulcompile_frag.frag @@ -0,0 +1,63 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float mortarThickness; +uniform vec3 brickColor; +uniform vec3 mortarColor; + +uniform float brickMortarWidth; +uniform float brickMortarHeight; +uniform float mwf; +uniform float mhf; + +varying vec3 Position; +varying float lightIntensity; + +void main (void) +{ + vec3 ct; + float ss, tt, w, h; + + vec3 pos = Position; + + ss = pos.x / brickMortarWidth; + tt = pos.z / brickMortarHeight; + + if (fract (tt * 0.5) > 0.5) + ss += 0.5; + + ss = fract (ss); + tt = fract (tt); + + w = step (mwf, ss) - step (1.0 - mwf, ss); + h = step (mhf, tt) - step (1.0 - mhf, tt); + + ct = clamp(mix (mortarColor, brickColor, w * h) * lightIntensity, 0.0, 1.0); + + gl_FragColor = vec4 (ct, 1.0); +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/successfulcompile_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/successfulcompile_vert.vert new file mode 100644 index 00000000000..3b42e9d1595 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/successfulcompile_vert.vert @@ -0,0 +1,43 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; + +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform float Scale; + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex; + Position = vec3(gtf_Vertex) * Scale; + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + lightIntensity = dot(normalize(LightPosition - vec3(pos)), tnorm) * 1.5; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/unsuccessfulcompile_frag.frag b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/unsuccessfulcompile_frag.frag new file mode 100644 index 00000000000..fd471888521 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/unsuccessfulcompile_frag.frag @@ -0,0 +1,83 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +#ifdef GL_ES +precision mediump float; +#endif +uniform float GrainSize; +uniform vec3 DarkColor; +uniform vec3 colorSpread; + +varying float lightIntensity; +varying vec3 Position; + +void main (void) +{ + // + // cheap noise + // + vec3 location = Position; + + vec3 floorvec = vec3(floor(Position.x * 10.0), 0.0, floor(Position.z * 10.0)); + vec3 noise = Position * 10.0 - floorvec - 0.5; + noise *= noise; + location += noise * 0.12; + + // + // distance from axis + // + float dist = location.x * location.x + location.z * location.z; + float grain = dist / GrainSize; + + // + // grain effects as function of distance + // + float brightness = fract(grain); + if (brightness > 0.5) + brightness = (1.0 - brightness); + vec3 color = DarkColor + 0.5 * brightness * (colorSpread); + + brightness = fract(grain*7.0); + if (brightness > 0.5) + brightness = 1.0 - brightness; + color -= 0.5 * brightness * colorSpread; + + // + // also as a function of lines parallel to the axis + // + brightness = fract(grain*47.0); + float line = fract(Position.z + Position.x); + float snap = floor(line * 30.0) * (1.0/30.0); + if (line < snap + 0.004) + color -= 0.5 * brightness * colorSpread; + + // + // apply lighting effects from vertex processor + // + color *= lightIntensity; + color = clamp(color, 0.0, 1.0); + + gl_FragColor = vec4(color, 0.1) +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/unsuccessfulcompile_vert.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/unsuccessfulcompile_vert.vert new file mode 100644 index 00000000000..c73892a4cab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/validate_program/unsuccessfulcompile_vert.vert @@ -0,0 +1,60 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec3 gtf_Normal; +attribute vec4 gtf_Vertex; +uniform mat3 gtf_NormalMatrix; +uniform mat4 gtf_ModelViewMatrix; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying float lightIntensity; +varying vec3 Position; +uniform vec3 LightPosition; +uniform vec3 NotActiveOne; +attribute float myAttribute1; +attribute float myAttribute2; + +const float specularContribution = 0.7; +const float diffuseContribution = (1.0 - specularContribution); + +void main(void) { + vec4 pos = gtf_ModelViewMatrix * gtf_Vertex_Color; + Position = vec3(gtf_Vertex); + vec3 tnorm = normalize(gtf_NormalMatrix * gtf_Normal); + vec3 lightVec = normalize(LightPosition - vec3(pos)); + vec3 reflectVec = reflect(lightVec, tnorm); + vec3 viewVec = normalize(vec3(pos)); + + //float spec = clamp(dot(reflectVec, viewVec), 0.0, 1.0); + float spec = clamp(dot(reflectVec, viewVec), myAttribute1, myAttribute2); + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + spec = spec * spec; + + lightIntensity = diffuseContribution * dot(lightVec, tnorm) + + specularContribution * spec; + + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/vertex_program_point_size/point_size.vert b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/vertex_program_point_size/point_size.vert new file mode 100644 index 00000000000..6d5b454fb06 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/GL2Tests/vertex_program_point_size/point_size.vert @@ -0,0 +1,36 @@ + +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + + +attribute vec4 gtf_Vertex; +attribute vec4 gtf_Color; +uniform mat4 gtf_ModelViewProjectionMatrix; +varying vec4 color; + +void main (void) +{ + color = gtf_Color; + gl_PointSize = 20.0; + gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex; +} diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/README.md b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/README.md new file mode 100644 index 00000000000..e44d84eae46 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/README.md @@ -0,0 +1,20 @@ +OpenGL ES 2.0 GLSL conformance tests +==================================== + +The python script, process-ogles2-tests.py, in this folder generates some +WebGL conformance tests from a subset of the OpenGL ES 2.0 conformance +tests. + +To run it you must have a copy of the OpenGL ES 2.0 conformance test +source then run it like this + + python process-ogles2-tests.py /GTF_ES/glsl/GTF/mustpass.run + +Note: Before running you can safely delete the GTF_ES folder in this +folder. Everything inside will be regenerated by the script above. + +IMPORTANT: From the OpenGL ES 2.0 conformance tests only the .vert and +.frag files are open source licenesed. All other files in that suite are +not open source. + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/mustpass.run.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/mustpass.run.txt new file mode 100644 index 00000000000..e6b87db93af --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/mustpass.run.txt @@ -0,0 +1,64 @@ +# this file is auto-generated. DO NOT EDIT. +GL/abs/input.run.txt +GL/acos/input.run.txt +GL/all/input.run.txt +GL/any/input.run.txt +GL/array/input.run.txt +GL/asin/input.run.txt +GL/atan/input.run.txt +GL/biConstants/input.run.txt +GL/biuDepthRange/input.run.txt +GL/build/input.run.txt +GL/built_in_varying_array_out_of_bounds/input.run.txt +GL/ceil/input.run.txt +GL/clamp/input.run.txt +GL/control_flow/input.run.txt +GL/cos/input.run.txt +GL/cross/input.run.txt +GL/default/input.run.txt +GL/degrees/input.run.txt +GL/discard/input.run.txt +GL/distance/input.run.txt +GL/dot/input.run.txt +GL/equal/input.run.txt +GL/exp/input.run.txt +GL/exp2/input.run.txt +GL/faceforward/input.run.txt +GL/floor/input.run.txt +GL/fract/input.run.txt +GL/functions/input.run.txt +GL/gl_FragCoord/input.run.txt +GL/gl_FrontFacing/input.run.txt +GL/greaterThan/input.run.txt +GL/greaterThanEqual/input.run.txt +GL/inversesqrt/input.run.txt +GL/length/input.run.txt +GL/lessThan/input.run.txt +GL/lessThanEqual/input.run.txt +GL/log/input.run.txt +GL/log2/input.run.txt +GL/mat/input.run.txt +GL/mat3/input.run.txt +GL/matrixCompMult/input.run.txt +GL/max/input.run.txt +GL/min/input.run.txt +GL/mix/input.run.txt +GL/mod/input.run.txt +GL/normalize/input.run.txt +GL/not/input.run.txt +GL/notEqual/input.run.txt +GL/operators/input.run.txt +GL/pow/input.run.txt +GL/radians/input.run.txt +GL/reflect/input.run.txt +GL/refract/input.run.txt +GL/sign/input.run.txt +GL/sin/input.run.txt +GL/smoothstep/input.run.txt +GL/sqrt/input.run.txt +GL/step/input.run.txt +GL/struct/input.run.txt +GL/swizzlers/input.run.txt +GL/tan/input.run.txt +GL/vec/input.run.txt +GL/vec3/input.run.txt diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/ogles-utils.js b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/ogles-utils.js new file mode 100644 index 00000000000..bcf58f27f40 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/ogles-utils.js @@ -0,0 +1,808 @@ +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ +OpenGLESTestRunner = (function(){ +var wtu = WebGLTestUtils; +var gl; + +var HALF_GRID_MAX_SIZE = 32; +var KNOWN_ATTRIBS = [ + "gtf_Vertex", + "gtf_Color" +]; + +var GTFPIXELTOLERANCE = 24; +var GTFACCEPTABLEFAILURECONT = 10; +var GTFAMDPIXELTOLERANCE = 12; +var GTFSCORETOLERANCE = 0.65; +var GTFNCCTOLARANCEZERO = 0.25; +var GTFKERNALSIZE = 5; + +function log(msg) { + // debug(msg); +} + +function compareImages(refData, tstData, width, height, diff) { + function isPixelSame(offset) { + // First do simple check + if (Math.abs(refData[offset + 0] - tstData[offset + 0]) <= GTFPIXELTOLERANCE && + Math.abs(refData[offset + 1] - tstData[offset + 1]) <= GTFPIXELTOLERANCE && + Math.abs(refData[offset + 2] - tstData[offset + 2]) <= GTFPIXELTOLERANCE) { + return true; + } + + // TODO: Implement crazy check that's used in OpenGL ES 2.0 conformance tests. + // NOTE: on Desktop things seem to be working. Maybe the more complex check + // is needed for embedded systems? + return false; + } + + var same = true; + for (var yy = 0; yy < height; ++yy) { + for (var xx = 0; xx < width; ++xx) { + var offset = (yy * width + xx) * 4; + var diffOffset = ((height - yy - 1) * width + xx) * 4; + diff[diffOffset + 0] = 0; + diff[diffOffset + 1] = 0; + diff[diffOffset + 2] = 0; + diff[diffOffset + 3] = 255; + if (!isPixelSame(offset)) { + diff[diffOffset] = 255; + if (same) { + same = false; + testFailed("pixel @ (" + xx + ", " + yy + " was [" + + tstData[offset + 0] + "," + + tstData[offset + 1] + "," + + tstData[offset + 2] + "," + + tstData[offset + 3] + "] expected [" + + refData[offset + 0] + "," + + refData[offset + 1] + "," + + refData[offset + 2] + "," + + refData[offset + 3] + "]") + } + } + } + } + return same; +} + +function persp(fovy, aspect, n, f) { + var dz = f - n; + var rad = fovy / 2.0 * 3.14159265 / 180; + + var s = Math.sin(rad); + if (dz == 0 || s == 0 || aspect == 0) + return; + + var cot = Math.cos(rad) / s; + + return [ + cot / aspect, + 0.0, + 0.0, + 0.0, + + 0.0, + cot, + 0.0, + 0.0, + + 0.0, + 0.0, + -(f + n) / dz, + -1.0, + + 0.0, + 0.0, + -2.0 * f * n / dz, + 0.0 + ]; +} + +function setAttribs(attribs, buffers) { + for (var name in attribs) { + var buffer = buffers[name]; + if (!buffer) { + testFailed("no buffer for attrib:" + name); + continue; + } + var loc = attribs[name]; + log("setup attrib: " + loc + " as " + name); + var buf = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buf); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(buffer.data), gl.STATIC_DRAW); + gl.enableVertexAttribArray(loc); + gl.vertexAttribPointer(loc, buffer.numComponents, gl.FLOAT, false, 0, 0); + } +} + +function drawSquare(attribs) { + var buffers = { + "gtf_Vertex": { + data: [ + 1.0, -1.0, -2.0, + 1.0, 1.0, -2.0, + -1.0, -1.0, -2.0, + -1.0, 1.0, -2.0 + ], + numComponents: 3 + }, + "gtf_Color": { + data: [ + 0.5, 1.0, 0.0, + 0.0, 1.0, 1.0, + 1.0, 0.0, 0.0, + 0.5, 0.0, 1.0 + ], + numComponents: 3, + }, + "gtf_SecondaryColor": { + data: [ + 0.5, 0.0, 1.0, + 1.0, 0.0, 0.0, + 0.0, 1.0, 1.0, + 0.5, 1.0, 0.0 + ], + numComponents: 3, + }, + "gtf_Normal": { + data: [ + 0.5, 0.0, 1.0, + 1.0, 0.0, 0.0, + 0.0, 1.0, 1.0, + 0.5, 1.0, 0.0 + ], + numComponents: 3, + }, + "gtf_MultiTexCoord0": { + data: [ + 1.0, 0.0, + 1.0, 1.0, + 0.0, 0.0, + 0.0, 1.0 + ], + numComponents: 2, + }, + "gtf_FogCoord": { + data: [ + 0.0, + 1.0, + 0.0, + 1.0 + ], + numComponents: 1, + } + }; + setAttribs(attribs, buffers); + gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); +} + +function drawFrontBackSquare(attribs) { + var front = { + "gtf_Vertex": { + data: [ + 1.0, -1.0, -2.0, + 1.0, 0.0, -2.0, + -1.0, -1.0, -2.0, + -1.0, 0.0, -2.0 + ], + numComponents: 3 + }, + "gtf_Color": { + data: [ + 0.0, 1.0, 0.0, + 0.0, 1.0, 0.0, + 0.0, 1.0, 0.0, + 0.0, 1.0, 0.0 + ], + numComponents: 3, + }, + "gtf_MultiTexCoord0": { + data: [ + 1.0, 0.0, + 1.0, 0.5, + 0.0, 0.0, + 0.0, 0.5 + ], + numComponents: 2, + } + }; + setAttribs(attribs, front); + gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); + + var back = { + "gtf_Vertex": { + data: [ + 1.0, 1.0, -2.0, + 1.0, 0.0, -2.0, + -1.0, 1.0, -2.0, + -1.0, 0.0, -2.0 + ], + numComponents: 3 + }, + "gtf_Color": { + data: [ + 1.0, 0.0, 0.0, + 1.0, 0.0, 0.0, + 1.0, 0.0, 0.0, + 1.0, 0.0, 0.0 + ], + numComponents: 3, + }, + "gtf_MultiTexCoord0": { + data: [ + 1.0, 0.1, + 1.0, 0.5, + 0.0, 0.1, + 0.0, 0.5 + ], + numComponents: 2, + } + }; + setAttribs(attribs, back); + gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); +} + +function drawGrid(attribs, width, height) { + var n = Math.min(Math.floor(Math.max(width, height) / 4), HALF_GRID_MAX_SIZE); + + var numVertices = (n + n) * (n + n) * 6; + + var gridVertices = []; + var gridColors = []; + var gridSecColors = []; + var gridNormals = []; + var gridFogCoords = []; + var gridTexCoords0 = []; + + var currentVertex = 0; + var currentColor = 0; + var currentSecColor = 0; + var currentTexCoord0 = 0; + var currentNormal = 0; + var currentFogCoord = 0; + + var z = -2.0; + for(var i = -n; i < n; ++i) + { + var x1 = i / n; + var x2 = (i + 1) / n; + for(var j = -n; j < n; ++j) + { + var y1 = j / n; + var y2 = (j + 1) / n; + + // VERTEX 0 + gridVertices[currentVertex++] = x1; + gridVertices[currentVertex++] = y1; + gridVertices[currentVertex++] = z; + gridColors[currentColor++] = 1.0 - (x1 + y1 + 2.0) / 4.0; + gridColors[currentColor++] = (x1 + 1.0) / 2.0; + gridColors[currentColor++] = (y1 + 1.0) / 2.0; + gridSecColors[currentSecColor++] = 1.0 - (x2 + y2 + 2.0) / 4.0; + gridSecColors[currentSecColor++] = (x2 + 1.0) / 2.0; + gridSecColors[currentSecColor++] = (y2 + 1.0) / 2.0; + gridTexCoords0[currentTexCoord0++] = (x1 + 1.0) / 2.0; + gridTexCoords0[currentTexCoord0++] = (y1 + 1.0) / 2.0; + gridNormals[currentNormal++] = 1.0 - (x2 + y2 + 2.0) / 4.0; + gridNormals[currentNormal++] = (x2 + 1.0) / 2.0; + gridNormals[currentNormal++] = (y2 + 1.0) / 2.0; + gridFogCoords[currentFogCoord++] = (y1 + 1.0) / 2.0; + + // VERTEX 1 + gridVertices[currentVertex++] = x2; + gridVertices[currentVertex++] = y1; + gridVertices[currentVertex++] = z; + gridColors[currentColor++] = 1.0 - (x2 + y1 + 2.0) / 4.0; + gridColors[currentColor++] = (x2 + 1.0) / 2.0; + gridColors[currentColor++] = (y1 + 1.0) / 2.0; + gridSecColors[currentSecColor++] = 1.0 - (x1 + y2 + 2.0) / 4.0; + gridSecColors[currentSecColor++] = (x1 + 1.0) / 2.0; + gridSecColors[currentSecColor++] = (y2 + 1.0) / 2.0; + gridTexCoords0[currentTexCoord0++] = (x2 + 1.0) / 2.0; + gridTexCoords0[currentTexCoord0++] = (y1 + 1.0) / 2.0; + gridNormals[currentNormal++] = 1.0 - (x1 + y2 + 2.0) / 4.0; + gridNormals[currentNormal++] = (x1 + 1.0) / 2.0; + gridNormals[currentNormal++] = (y2 + 1.0) / 2.0; + gridFogCoords[currentFogCoord++] = (y1 + 1.0) / 2.0; + + // VERTEX 2 + gridVertices[currentVertex++] = x2; + gridVertices[currentVertex++] = y2; + gridVertices[currentVertex++] = z; + gridColors[currentColor++] = 1.0 - (x2 + y2 + 2.0) / 4.0; + gridColors[currentColor++] = (x2 + 1.0) / 2.0; + gridColors[currentColor++] = (y2 + 1.0) / 2.0; + gridSecColors[currentSecColor++] = 1.0 - (x1 + y1 + 2.0) / 4.0; + gridSecColors[currentSecColor++] = (x1 + 1.0) / 2.0; + gridSecColors[currentSecColor++] = (y1 + 1.0) / 2.0; + gridTexCoords0[currentTexCoord0++] = (x2 + 1.0) / 2.0; + gridTexCoords0[currentTexCoord0++] = (y2 + 1.0) / 2.0; + gridNormals[currentNormal++] = 1.0 - (x1 + y1 + 2.0) / 4.0; + gridNormals[currentNormal++] = (x1 + 1.0) / 2.0; + gridNormals[currentNormal++] = (y1 + 1.0) / 2.0; + gridFogCoords[currentFogCoord++] = (y2 + 1.0) / 2.0; + + // VERTEX 2 + gridVertices[currentVertex++] = x2; + gridVertices[currentVertex++] = y2; + gridVertices[currentVertex++] = z; + gridColors[currentColor++] = 1.0 - (x2 + y2 + 2.0) / 4.0; + gridColors[currentColor++] = (x2 + 1.0) / 2.0; + gridColors[currentColor++] = (y2 + 1.0) / 2.0; + gridSecColors[currentSecColor++] = 1.0 - (x1 + y1 + 2.0) / 4.0; + gridSecColors[currentSecColor++] = (x1 + 1.0) / 2.0; + gridSecColors[currentSecColor++] = (y1 + 1.0) / 2.0; + gridTexCoords0[currentTexCoord0++] = (x2 + 1.0) / 2.0; + gridTexCoords0[currentTexCoord0++] = (y2 + 1.0) / 2.0; + gridNormals[currentNormal++] = 1.0 - (x1 + y1 + 2.0) / 4.0; + gridNormals[currentNormal++] = (x1 + 1.0) / 2.0; + gridNormals[currentNormal++] = (y1 + 1.0) / 2.0; + gridFogCoords[currentFogCoord++] = (y2 + 1.0) / 2.0; + + // VERTEX 3 + gridVertices[currentVertex++] = x1; + gridVertices[currentVertex++] = y2; + gridVertices[currentVertex++] = z; + gridColors[currentColor++] = 1.0 - (x1 + y2 + 2.0) / 4.0; + gridColors[currentColor++] = (x1 + 1.0) / 2.0; + gridColors[currentColor++] = (y2 + 1.0) / 2.0; + gridSecColors[currentSecColor++] = 1.0 - (x2 + y1 + 2.0) / 4.0; + gridSecColors[currentSecColor++] = (x2 + 1.0) / 2.0; + gridSecColors[currentSecColor++] = (y1 + 1.0) / 2.0; + gridTexCoords0[currentTexCoord0++] = (x1 + 1.0) / 2.0; + gridTexCoords0[currentTexCoord0++] = (y2 + 1.0) / 2.0; + gridNormals[currentNormal++] = 1.0 - (x2 + y1 + 2.0) / 4.0; + gridNormals[currentNormal++] = (x2 + 1.0) / 2.0; + gridNormals[currentNormal++] = (y1 + 1.0) / 2.0; + gridFogCoords[currentFogCoord++] = (y2 + 1.0) / 2.0; + + // VERTEX 0 + gridVertices[currentVertex++] = x1; + gridVertices[currentVertex++] = y1; + gridVertices[currentVertex++] = z; + gridColors[currentColor++] = 1.0 - (x1 + y1 + 2.0) / 4.0; + gridColors[currentColor++] = (x1 + 1.0) / 2.0; + gridColors[currentColor++] = (y1 + 1.0) / 2.0; + gridSecColors[currentSecColor++] = 1.0 - (x2 + y2 + 2.0) / 4.0; + gridSecColors[currentSecColor++] = (x2 + 1.0) / 2.0; + gridSecColors[currentSecColor++] = (y2 + 1.0) / 2.0; + gridTexCoords0[currentTexCoord0++] = (x1 + 1.0) / 2.0; + gridTexCoords0[currentTexCoord0++] = (y1 + 1.0) / 2.0; + gridNormals[currentNormal++] = 1.0 - (x2 + y2 + 2.0) / 4.0; + gridNormals[currentNormal++] = (x2 + 1.0) / 2.0; + gridNormals[currentNormal++] = (y2 + 1.0) / 2.0; + gridFogCoords[currentFogCoord++] = (y1 + 1.0) / 2.0; + } + } + + var buffers = { + "gtf_Vertex": { data: gridVertices, numComponents: 3 }, + "gtf_Color": { data: gridColors, numComponents: 3 }, + "gtf_SecondaryColor": { data: gridSecColors, numComponents: 3 }, + "gtf_Normal": { data: gridNormals, numComponents: 3 }, + "gtf_FogCoord": { data: gridFogCoords, numComponents: 1 }, + "gtf_MultiTexCoord0": { data: gridTexCoords0, numComponents: 2 } + }; + setAttribs(attribs, buffers); + gl.drawArrays(gl.TRIANGLES, 0, numVertices); +} + +var MODEL_FUNCS = { + square: drawSquare, + frontbacksquare: drawFrontBackSquare, + grid: drawGrid +}; + +function drawWithProgram(program, programInfo, test) { + gl.useProgram(program); + var attribs = { }; + + var numAttribs = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES); + for (var ii = 0; ii < numAttribs; ++ii) { + var info = gl.getActiveAttrib(program, ii); + var name = info.name; + var location = gl.getAttribLocation(program, name); + attribs[name] = location; + + if (KNOWN_ATTRIBS.indexOf(name) < 0) { + testFailed("unknown attrib:" + name) + } + } + + var uniforms = { }; + var numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS); + for (var ii = 0; ii < numUniforms; ++ii) { + var info = gl.getActiveUniform(program, ii); + var name = info.name; + if (name.match(/\[0\]$/)) { + name = name.substr(0, name.length - 3); + } + var location = gl.getUniformLocation(program, name); + uniforms[name] = {location: location}; + } + + var getUniformLocation = function(name) { + var uniform = uniforms[name]; + if (uniform) { + uniform.used = true; + return uniform.location; + } + return null; + } + + // Set known uniforms + var loc = getUniformLocation("gtf_ModelViewProjectionMatrix"); + if (loc) { + gl.uniformMatrix4fv( + loc, + false, + persp(60, 1, 1, 30)); + } + var loc = getUniformLocation("viewportwidth"); + if (loc) { + gl.uniform1f(loc, gl.canvas.width); + } + var loc = getUniformLocation("viewportheight"); + if (loc) { + gl.uniform1f(loc, gl.canvas.height); + } + + // Set test specific uniforms + for (var name in programInfo.uniforms) { + var location = getUniformLocation(name); + if (!location) { + continue; + } + var uniform = programInfo.uniforms[name]; + var type = uniform.type; + var value = uniform.value; + var transpose = uniform.transpose; + if (transpose !== undefined) { + log("gl." + type + '("' + name + '", ' + transpose + ", " + value + ")"); + gl[type](location, transpose, value); + } else if (!type.match("v$")) { + var args = [location]; + for (var ii = 0; ii < value.length; ++ii) { + args.push(value[ii]); + } + gl[type].apply(gl, args); + log("gl." + type + '("' + name + '", ' + args.slice(1) + ")"); + } else { + log("gl." + type + '("' + name + '", ' + value + ")"); + gl[type](location, value); + } + var err = gl.getError(); + if (err != gl.NO_ERROR) { + testFailed(wtu.glEnumToString(gl, err) + " generated setting uniform: " + name); + } + } + + // Filter out specified built-in uniforms + if (programInfo.builtin_uniforms) { + var num_builtins_found = 0; + var valid_values = programInfo.builtin_uniforms.valid_values; + for (var index in valid_values) { + var uniform = uniforms[valid_values[index]]; + if (uniform) { + ++num_builtins_found; + uniform.builtin = true; + } + } + + var min_required = programInfo.builtin_uniforms.min_required; + if (num_builtins_found < min_required) { + testFailed("only found " + num_builtins_found + " of " + min_required + + " required built-in uniforms: " + valid_values); + } + } + + // Check for unset uniforms + for (var name in uniforms) { + var uniform = uniforms[name]; + if (!uniform.used && !uniform.builtin) { + testFailed("uniform " + name + " never set"); + } + } + + + for (var state in test.state) { + var fields = test.state[state]; + switch (state) { + case 'depthrange': + gl.depthRange(fields.near, fields.far); + break; + default: + testFailed("unknown state: " + state) + } + } + + gl.clearColor(0, 0, 0, 0); + gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); + + var model = test.model || "square"; + var fn = MODEL_FUNCS[model]; + if (!fn) { + testFailed("unknown model type: " + model) + } else { + log("draw as: " + model) + fn(attribs, gl.canvas.width, gl.canvas.height); + } + + var pixels = new Uint8Array(gl.canvas.width * gl.canvas.height * 4); + gl.readPixels(0, 0, gl.canvas.width, gl.canvas.height, gl.RGBA, gl.UNSIGNED_BYTE, pixels); + return { + width: gl.canvas.width, + height: gl.canvas.height, + pixels: pixels, + img: wtu.makeImageFromCanvas(gl.canvas) + }; +} + +function runProgram(programInfo, test, label, callback) { + var shaders = []; + var source = []; + var count = 0; + + function loadShader(path, type, index) { + wtu.loadTextFileAsync(path, function(success, text) { + addShader(success, text, type, path, index); + }); + } + + function addShader(success, text, type, path, index) { + ++count; + if (!success) { + testFailed("could not load: " + path); + } else { + var shader = wtu.loadShader(gl, text, type); + shaders.push(shader); + source[index] = text; + } + if (count == 2) { + var result; + if (shaders.length == 2) { + debug(""); + if (!quietMode()) { + var consoleDiv = document.getElementById("console"); + wtu.addShaderSources( + gl, consoleDiv, label + " vertex shader", shaders[0], source[0], + programInfo.vertexShader); + wtu.addShaderSources( + gl, consoleDiv, label + " fragment shader", shaders[1], source[1], + programInfo.fragmentShader); + } + var program = wtu.createProgram(gl, shaders[0], shaders[1]); + result = drawWithProgram(program, programInfo, test); + } + callback(result); + } + } + + loadShader(programInfo.vertexShader, gl.VERTEX_SHADER, 0); + loadShader(programInfo.fragmentShader, gl.FRAGMENT_SHADER, 1); +} + +function compareResults(expected, actual) { + var width = expected.width; + var height = expected.height; + var canvas = document.createElement("canvas"); + canvas.width = width; + canvas.height = height; + var ctx = canvas.getContext("2d"); + var imgData = ctx.getImageData(0, 0, width, height); + var tolerance = 0; + + var expData = expected.pixels; + var actData = actual.pixels; + + var same = compareImages(expData, actData, width, height, imgData.data); + + var console = document.getElementById("console"); + var diffImg = null; + if (!same) { + ctx.putImageData(imgData, 0, 0); + diffImg = wtu.makeImageFromCanvas(canvas); + } + + if (!quietMode()) { + var div = document.createElement("div"); + div.className = "testimages"; + wtu.insertImage(div, "reference", expected.img); + wtu.insertImage(div, "test", actual.img); + if (diffImg) { + wtu.insertImage(div, "diff", diffImg); + } + div.appendChild(document.createElement('br')); + + console.appendChild(div); + } + + if (!same) { + testFailed("images are different"); + } else { + testPassed("images are the same"); + } + + if (!quietMode()) + console.appendChild(document.createElement('hr')); +} + +function runCompareTest(test, callback) { + debug(""); + debug("test: " + test.name); + var results = []; + var count = 0; + + function storeResults(index) { + return function(result) { + results[index] = result; + ++count; + if (count == 2) { + compareResults(results[0], results[1]); + wtu.glErrorShouldBe(gl, gl.NO_ERROR, "there should be no errors"); + callback(); + } + } + } + + runProgram(test.referenceProgram, test, "reference", storeResults(0)); + runProgram(test.testProgram, test, "test", storeResults(1)); +} + +function runBuildTest(test, callback) { + debug(""); + debug("test: " + test.name); + + var shaders = [null, null]; + var source = ["",""]; + var success = [undefined, undefined]; + var count = 0; + + function loadShader(path, type, index) { + if (path == "empty") { + shaders[index] = gl.createShader(); + success[index] = true; + source[index] = "/* empty */"; + attachAndLink(); + } else { + wtu.loadTextFileAsync(path, function(loadSuccess, text) { + if (!loadSuccess) { + success[index] = false; + source[index] = "/* could not load */"; + testFailed("could not load:" + path); + } else { + source[index] = text; + shaders[index] = wtu.loadShader(gl, text, type, function(index) { + return function(msg) { + success[index] = false + } + }(index)); + if (success[index] === undefined) { + success[index] = true; + } + } + attachAndLink(); + }); + } + } + + function attachAndLink() { + ++count; + if (count == 2) { + if (!quietMode()) { + debug(""); + var c = document.getElementById("console"); + wtu.addShaderSource( + c, "vertex shader", source[0], test.testProgram.vertexShader); + debug("compile: " + (success[0] ? "success" : "fail")); + wtu.addShaderSource( + c, "fragment shader", source[1], test.testProgram.fragmentShader); + debug("compile: " + (success[1] ? "success" : "fail")); + } + compileSuccess = (success[0] && success[1]); + if (!test.compstat) { + if (compileSuccess) { + testFailed("expected compile failure but was successful"); + } else { + testPassed("expected compile failure and it failed"); + } + } else { + if (compileSuccess) { + testPassed("expected compile success and it was successful"); + } else { + testFailed("expected compile success but it failed"); + } + var linkSuccess = true; + var program = wtu.createProgram(gl, shaders[0], shaders[1], function() { + linkSuccess = false; + }); + if (linkSuccess !== test.linkstat) { + testFailed("expected link to " + (test.linkstat ? "succeed" : "fail")); + } else { + testPassed("shaders compiled and linked as expected."); + } + } + callback(); + } + } + + loadShader(test.testProgram.vertexShader, gl.VERTEX_SHADER, 0); + loadShader(test.testProgram.fragmentShader, gl.FRAGMENT_SHADER, 1); +} + +var testPatterns = { + compare: runCompareTest, + build: runBuildTest, + + dummy: null // just here to mark the end +}; + +function LogGLCall(functionName, args) { + console.log("gl." + functionName + "(" + + WebGLDebugUtils.glFunctionArgsToString(functionName, args) + ")"); +} + +// Runs the tests async since they will load shaders. +function run(obj) { + description(); + + var canvas = document.getElementById("example"); + gl = wtu.create3DContext(canvas); + if (window.WebGLDebugUtils) { + gl = WebGLDebugUtils.makeDebugContext(gl, undefined, LogGLCall); + } + if (!gl) { + testFailed("context does not exist"); + finishTest(); + return; + } + + if (gl.canvas.width != 500 || gl.canvas.height != 500) { + testFailed("canvas must be 500x500 pixels: Several shaders are hard coded to this size."); + } + + var tests = obj.tests; + var ndx = 0; + + function runNextTest() { + if (ndx < tests.length) { + var test = tests[ndx++]; + var fn = testPatterns[test.pattern]; + if (!fn) { + testFailed("test pattern: " + test.pattern + " not supoprted") + runNextTest(); + } else { + fn(test, runNextTest); + } + } else { + finishTest(); + } + } + runNextTest(); +} + +return { + run: run, +}; +}()); + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/process-ogles2-tests.py b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/process-ogles2-tests.py new file mode 100644 index 00000000000..5ef710a68fd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/ogles/process-ogles2-tests.py @@ -0,0 +1,586 @@ +#!/usr/bin/python + +"""generates tests from OpenGL ES 2.0 .run/.test files.""" + +import os +import os.path +import sys +import re +import json +import shutil +from optparse import OptionParser +from xml.dom.minidom import parse + +if sys.version < '2.6': + print 'Wrong Python Version !!!: Need >= 2.6' + sys.exit(1) + +# each shader test generates up to 3 512x512 images. +# a 512x512 image takes 1meg of memory so set this +# number apporpriate for the platform with +# the smallest memory issue. At 8 that means +# at least 24 meg is needed to run the test. +MAX_TESTS_PER_SET = 8 + +VERBOSE = False + +FILTERS = [ + re.compile("GL/"), +] + +LICENSE = """ +/* +** Copyright (c) 2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ +""" + +COMMENT_RE = re.compile("/\*\n\*\*\s+Copyright.*?\*/", + re.IGNORECASE | re.DOTALL) +REMOVE_COPYRIGHT_RE = re.compile("\/\/\s+Copyright.*?\n", + re.IGNORECASE | re.DOTALL) +MATRIX_RE = re.compile("Matrix(\\d)") + +VALID_UNIFORM_TYPES = [ + "uniform1f", + "uniform1fv", + "uniform1fv", + "uniform1i", + "uniform1iv", + "uniform1iv", + "uniform2f", + "uniform2fv", + "uniform2fv", + "uniform2i", + "uniform2iv", + "uniform2iv", + "uniform3f", + "uniform3fv", + "uniform3fv", + "uniform3i", + "uniform3iv", + "uniform3iv", + "uniform4f", + "uniform4fv", + "uniform4fv", + "uniform4i", + "uniform4iv", + "uniform4ivy", + "uniformMatrix2fv", + "uniformMatrix2fv", + "uniformMatrix3fv", + "uniformMatrix3fv", + "uniformMatrix4fv", + "uniformMatrix4fv", +] + +SUBSTITUTIONS = [ + ("uniformmat3fv", "uniformMatrix3fv"), + ("uniformmat4fv", "uniformMatrix4fv"), +] + + +def Log(msg): + global VERBOSE + if VERBOSE: + print msg + + +def TransposeMatrix(values, dim): + size = dim * dim + count = len(values) / size + for m in range(0, count): + offset = m * size + for i in range(0, dim): + for j in range(i + 1, dim): + t = values[offset + i * dim + j] + values[offset + i * dim + j] = values[offset + j * dim + i] + values[offset + j * dim + i] = t + + +def GetValidTypeName(type_name): + global VALID_UNIFORM_TYPES + global SUBSTITUTIONS + for subst in SUBSTITUTIONS: + type_name = type_name.replace(subst[0], subst[1]) + if not type_name in VALID_UNIFORM_TYPES: + print "unknown type name: ", type_name + raise SyntaxError + return type_name + + +def WriteOpen(filename): + dirname = os.path.dirname(filename) + if len(dirname) > 0 and not os.path.exists(dirname): + os.makedirs(dirname) + return open(filename, "wb") + + +class TxtWriter(): + def __init__(self, filename): + self.filename = filename + self.lines = [] + + def Write(self, line): + self.lines.append(line) + + def Close(self): + if len(self.lines) > 0: + Log("Writing: %s" % self.filename) + f = WriteOpen(self.filename) + f.write("# this file is auto-generated. DO NOT EDIT.\n") + f.write("".join(self.lines)) + f.close() + + +def ReadFileAsLines(filename): + f = open(filename, "r") + lines = f.readlines() + f.close() + return [line.strip() for line in lines] + + +def ReadFile(filename): + f = open(filename, "r") + content = f.read() + f.close() + return content.replace("\r\n", "\n") + + +def Chunkify(list, chunk_size): + """divides an array into chunks of chunk_size""" + return [list[i:i + chunk_size] for i in range(0, len(list), chunk_size)] + + +def GetText(nodelist): + """Gets the text of from a list of nodes""" + rc = [] + for node in nodelist: + if node.nodeType == node.TEXT_NODE: + rc.append(node.data) + return ''.join(rc) + + +def GetElementText(node, name): + """Gets the text of an element""" + elements = node.getElementsByTagName(name) + if len(elements) > 0: + return GetText(elements[0].childNodes) + else: + return None + + +def GetBoolElement(node, name): + text = GetElementText(node, name) + return text.lower() == "true" + + +def GetModel(node): + """Gets the model""" + model = GetElementText(node, "model") + if model and len(model.strip()) == 0: + elements = node.getElementsByTagName("model") + if len(elements) > 0: + model = GetElementText(elements[0], "filename") + return model + + +def RelativizePaths(base, paths, template): + """converts paths to relative paths""" + rels = [] + for p in paths: + #print "---" + #print "base: ", os.path.abspath(base) + #print "path: ", os.path.abspath(p) + relpath = os.path.relpath(os.path.abspath(p), os.path.dirname(os.path.abspath(base))).replace("\\", "/") + #print "rel : ", relpath + rels.append(template % relpath) + return "\n".join(rels) + + +def CopyFile(filename, src, dst): + s = os.path.abspath(os.path.join(os.path.dirname(src), filename)) + d = os.path.abspath(os.path.join(os.path.dirname(dst), filename)) + dst_dir = os.path.dirname(d) + if not os.path.exists(dst_dir): + os.makedirs(dst_dir) + shutil.copyfile(s, d) + + +def CopyShader(filename, src, dst): + s = os.path.abspath(os.path.join(os.path.dirname(src), filename)) + d = os.path.abspath(os.path.join(os.path.dirname(dst), filename)) + text = ReadFile(s) + # By agreement with the Khronos OpenGL working group we are allowed + # to open source only the .vert and .frag files from the OpenGL ES 2.0 + # conformance tests. All other files from the OpenGL ES 2.0 conformance + # tests are not included. + marker = "insert-copyright-here" + new_text = COMMENT_RE.sub(marker, text) + if new_text == text: + print "no matching license found:", s + raise RuntimeError + new_text = REMOVE_COPYRIGHT_RE.sub("", new_text) + new_text = new_text.replace(marker, LICENSE) + f = WriteOpen(d) + f.write(new_text) + f.close() + + +def IsOneOf(string, regexs): + for regex in regexs: + if re.match(regex, string): + return True + return False + + +def CheckForUnknownTags(valid_tags, node, depth=1): + """do a hacky check to make sure we're not missing something.""" + for child in node.childNodes: + if child.localName and not IsOneOf(child.localName, valid_tags[0]): + print "unsupported tag:", child.localName + print "depth:", depth + raise SyntaxError + else: + if len(valid_tags) > 1: + CheckForUnknownTags(valid_tags[1:], child, depth + 1) + + +def IsFileWeWant(filename): + for f in FILTERS: + if f.search(filename): + return True + return False + + +class TestReader(): + """class to read and parse tests""" + + def __init__(self, basepath): + self.tests = [] + self.modes = {} + self.patterns = {} + self.basepath = basepath + + def Print(self, msg): + if self.verbose: + print msg + + def MakeOutPath(self, filename): + relpath = os.path.relpath(os.path.abspath(filename), os.path.dirname(os.path.abspath(self.basepath))) + return relpath + + def ReadTests(self, filename): + """reads a .run file and parses.""" + Log("reading %s" % filename) + outname = self.MakeOutPath(filename + ".txt") + f = TxtWriter(outname) + dirname = os.path.dirname(filename) + lines = ReadFileAsLines(filename) + count = 0 + tests_data = [] + for line in lines: + if len(line) > 0 and not line.startswith("#"): + fname = os.path.join(dirname, line) + if line.endswith(".run"): + if self.ReadTests(fname): + f.Write(line + ".txt\n") + count += 1 + elif line.endswith(".test"): + tests_data.extend(self.ReadTest(fname)) + else: + print "Error in %s:%d:%s" % (filename, count, line) + raise SyntaxError() + if len(tests_data): + global MAX_TESTS_PER_SET + sets = Chunkify(tests_data, MAX_TESTS_PER_SET) + id = 1 + for set in sets: + suffix = "_%03d_to_%03d" % (id, id + len(set) - 1) + test_outname = self.MakeOutPath(filename + suffix + ".html") + if os.path.basename(test_outname).startswith("input.run"): + dname = os.path.dirname(test_outname) + folder_name = os.path.basename(dname) + test_outname = os.path.join(dname, folder_name + suffix + ".html") + self.WriteTests(filename, test_outname, {"tests":set}) + f.Write(os.path.basename(test_outname) + "\n") + id += len(set) + count += 1 + f.Close() + return count + + def ReadTest(self, filename): + """reads a .test file and parses.""" + Log("reading %s" % filename) + dom = parse(filename) + tests = dom.getElementsByTagName("test") + tests_data = [] + outname = self.MakeOutPath(filename + ".html") + for test in tests: + if not IsFileWeWant(filename): + self.CopyShaders(test, filename, outname) + else: + test_data = self.ProcessTest(test, filename, outname, len(tests_data)) + if test_data: + tests_data.append(test_data) + return tests_data + + def ProcessTest(self, test, filename, outname, id): + """Process a test""" + mode = test.getAttribute("mode") + pattern = test.getAttribute("pattern") + self.modes[mode] = 1 + self.patterns[pattern] = 1 + Log ("%d: mode: %s pattern: %s" % (id, mode, pattern)) + method = getattr(self, 'Process_' + pattern) + test_data = method(test, filename, outname) + if test_data: + test_data["pattern"] = pattern + return test_data + + def WriteTests(self, filename, outname, tests_data): + Log("Writing %s" % outname) + template = """ + + + + +WebGL GLSL conformance test: %(title)s +%(css)s +%(scripts)s + + + +
+
+ + + +""" + css = [ + "../../resources/js-test-style.css", + "../../resources/ogles-tests.css", + ] + scripts = [ + "../../resources/js-test-pre.js", + "../../resources/webgl-test-utils.js", + "ogles-utils.js", + ] + css_html = RelativizePaths(outname, css, '') + scripts_html = RelativizePaths(outname, scripts, '') + + f = WriteOpen(outname) + f.write(template % { + "license": LICENSE, + "css": css_html, + "scripts": scripts_html, + "title": os.path.basename(outname), + "tests_data": json.dumps(tests_data, indent=2) + }) + f.close() + + + def CopyShaders(self, test, filename, outname): + """For tests we don't actually support yet, at least copy the shaders""" + shaders = test.getElementsByTagName("shader") + for shader in shaders: + for name in ["vertshader", "fragshader"]: + s = GetElementText(shader, name) + if s and s != "empty": + CopyShader(s, filename, outname) + + # + # pattern handlers. + # + + def Process_compare(self, test, filename, outname): + global MATRIX_RE + + valid_tags = [ + ["shader", "model", "glstate"], + ["uniform", "vertshader", "fragshader", "filename", "depthrange"], + ["name", "count", "transpose", "uniform*", "near", "far"], + ] + CheckForUnknownTags(valid_tags, test) + + # parse the test + shaders = test.getElementsByTagName("shader") + shaderInfos = [] + for shader in shaders: + v = GetElementText(shader, "vertshader") + f = GetElementText(shader, "fragshader") + CopyShader(v, filename, outname) + CopyShader(f, filename, outname) + info = { + "vertexShader": v, + "fragmentShader": f, + } + shaderInfos.append(info) + uniformElems = shader.getElementsByTagName("uniform") + if len(uniformElems) > 0: + uniforms = {} + info["uniforms"] = uniforms + for uniformElem in uniformElems: + uniform = {"count": 1} + for child in uniformElem.childNodes: + if child.localName == None: + pass + elif child.localName == "name": + uniforms[GetText(child.childNodes)] = uniform + elif child.localName == "count": + uniform["count"] = int(GetText(child.childNodes)) + elif child.localName == "transpose": + uniform["transpose"] = (GetText(child.childNodes) == "true") + else: + if "type" in uniform: + print "utype was:", uniform["type"], " found ", child.localName + raise SyntaxError + type_name = GetValidTypeName(child.localName) + uniform["type"] = type_name + valueText = GetText(child.childNodes).replace(",", " ") + uniform["value"] = [float(t) for t in valueText.split()] + m = MATRIX_RE.search(type_name) + if m: + # Why are these backward from the API?!?!? + TransposeMatrix(uniform["value"], int(m.group(1))) + data = { + "name": os.path.basename(outname), + "model": GetModel(test), + "referenceProgram": shaderInfos[1], + "testProgram": shaderInfos[0], + } + gl_states = test.getElementsByTagName("glstate") + if len(gl_states) > 0: + state = {} + data["state"] = state + for gl_state in gl_states: + for state_name in gl_state.childNodes: + if state_name.localName: + values = {} + for field in state_name.childNodes: + if field.localName: + values[field.localName] = GetText(field.childNodes) + state[state_name.localName] = values + return data + + def Process_shaderload(self, test, filename, outname): + """no need for shaderload tests""" + self.CopyShaders(test, filename, outname) + + def Process_extension(self, test, filename, outname): + """no need for extension tests""" + self.CopyShaders(test, filename, outname) + + def Process_createtests(self, test, filename, outname): + Log("createtests Not implemented: %s" % filename) + self.CopyShaders(test, filename, outname) + + def Process_GL2Test(self, test, filename, outname): + Log("GL2Test Not implemented: %s" % filename) + self.CopyShaders(test, filename, outname) + + def Process_uniformquery(self, test, filename, outname): + Log("uniformquery Not implemented: %s" % filename) + self.CopyShaders(test, filename, outname) + + def Process_egl_image_external(self, test, filename, outname): + """no need for egl_image_external tests""" + self.CopyShaders(test, filename, outname) + + def Process_dismount(self, test, filename, outname): + Log("dismount Not implemented: %s" % filename) + self.CopyShaders(test, filename, outname) + + def Process_build(self, test, filename, outname): + """don't need build tests""" + valid_tags = [ + ["shader", "compstat", "linkstat"], + ["vertshader", "fragshader"], + ] + CheckForUnknownTags(valid_tags, test) + + shader = test.getElementsByTagName("shader") + if not shader: + return None + vs = GetElementText(shader[0], "vertshader") + fs = GetElementText(shader[0], "fragshader") + if vs and vs != "empty": + CopyShader(vs, filename, outname) + if fs and fs != "empty": + CopyShader(fs, filename, outname) + data = { + "name": os.path.basename(outname), + "compstat": bool(GetBoolElement(test, "compstat")), + "linkstat": bool(GetBoolElement(test, "linkstat")), + "testProgram": { + "vertexShader": vs, + "fragmentShader": fs, + }, + } + attach = test.getElementsByTagName("attach") + if len(attach) > 0: + data["attachError"] = GetElementText(attach[0], "attacherror") + return data + + def Process_coverage(self, test, filename, outname): + Log("coverage Not implemented: %s" % filename) + self.CopyShaders(test, filename, outname) + + def Process_attributes(self, test, filename, outname): + Log("attributes Not implemented: %s" % filename) + self.CopyShaders(test, filename, outname) + + def Process_fixed(self, test, filename, outname): + """no need for fixed function tests""" + self.CopyShaders(test, filename, outname) + + +def main(argv): + """This is the main function.""" + global VERBOSE + + parser = OptionParser() + parser.add_option( + "-v", "--verbose", action="store_true", + help="prints more output.") + + (options, args) = parser.parse_args(args=argv) + + if len(args) < 1: + pass # fix me + + os.chdir(os.path.dirname(__file__) or '.') + + VERBOSE = options.verbose + + filename = args[0] + test_reader = TestReader(filename) + test_reader.ReadTests(filename) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/00_test_list.txt new file mode 100644 index 00000000000..fe74ff96d78 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/00_test_list.txt @@ -0,0 +1,11 @@ +get-active-test.html +gl-bind-attrib-location-test.html +--min-version 1.0.2 gl-bind-attrib-location-long-names-test.html +gl-get-active-attribute.html +gl-get-active-uniform.html +gl-getshadersource.html +gl-shader-test.html +invalid-UTF-16.html +--min-version 1.0.4 program-infolog.html +program-test.html +--min-version 1.0.2 use-program-crash-with-discard-in-fragment-shader.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/get-active-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/get-active-test.html new file mode 100644 index 00000000000..e6be4061c5f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/get-active-test.html @@ -0,0 +1,142 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-bind-attrib-location-long-names-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-bind-attrib-location-long-names-test.html new file mode 100644 index 00000000000..d5f76358513 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-bind-attrib-location-long-names-test.html @@ -0,0 +1,176 @@ + + + + + + +WebGL BindAttribLocation Long Names Conformance Tests + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-bind-attrib-location-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-bind-attrib-location-test.html new file mode 100644 index 00000000000..ee9c98db347 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-bind-attrib-location-test.html @@ -0,0 +1,162 @@ + + + + + + +WebGL BindAttribLocation Conformance Tests + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-get-active-attribute.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-get-active-attribute.html new file mode 100644 index 00000000000..dcf13fb3c87 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-get-active-attribute.html @@ -0,0 +1,108 @@ + + + + + + +WebGL getActiveAttrib conformance test. + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-get-active-uniform.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-get-active-uniform.html new file mode 100644 index 00000000000..9ea5591b6fe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-get-active-uniform.html @@ -0,0 +1,159 @@ + + + + + + +WebGL getActiveUniform conformance test. + + + + + + + + +
+
+ + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-getshadersource.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-getshadersource.html new file mode 100644 index 00000000000..25f49790b22 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-getshadersource.html @@ -0,0 +1,62 @@ + + + + + + + WebGL getShaderSource conformance test. + + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-shader-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-shader-test.html new file mode 100644 index 00000000000..ed13f23a963 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/gl-shader-test.html @@ -0,0 +1,117 @@ + + + + + + +WebGL ShaderL Conformance Tests + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/invalid-UTF-16.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/invalid-UTF-16.html new file mode 100644 index 00000000000..e360cb46ab2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/invalid-UTF-16.html @@ -0,0 +1,71 @@ + + + + + + + + + + + + + +

+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/program-infolog.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/program-infolog.html new file mode 100644 index 00000000000..93a6b1f2b9a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/program-infolog.html @@ -0,0 +1,85 @@ + + + + + + +WebGL Program Conformance Tests + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/program-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/program-test.html new file mode 100644 index 00000000000..854c5ea0b9a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/program-test.html @@ -0,0 +1,427 @@ + + + + + +WebGL Program Compiling/Linking Conformance Test + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/use-program-crash-with-discard-in-fragment-shader.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/use-program-crash-with-discard-in-fragment-shader.html new file mode 100644 index 00000000000..4c100867104 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/programs/use-program-crash-with-discard-in-fragment-shader.html @@ -0,0 +1,100 @@ + + + + + + +WebGL Program Conformance Tests + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/reading/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/reading/00_test_list.txt new file mode 100644 index 00000000000..bff4db57ee6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/reading/00_test_list.txt @@ -0,0 +1,3 @@ +read-pixels-pack-alignment.html +read-pixels-test.html + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/reading/read-pixels-pack-alignment.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/reading/read-pixels-pack-alignment.html new file mode 100644 index 00000000000..a6e74c9da55 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/reading/read-pixels-pack-alignment.html @@ -0,0 +1,265 @@ + + + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/reading/read-pixels-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/reading/read-pixels-test.html new file mode 100644 index 00000000000..bf949e15c41 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/reading/read-pixels-test.html @@ -0,0 +1,320 @@ + + + + + + +WebGL ReadPixels conformance test. + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/00_test_list.txt new file mode 100644 index 00000000000..104cada3f16 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/00_test_list.txt @@ -0,0 +1,6 @@ +--min-version 1.0.3 feedback-loop.html +--max-version 1.9.9 framebuffer-object-attachment.html +--min-version 1.0.2 framebuffer-state-restoration.html +--max-version 1.9.9 framebuffer-test.html +renderbuffer-initialization.html + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/feedback-loop.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/feedback-loop.html new file mode 100644 index 00000000000..035b87aa8cd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/feedback-loop.html @@ -0,0 +1,127 @@ + + + + + + + WebGL Rendering Feedback Loop + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/framebuffer-object-attachment.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/framebuffer-object-attachment.html new file mode 100644 index 00000000000..23785668f90 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/framebuffer-object-attachment.html @@ -0,0 +1,665 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/framebuffer-state-restoration.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/framebuffer-state-restoration.html new file mode 100644 index 00000000000..4028029e468 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/framebuffer-state-restoration.html @@ -0,0 +1,130 @@ + + + + + + +WebGL Framebuffer state restoration Test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/framebuffer-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/framebuffer-test.html new file mode 100644 index 00000000000..98a63076154 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/framebuffer-test.html @@ -0,0 +1,199 @@ + + + + + + +WebGL Framebuffer Test + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/renderbuffer-initialization.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/renderbuffer-initialization.html new file mode 100644 index 00000000000..19d23eb68d2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/renderbuffers/renderbuffer-initialization.html @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/00_test_list.txt new file mode 100644 index 00000000000..e22f73b5ac4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/00_test_list.txt @@ -0,0 +1,28 @@ +--min-version 1.0.4 --max-version 1.9.9 clipping-wide-points.html +--min-version 1.0.2 culling.html +--min-version 1.0.4 default-texture-draw-bug.html +draw-arrays-out-of-bounds.html +draw-elements-out-of-bounds.html +--min-version 1.0.4 draw-with-changing-start-vertex-bug.html +--min-version 1.0.3 framebuffer-switch.html +--min-version 1.0.3 framebuffer-texture-switch.html +gl-clear.html +--min-version 1.0.3 gl-drawarrays.html +gl-drawelements.html +gl-scissor-test.html +--min-version 1.0.2 gl-scissor-fbo-test.html +--min-version 1.0.3 gl-scissor-canvas-dimensions.html +--min-version 1.0.3 gl-viewport-test.html +--min-version 1.0.3 many-draw-calls.html +more-than-65536-indices.html +multisample-corruption.html +--min-version 1.0.3 negative-one-index.html +out-of-bounds-index-buffers.html +--min-version 1.0.3 point-no-attributes.html +point-size.html +--min-version 1.0.4 point-specific-shader-variables.html +--min-version 1.0.3 point-with-gl-pointcoord-in-fragment-shader.html +--min-version 1.0.3 polygon-offset.html +--min-version 1.0.2 simple.html +triangle.html +line-loop-tri-fan.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/clipping-wide-points.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/clipping-wide-points.html new file mode 100644 index 00000000000..fcc1c7a5895 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/clipping-wide-points.html @@ -0,0 +1,49 @@ + + + + + +Clipping wide points test + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/culling.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/culling.html new file mode 100644 index 00000000000..8f6a8ffaa93 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/culling.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/default-texture-draw-bug.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/default-texture-draw-bug.html new file mode 100644 index 00000000000..abdfb5123e3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/default-texture-draw-bug.html @@ -0,0 +1,92 @@ + + + + + +WebGL Default Texture Draw Bug Conformance Tests + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/draw-arrays-out-of-bounds.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/draw-arrays-out-of-bounds.html new file mode 100644 index 00000000000..515649c8a2b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/draw-arrays-out-of-bounds.html @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/draw-elements-out-of-bounds.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/draw-elements-out-of-bounds.html new file mode 100644 index 00000000000..1e8d3d5d08d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/draw-elements-out-of-bounds.html @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/draw-with-changing-start-vertex-bug.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/draw-with-changing-start-vertex-bug.html new file mode 100644 index 00000000000..9fc8fa01b62 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/draw-with-changing-start-vertex-bug.html @@ -0,0 +1,135 @@ + + + + + + +Draw with changing start vertex test + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/framebuffer-switch.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/framebuffer-switch.html new file mode 100644 index 00000000000..943f571b3b1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/framebuffer-switch.html @@ -0,0 +1,113 @@ + + + + + + +WebGL framebuffer switching conformance test. + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/framebuffer-texture-switch.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/framebuffer-texture-switch.html new file mode 100644 index 00000000000..5b677f79ad9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/framebuffer-texture-switch.html @@ -0,0 +1,109 @@ + + + + + + +WebGL framebuffer texture attachment switching conformance test. + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-clear.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-clear.html new file mode 100644 index 00000000000..30bbe8d4239 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-clear.html @@ -0,0 +1,90 @@ + + + + + + +WebGL clear conformance test. + + + + + + + + +
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-drawarrays.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-drawarrays.html new file mode 100644 index 00000000000..23bf439a7a4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-drawarrays.html @@ -0,0 +1,105 @@ + + + + + + +WebGL drawArrays Test + + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-drawelements.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-drawelements.html new file mode 100644 index 00000000000..3afe6774c56 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-drawelements.html @@ -0,0 +1,120 @@ + + + + + + +WebGL drawElements Test + + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-scissor-canvas-dimensions.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-scissor-canvas-dimensions.html new file mode 100644 index 00000000000..7bba50fb3fb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-scissor-canvas-dimensions.html @@ -0,0 +1,101 @@ + + + + + + +WebGL Scissor Canvas Dimensions Test + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-scissor-fbo-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-scissor-fbo-test.html new file mode 100644 index 00000000000..ae9244c4233 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-scissor-fbo-test.html @@ -0,0 +1,133 @@ + + + + + + +WebGL Scissor FBO Test + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-scissor-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-scissor-test.html new file mode 100644 index 00000000000..a6376f8e2e3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-scissor-test.html @@ -0,0 +1,118 @@ + + + + + + +WebGL Scissor Test + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-viewport-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-viewport-test.html new file mode 100644 index 00000000000..43401fbe73a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/gl-viewport-test.html @@ -0,0 +1,135 @@ + + + + + + +WebGL Viewport Test + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/line-loop-tri-fan.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/line-loop-tri-fan.html new file mode 100644 index 00000000000..c037f033b77 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/line-loop-tri-fan.html @@ -0,0 +1,252 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/many-draw-calls.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/many-draw-calls.html new file mode 100644 index 00000000000..634229b6ef7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/many-draw-calls.html @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + +
+ +
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/more-than-65536-indices.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/more-than-65536-indices.html new file mode 100644 index 00000000000..15e8391600c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/more-than-65536-indices.html @@ -0,0 +1,146 @@ + + + + + + +WebGL More than 65536 indices. + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/multisample-corruption.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/multisample-corruption.html new file mode 100644 index 00000000000..d3d25e0a876 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/multisample-corruption.html @@ -0,0 +1,62 @@ + + + + + + +WebGL Multisample Renderbuffer Corruption Test + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/negative-one-index.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/negative-one-index.html new file mode 100644 index 00000000000..866f4f4ed67 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/negative-one-index.html @@ -0,0 +1,121 @@ + + + + + + +-1 Index Rendering Test + + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/out-of-bounds-index-buffers.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/out-of-bounds-index-buffers.html new file mode 100644 index 00000000000..315bb0981b8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/out-of-bounds-index-buffers.html @@ -0,0 +1,158 @@ + + + + + + + + + + +WebGL Out-of-Bounds Index Buffer Conformance Test + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-no-attributes.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-no-attributes.html new file mode 100644 index 00000000000..40ba90cee41 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-no-attributes.html @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-size.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-size.html new file mode 100644 index 00000000000..dc077445590 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-size.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-specific-shader-variables.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-specific-shader-variables.html new file mode 100644 index 00000000000..55e9432efc4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-specific-shader-variables.html @@ -0,0 +1,187 @@ + + + + + + +Point-specific shader variables test + + + + + + + + +
+
+ + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html new file mode 100644 index 00000000000..d5322ebb65d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html @@ -0,0 +1,142 @@ + + + + + + +WebGL Point with gl_PointCoord in Fragment Shader Test + + + + + + + +
+ +
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/polygon-offset.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/polygon-offset.html new file mode 100644 index 00000000000..ce644fe11c2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/polygon-offset.html @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/simple.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/simple.html new file mode 100644 index 00000000000..449250b16c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/simple.html @@ -0,0 +1,100 @@ + + + + + + +Simple Rendering Test + + + + + + + + +There is supposed to be an example drawing here, but it's not important. + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/triangle.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/triangle.html new file mode 100644 index 00000000000..4f69ab020c5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/rendering/triangle.html @@ -0,0 +1,96 @@ + + + + + + +Rendering Test + + + + + + + + +There is supposed to be an example drawing here, but it's not important. + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/00_test_list.txt new file mode 100644 index 00000000000..a76c2f09fba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/00_test_list.txt @@ -0,0 +1,8 @@ +gl-enable-enum-test.html +--max-version 1.9.9 gl-enum-tests.html +gl-get-calls.html +gl-geterror.html +--max-version 1.9.9 gl-getstring.html +--min-version 1.0.4 gl-initial-state.html +--max-version 1.9.9 gl-object-get-calls.html +--min-version 1.0.3 state-uneffected-after-compositing.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/diffs.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/diffs.txt new file mode 100644 index 00000000000..24a17204fe8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/diffs.txt @@ -0,0 +1,69 @@ +4c4 +< ** Copyright (c) 2012 The Khronos Group Inc. +--- +> ** Copyright (c) 2015 The Khronos Group Inc. +34c34 +< +--- +> +45,62c45 +< function sizeInBytes(type) { +< switch (type) { +< case gl.BYTE: +< case gl.UNSIGNED_BYTE: +< return 1; +< case gl.SHORT: +< case gl.UNSIGNED_SHORT: +< return 2; +< case gl.INT: +< case gl.UNSIGNED_INT: +< case gl.FLOAT: +< return 4; +< default: +< throw "unknown type"; +< } +< } +< +< var gl = wtu.create3DContext(); +--- +> var gl = wtu.create3DContext(null, null, 2); +191a175,178 +> var validArray = new Array(gl.COLOR_ATTACHMENT0, gl.DEPTH_ATTACHMENT, gl.STENCIL_ATTACHMENT, gl.DEPTH_STENCIL_ATTACHMENT); +> for (var ii = 1; ii < gl.getParameter(gl.MAX_COLOR_ATTACHMENTS); ++ii) { +> validArray[validArray.length] = gl.COLOR_ATTACHMENT0 + ii; +> } +195,199c182 +< [ gl.COLOR_ATTACHMENT0, +< gl.DEPTH_ATTACHMENT, +< gl.STENCIL_ATTACHMENT, +< gl.DEPTH_STENCIL_ATTACHMENT +< ], +--- +> validArray, +257a241 +> gl.RENDERBUFFER_SAMPLES, +325c309 +< var boolProgram = wtu.loadProgramFromFile(gl, "../resources/boolUniformShader.vert", "../resources/noopUniformShader.frag"); +--- +> var boolProgram = wtu.loadProgramFromFile(gl, "../../conformance/resources/boolUniformShader.vert", "../../conformance/resources/noopUniformShader.frag"); +342c326 +< var intProgram = wtu.loadProgramFromFile(gl, "../resources/intUniformShader.vert", "../resources/noopUniformShader.frag"); +--- +> var intProgram = wtu.loadProgramFromFile(gl, "../../conformance/resources/intUniformShader.vert", "../../conformance/resources/noopUniformShader.frag"); +359c343 +< var floatProgram = wtu.loadProgramFromFile(gl, "../resources/floatUniformShader.vert", "../resources/noopUniformShader.frag"); +--- +> var floatProgram = wtu.loadProgramFromFile(gl, "../../conformance/resources/floatUniformShader.vert", "../../conformance/resources/noopUniformShader.frag"); +376c360 +< var samplerProgram = wtu.loadProgramFromFile(gl, "../resources/noopUniformShader.vert", "../resources/samplerUniformShader.frag"); +--- +> var samplerProgram = wtu.loadProgramFromFile(gl, "../../conformance/resources/noopUniformShader.vert", "../../conformance/resources/samplerUniformShader.frag"); +387c371 +< var matProgram = wtu.loadProgramFromFile(gl, "../resources/matUniformShader.vert", "../resources/noopUniformShader.frag"); +--- +> var matProgram = wtu.loadProgramFromFile(gl, "../../conformance/resources/matUniformShader.vert", "../../conformance/resources/noopUniformShader.frag"); +438c422,423 +< gl.CURRENT_VERTEX_ATTRIB +--- +> gl.CURRENT_VERTEX_ATTRIB, +> gl.VERTEX_ATTRIB_ARRAY_DIVISOR diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-enable-enum-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-enable-enum-test.html new file mode 100644 index 00000000000..20f1f34735e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-enable-enum-test.html @@ -0,0 +1,163 @@ + + + + + + +WebGL gl.ENABLE enums Conformance Tests + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-enum-tests.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-enum-tests.html new file mode 100644 index 00000000000..adfd447bd22 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-enum-tests.html @@ -0,0 +1,52 @@ + + + + + + +WebGL gl enums Conformance Tests + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-get-calls.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-get-calls.html new file mode 100644 index 00000000000..aecc8abda54 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-get-calls.html @@ -0,0 +1,221 @@ + + + + + + +WebGL gl calls Conformance Tests + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-geterror.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-geterror.html new file mode 100644 index 00000000000..6a7013de2d5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-geterror.html @@ -0,0 +1,101 @@ + + + + + + +WebGL get error conformance test. + + + + + + + + + +
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-getstring.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-getstring.html new file mode 100644 index 00000000000..1d533f35c44 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-getstring.html @@ -0,0 +1,83 @@ + + + + + + +WebGL gl.getParameter Strings Conformance Tests + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-initial-state.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-initial-state.html new file mode 100644 index 00000000000..f22b4485d52 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-initial-state.html @@ -0,0 +1,81 @@ + + + + + + +WebGL gl.getParameter initial values Tests + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-object-get-calls.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-object-get-calls.html new file mode 100644 index 00000000000..eb79155c535 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/gl-object-get-calls.html @@ -0,0 +1,49 @@ + + + + + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/state-uneffected-after-compositing.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/state-uneffected-after-compositing.html new file mode 100644 index 00000000000..1cee75591f9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/state/state-uneffected-after-compositing.html @@ -0,0 +1,109 @@ + + + + + + +WebGL: Check that state is not lost by compositing + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/00_test_list.txt new file mode 100644 index 00000000000..c6041ff82f4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/00_test_list.txt @@ -0,0 +1,14 @@ +misc/00_test_list.txt +canvas/00_test_list.txt +--min-version 1.0.4 canvas_sub_rectangle/00_test_list.txt +image/00_test_list.txt +image_data/00_test_list.txt +--min-version 1.0.4 svg_image/00_test_list.txt +video/00_test_list.txt +webgl_canvas/00_test_list.txt +image_bitmap_from_image_data/00_test_list.txt +image_bitmap_from_image/00_test_list.txt +image_bitmap_from_video/00_test_list.txt +image_bitmap_from_canvas/00_test_list.txt +image_bitmap_from_blob/00_test_list.txt +image_bitmap_from_image_bitmap/00_test_list.txt diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/00_test_list.txt new file mode 100644 index 00000000000..07f29f64063 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/00_test_list.txt @@ -0,0 +1,5 @@ +tex-2d-rgb-rgb-unsigned_byte.html +tex-2d-rgb-rgb-unsigned_short_5_6_5.html +tex-2d-rgba-rgba-unsigned_byte.html +tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgb-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgb-rgb-unsigned_byte.html new file mode 100644 index 00000000000..d30e000328a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgb-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgb-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgb-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..1f57fc6c1c2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgb-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgba-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgba-rgba-unsigned_byte.html new file mode 100644 index 00000000000..776bb078780 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgba-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..3983e4c5b61 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..7f775b45b6d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/00_test_list.txt new file mode 100644 index 00000000000..07f29f64063 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/00_test_list.txt @@ -0,0 +1,5 @@ +tex-2d-rgb-rgb-unsigned_byte.html +tex-2d-rgb-rgb-unsigned_short_5_6_5.html +tex-2d-rgba-rgba-unsigned_byte.html +tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgb-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgb-rgb-unsigned_byte.html new file mode 100644 index 00000000000..e8098b780df --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgb-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgb-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgb-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..7f7d237cd97 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgb-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgba-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgba-rgba-unsigned_byte.html new file mode 100644 index 00000000000..14bb77cea12 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgba-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..5f3a6c3ccc8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..698e65527c9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/canvas_sub_rectangle/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/00_test_list.txt new file mode 100644 index 00000000000..07f29f64063 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/00_test_list.txt @@ -0,0 +1,5 @@ +tex-2d-rgb-rgb-unsigned_byte.html +tex-2d-rgb-rgb-unsigned_short_5_6_5.html +tex-2d-rgba-rgba-unsigned_byte.html +tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgb-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgb-rgb-unsigned_byte.html new file mode 100644 index 00000000000..b5ce8debc4e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgb-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgb-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgb-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..62cd7f700a8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgb-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgba-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgba-rgba-unsigned_byte.html new file mode 100644 index 00000000000..36b9d364c0e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgba-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..e50da1cf82e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..a8bd24517b5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/00_test_list.txt new file mode 100644 index 00000000000..07f29f64063 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/00_test_list.txt @@ -0,0 +1,5 @@ +tex-2d-rgb-rgb-unsigned_byte.html +tex-2d-rgb-rgb-unsigned_short_5_6_5.html +tex-2d-rgba-rgba-unsigned_byte.html +tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgb-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgb-rgb-unsigned_byte.html new file mode 100644 index 00000000000..467dff857a3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgb-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgb-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgb-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..7753b3ef16c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgb-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgba-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgba-rgba-unsigned_byte.html new file mode 100644 index 00000000000..053b6294014 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgba-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..9c0b07091ff --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..4ded4b80d7e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_blob/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/00_test_list.txt new file mode 100644 index 00000000000..07f29f64063 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/00_test_list.txt @@ -0,0 +1,5 @@ +tex-2d-rgb-rgb-unsigned_byte.html +tex-2d-rgb-rgb-unsigned_short_5_6_5.html +tex-2d-rgba-rgba-unsigned_byte.html +tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgb-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgb-rgb-unsigned_byte.html new file mode 100644 index 00000000000..13a590c0e8e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgb-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgb-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgb-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..42bbc63845b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgb-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgba-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgba-rgba-unsigned_byte.html new file mode 100644 index 00000000000..d6e9f60cfa7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgba-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..8a06d685dd3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..b8ae4443714 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_canvas/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/00_test_list.txt new file mode 100644 index 00000000000..07f29f64063 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/00_test_list.txt @@ -0,0 +1,5 @@ +tex-2d-rgb-rgb-unsigned_byte.html +tex-2d-rgb-rgb-unsigned_short_5_6_5.html +tex-2d-rgba-rgba-unsigned_byte.html +tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgb-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgb-rgb-unsigned_byte.html new file mode 100644 index 00000000000..c971e7170b2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgb-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgb-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgb-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..ad47a9acd76 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgb-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgba-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgba-rgba-unsigned_byte.html new file mode 100644 index 00000000000..ae66c8feb06 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgba-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..73a15f7a426 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..53c9097bea3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/00_test_list.txt new file mode 100644 index 00000000000..07f29f64063 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/00_test_list.txt @@ -0,0 +1,5 @@ +tex-2d-rgb-rgb-unsigned_byte.html +tex-2d-rgb-rgb-unsigned_short_5_6_5.html +tex-2d-rgba-rgba-unsigned_byte.html +tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgb-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgb-rgb-unsigned_byte.html new file mode 100644 index 00000000000..5229e03c75d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgb-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgb-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgb-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..ebbcaa7f648 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgb-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgba-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgba-rgba-unsigned_byte.html new file mode 100644 index 00000000000..2a2cf85cb62 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgba-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..f1bf50a2d76 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..1f1d8d3c28c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/00_test_list.txt new file mode 100644 index 00000000000..07f29f64063 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/00_test_list.txt @@ -0,0 +1,5 @@ +tex-2d-rgb-rgb-unsigned_byte.html +tex-2d-rgb-rgb-unsigned_short_5_6_5.html +tex-2d-rgba-rgba-unsigned_byte.html +tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgb-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgb-rgb-unsigned_byte.html new file mode 100644 index 00000000000..8467d4cb720 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgb-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgb-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgb-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..e77084fb803 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgb-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgba-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgba-rgba-unsigned_byte.html new file mode 100644 index 00000000000..409c14b1fc3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgba-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..516bf44285d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..0484830a8e4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_image_data/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/00_test_list.txt new file mode 100644 index 00000000000..07f29f64063 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/00_test_list.txt @@ -0,0 +1,5 @@ +tex-2d-rgb-rgb-unsigned_byte.html +tex-2d-rgb-rgb-unsigned_short_5_6_5.html +tex-2d-rgba-rgba-unsigned_byte.html +tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_byte.html new file mode 100644 index 00000000000..f9f73e65ef1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..d9eb3aba6b5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_byte.html new file mode 100644 index 00000000000..84bb44c449a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..0269475a2d4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..c6e95408b92 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/00_test_list.txt new file mode 100644 index 00000000000..07f29f64063 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/00_test_list.txt @@ -0,0 +1,5 @@ +tex-2d-rgb-rgb-unsigned_byte.html +tex-2d-rgb-rgb-unsigned_short_5_6_5.html +tex-2d-rgba-rgba-unsigned_byte.html +tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgb-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgb-rgb-unsigned_byte.html new file mode 100644 index 00000000000..453a5e39e6e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgb-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgb-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgb-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..27a8fbcbdb2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgb-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgba-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgba-rgba-unsigned_byte.html new file mode 100644 index 00000000000..165b33ee619 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgba-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..fd5b5095fa0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..60969818397 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/image_data/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/00_test_list.txt new file mode 100644 index 00000000000..505826de4a9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/00_test_list.txt @@ -0,0 +1,42 @@ +--max-version 1.9.9 compressed-tex-image.html +copy-tex-image-and-sub-image-2d.html +--min-version 1.0.2 copy-tex-image-2d-formats.html +--min-version 1.0.4 copy-tex-sub-image-2d-partial-texture.html +--min-version 1.0.4 cube-incomplete-fbo.html +--min-version 1.0.3 default-texture.html +--min-version 1.0.2 --max-version 1.9.9 gl-get-tex-parameter.html +gl-pixelstorei.html +gl-teximage.html +origin-clean-conformance.html +tex-image-and-sub-image-2d-with-array-buffer-view.html +tex-image-and-uniform-binding-bugs.html +--min-version 1.0.3 tex-image-canvas-corruption.html +--min-version 1.0.2 tex-image-webgl.html +tex-image-with-format-and-type.html +tex-image-with-invalid-data.html +--max-version 1.9.9 tex-input-validation.html +tex-sub-image-2d-bad-args.html +tex-sub-image-2d.html +texparameter-test.html +texture-active-bind-2.html +texture-active-bind.html +--min-version 1.0.2 texture-attachment-formats.html +--min-version 1.0.2 texture-clear.html +texture-complete.html +--min-version 1.0.3 texture-copying-feedback-loops.html +--min-version 1.0.4 texture-cube-as-fbo-attachment.html +--min-version 1.0.2 texture-hd-dpi.html +--min-version 1.0.2 --max-version 1.9.9 texture-formats-test.html +texture-mips.html +--max-version 1.9.9 texture-npot-video.html +--max-version 1.9.9 texture-npot.html +texture-size.html +texture-size-cube-maps.html +--min-version 1.0.2 texture-size-limit.html +--min-version 1.0.2 texture-sub-image-cube-maps.html +texture-transparent-pixels-initialized.html +--min-version 1.0.2 texture-upload-cube-maps.html +--min-version 1.0.3 texture-upload-size.html +--min-version 1.0.2 mipmap-fbo.html +--min-version 1.0.3 --max-version 1.9.9 texture-fakeblack.html +--min-version 1.0.3 texture-draw-with-2d-and-cube.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/compressed-tex-image.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/compressed-tex-image.html new file mode 100644 index 00000000000..af234ab2961 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/compressed-tex-image.html @@ -0,0 +1,84 @@ + + + + + + +WebGL CompressedTexImage and CompressedTexSubImage Tests + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/copy-tex-image-2d-formats.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/copy-tex-image-2d-formats.html new file mode 100644 index 00000000000..12b39e247a2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/copy-tex-image-2d-formats.html @@ -0,0 +1,196 @@ + + + + + +Verify copyTexImage2D follows format restictions + + + + + + + + +
+ + +
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/copy-tex-image-and-sub-image-2d.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/copy-tex-image-and-sub-image-2d.html new file mode 100644 index 00000000000..1088287724b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/copy-tex-image-and-sub-image-2d.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + +
+
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/copy-tex-sub-image-2d-partial-texture.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/copy-tex-sub-image-2d-partial-texture.html new file mode 100644 index 00000000000..e276f816dbf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/copy-tex-sub-image-2d-partial-texture.html @@ -0,0 +1,88 @@ + + + + + + +CopyTexSubImage2D partial destination texture test + + + + + + + +
+ +
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/cube-incomplete-fbo.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/cube-incomplete-fbo.html new file mode 100644 index 00000000000..709573a7fdd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/cube-incomplete-fbo.html @@ -0,0 +1,95 @@ + + + + + + +Test that cube incomplete textures can not be used as FBO attachments + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/default-texture.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/default-texture.html new file mode 100644 index 00000000000..d6a4dc610dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/default-texture.html @@ -0,0 +1,65 @@ + + + + + + +Tests texture access with no texture bound + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/gl-get-tex-parameter.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/gl-get-tex-parameter.html new file mode 100644 index 00000000000..10bef139804 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/gl-get-tex-parameter.html @@ -0,0 +1,50 @@ + + + + + + +WebGL getTexParameter test + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/gl-pixelstorei.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/gl-pixelstorei.html new file mode 100644 index 00000000000..8bcb4a99b2e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/gl-pixelstorei.html @@ -0,0 +1,119 @@ + + + + + + +WebGL pixelStorei Test + + + + + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/gl-teximage.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/gl-teximage.html new file mode 100644 index 00000000000..70430b45671 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/gl-teximage.html @@ -0,0 +1,429 @@ + + + + + + +WebGL texImage2D conformance test. + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/mipmap-fbo.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/mipmap-fbo.html new file mode 100644 index 00000000000..ee77670f9ad --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/mipmap-fbo.html @@ -0,0 +1,132 @@ + + + + + + +Test if mipmap incomplete textures can be used as FBO attachments, and mipmap generation on a texture filled by an FBO works correctly + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/origin-clean-conformance.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/origin-clean-conformance.html new file mode 100644 index 00000000000..ed55a00b797 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/origin-clean-conformance.html @@ -0,0 +1,151 @@ + + + + + + +WebGL Origin Restrictions Conformance Tests + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-and-sub-image-2d-with-array-buffer-view.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-and-sub-image-2d-with-array-buffer-view.html new file mode 100644 index 00000000000..a86dd78e48a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-and-sub-image-2d-with-array-buffer-view.html @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-and-uniform-binding-bugs.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-and-uniform-binding-bugs.html new file mode 100644 index 00000000000..a25de32723b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-and-uniform-binding-bugs.html @@ -0,0 +1,65 @@ + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-canvas-corruption.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-canvas-corruption.html new file mode 100644 index 00000000000..12fdb55e7aa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-canvas-corruption.html @@ -0,0 +1,74 @@ + + + + + + +Testing 3D canvas is usable after being used as texImage2D source + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-webgl.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-webgl.html new file mode 100644 index 00000000000..1320acef0ea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-webgl.html @@ -0,0 +1,101 @@ + + + + + + +WebGL texImage2D from WebGL conformance test. + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-with-format-and-type.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-with-format-and-type.html new file mode 100644 index 00000000000..0c128b3a005 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-with-format-and-type.html @@ -0,0 +1,745 @@ + + + + + + + + + + + + + + + + + +
+
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-with-invalid-data.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-with-invalid-data.html new file mode 100644 index 00000000000..a4c7ceef055 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-image-with-invalid-data.html @@ -0,0 +1,181 @@ + + + + + + texImage2D and texSubImage2D tests with invalid data + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-input-validation.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-input-validation.html new file mode 100644 index 00000000000..7950972e59c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-input-validation.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-sub-image-2d-bad-args.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-sub-image-2d-bad-args.html new file mode 100644 index 00000000000..e5f53d02acf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-sub-image-2d-bad-args.html @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-sub-image-2d.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-sub-image-2d.html new file mode 100644 index 00000000000..e42a6c17382 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/tex-sub-image-2d.html @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texparameter-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texparameter-test.html new file mode 100644 index 00000000000..1fa2021422b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texparameter-test.html @@ -0,0 +1,152 @@ + + + + + + +WebGL TexParameter conformance test. + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-active-bind-2.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-active-bind-2.html new file mode 100644 index 00000000000..e5fcd3dedca --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-active-bind-2.html @@ -0,0 +1,233 @@ + + + + + + +WebGL ActiveTexture BindTexture conformance test #2 + + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-active-bind.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-active-bind.html new file mode 100644 index 00000000000..c1e669e1f02 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-active-bind.html @@ -0,0 +1,142 @@ + + + + + + +WebGL ActiveTexture BindTexture conformance test. + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-attachment-formats.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-attachment-formats.html new file mode 100644 index 00000000000..652ebd9150a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-attachment-formats.html @@ -0,0 +1,199 @@ + + + + + + +WebGL Texture Attachment Format Conformance Tests + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-clear.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-clear.html new file mode 100644 index 00000000000..224bc53d6b5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-clear.html @@ -0,0 +1,66 @@ + + + + + + +WebGL texture clear conformance test. + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-complete.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-complete.html new file mode 100644 index 00000000000..49636f2d680 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-complete.html @@ -0,0 +1,86 @@ + + + + + + +WebGL "Texture Complete" texture conformance test. + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-copying-feedback-loops.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-copying-feedback-loops.html new file mode 100644 index 00000000000..7a0379aa09a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-copying-feedback-loops.html @@ -0,0 +1,105 @@ + + + + + + +WebGL Texture Copying Feedback Loops Test + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-cube-as-fbo-attachment.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-cube-as-fbo-attachment.html new file mode 100644 index 00000000000..ada472f9166 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-cube-as-fbo-attachment.html @@ -0,0 +1,88 @@ + + + + + + +WebGL texture cube as FBO color attachment + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-draw-with-2d-and-cube.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-draw-with-2d-and-cube.html new file mode 100644 index 00000000000..ae5c5cade8d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-draw-with-2d-and-cube.html @@ -0,0 +1,126 @@ + + + + + + +WebGL ActiveTexture BindTexture conformance test. + + + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-fakeblack.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-fakeblack.html new file mode 100644 index 00000000000..aeb41c58441 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-fakeblack.html @@ -0,0 +1,117 @@ + + + + + + +Tests if fake black textures are corectly implemented on desktops + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-formats-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-formats-test.html new file mode 100644 index 00000000000..f741a7052ad --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-formats-test.html @@ -0,0 +1,289 @@ + + + + + + +WebGL Texture Format Conformance Tests + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-hd-dpi.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-hd-dpi.html new file mode 100644 index 00000000000..5f33be76e5f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-hd-dpi.html @@ -0,0 +1,140 @@ + + + + + + +WebGL HD-DPI issues texture conformance test. + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-mips.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-mips.html new file mode 100644 index 00000000000..ec2ac3e9247 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-mips.html @@ -0,0 +1,320 @@ + + + + + + +WebGL texture mips conformance test. + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-npot-video.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-npot-video.html new file mode 100644 index 00000000000..67d5e192e5a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-npot-video.html @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-npot.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-npot.html new file mode 100644 index 00000000000..c6878350d94 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-npot.html @@ -0,0 +1,328 @@ + + + + + + +WebGL Non-Power of 2 texture conformance test. + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-size-cube-maps.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-size-cube-maps.html new file mode 100644 index 00000000000..e2525ab611f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-size-cube-maps.html @@ -0,0 +1,354 @@ + + + + + + +WebGL texture size cube map conformance test. + + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-size-limit.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-size-limit.html new file mode 100644 index 00000000000..ec527b6068d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-size-limit.html @@ -0,0 +1,173 @@ + + + + + + +WebGL texture size limit conformance test. + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-size.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-size.html new file mode 100644 index 00000000000..3a752d8087d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-size.html @@ -0,0 +1,236 @@ + + + + + + +WebGL texture size conformance test. + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-sub-image-cube-maps.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-sub-image-cube-maps.html new file mode 100644 index 00000000000..e2fb5117959 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-sub-image-cube-maps.html @@ -0,0 +1,339 @@ + + + + + + +WebGL texture texSubImage2Ds cube map conformance test. + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-transparent-pixels-initialized.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-transparent-pixels-initialized.html new file mode 100644 index 00000000000..6e8eb796d74 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-transparent-pixels-initialized.html @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + +
+
+ + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-upload-cube-maps.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-upload-cube-maps.html new file mode 100644 index 00000000000..26d79dcd6dd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-upload-cube-maps.html @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-upload-size.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-upload-size.html new file mode 100644 index 00000000000..59934e4ede1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/misc/texture-upload-size.html @@ -0,0 +1,171 @@ + + + + + + +WebGL texture upload size conformance test + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/00_test_list.txt new file mode 100644 index 00000000000..07f29f64063 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/00_test_list.txt @@ -0,0 +1,5 @@ +tex-2d-rgb-rgb-unsigned_byte.html +tex-2d-rgb-rgb-unsigned_short_5_6_5.html +tex-2d-rgba-rgba-unsigned_byte.html +tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgb-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgb-rgb-unsigned_byte.html new file mode 100644 index 00000000000..447f8e63920 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgb-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgb-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgb-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..d3dc20664ff --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgb-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgba-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgba-rgba-unsigned_byte.html new file mode 100644 index 00000000000..ebf6f92c6ea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgba-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..a4109811fc9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..51cc1f30e49 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/svg_image/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/00_test_list.txt new file mode 100644 index 00000000000..07f29f64063 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/00_test_list.txt @@ -0,0 +1,5 @@ +tex-2d-rgb-rgb-unsigned_byte.html +tex-2d-rgb-rgb-unsigned_short_5_6_5.html +tex-2d-rgba-rgba-unsigned_byte.html +tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgb-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgb-rgb-unsigned_byte.html new file mode 100644 index 00000000000..099fb7fea8e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgb-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..65094b1fabc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgba-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgba-rgba-unsigned_byte.html new file mode 100644 index 00000000000..91f6021a572 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgba-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..507bd8bc5ae --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..7fc58df9da7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/00_test_list.txt new file mode 100644 index 00000000000..07f29f64063 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/00_test_list.txt @@ -0,0 +1,5 @@ +tex-2d-rgb-rgb-unsigned_byte.html +tex-2d-rgb-rgb-unsigned_short_5_6_5.html +tex-2d-rgba-rgba-unsigned_byte.html +tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgb-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgb-rgb-unsigned_byte.html new file mode 100644 index 00000000000..368e0d1a896 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgb-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgb-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgb-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..54e3760c331 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgb-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgba-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgba-rgba-unsigned_byte.html new file mode 100644 index 00000000000..0078e3ac5ac --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgba-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..0dc135ba7da --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..d7c1de6f48a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/textures/webgl_canvas/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/00_test_list.txt new file mode 100644 index 00000000000..732aad646c6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/00_test_list.txt @@ -0,0 +1,7 @@ +array-buffer-crash.html +array-buffer-view-crash.html +array-unit-tests.html +data-view-crash.html +data-view-test.html +--min-version 1.0.2 typed-arrays-in-workers.html +--min-version 1.0.3 array-large-array-tests.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-buffer-crash.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-buffer-crash.html new file mode 100644 index 00000000000..6899aa7c7de --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-buffer-crash.html @@ -0,0 +1,63 @@ + + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-buffer-view-crash.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-buffer-view-crash.html new file mode 100644 index 00000000000..19057e8bb9b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-buffer-view-crash.html @@ -0,0 +1,62 @@ + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-large-array-tests.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-large-array-tests.html new file mode 100644 index 00000000000..d008f73133b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-large-array-tests.html @@ -0,0 +1,104 @@ + + + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-unit-tests.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-unit-tests.html new file mode 100644 index 00000000000..01e31567c63 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/array-unit-tests.html @@ -0,0 +1,1126 @@ + + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/data-view-crash.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/data-view-crash.html new file mode 100644 index 00000000000..82cca1bc037 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/data-view-crash.html @@ -0,0 +1,56 @@ + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/data-view-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/data-view-test.html new file mode 100644 index 00000000000..12918504e9f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/data-view-test.html @@ -0,0 +1,444 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/typed-arrays-in-workers.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/typed-arrays-in-workers.html new file mode 100644 index 00000000000..880a3e4ad3e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/typedarrays/typed-arrays-in-workers.html @@ -0,0 +1,280 @@ + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/00_test_list.txt new file mode 100644 index 00000000000..008515acba1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/00_test_list.txt @@ -0,0 +1,12 @@ +gl-uniform-arrays.html +# This test is no longer valid with the new packing restrictions +#--min-version 1.0.02 gl-uniform-unused-array-elements-get-truncated.html +gl-uniform-bool.html +gl-uniformmatrix4fv.html +gl-unknown-uniform.html +null-uniform-location.html +--min-version 1.0.2 out-of-bounds-uniform-array-access.html +--min-version 1.0.2 uniform-default-values.html +--min-version 1.0.3 uniform-values-per-program.html +uniform-location.html +uniform-samplers-test.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-uniform-arrays.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-uniform-arrays.html new file mode 100644 index 00000000000..c50da35ca98 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-uniform-arrays.html @@ -0,0 +1,512 @@ + + + + + + +WebGL uniform array Conformance Tests + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-uniform-bool.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-uniform-bool.html new file mode 100644 index 00000000000..18b76e70d20 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-uniform-bool.html @@ -0,0 +1,82 @@ + + + + + + +WebGL uniformMatrix Conformance Tests + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-uniformmatrix4fv.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-uniformmatrix4fv.html new file mode 100644 index 00000000000..2305fcb5eec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-uniformmatrix4fv.html @@ -0,0 +1,112 @@ + + + + + + +WebGL uniformMatrix Conformance Tests + + + + + + + +
+
+ + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-unknown-uniform.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-unknown-uniform.html new file mode 100644 index 00000000000..df24622756d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/gl-unknown-uniform.html @@ -0,0 +1,90 @@ + + + + + + +WebGL Unknown Uniform Conformance Test + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/null-uniform-location.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/null-uniform-location.html new file mode 100644 index 00000000000..fd84df54d74 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/null-uniform-location.html @@ -0,0 +1,104 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/out-of-bounds-uniform-array-access.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/out-of-bounds-uniform-array-access.html new file mode 100644 index 00000000000..6963b053b79 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/out-of-bounds-uniform-array-access.html @@ -0,0 +1,191 @@ + + + + + + +WebGL out of bounds uniform array access. + + + + + + + +
+ + +
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-default-values.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-default-values.html new file mode 100644 index 00000000000..7d35877bd09 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-default-values.html @@ -0,0 +1,362 @@ + + + + + + +WebGL uniform default values + + + + + + + + +
+
+ + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-location.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-location.html new file mode 100644 index 00000000000..f7225dd1318 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-location.html @@ -0,0 +1,117 @@ + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-samplers-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-samplers-test.html new file mode 100644 index 00000000000..8ecb7dc9fa6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-samplers-test.html @@ -0,0 +1,134 @@ + + + + + + +WebGL sampler uniforms conformance test. + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-values-per-program.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-values-per-program.html new file mode 100644 index 00000000000..112bd525bdf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance/uniforms/uniform-values-per-program.html @@ -0,0 +1,202 @@ + + + + + + +WebGL uniform values are per program conformance test. + + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/00_test_list.txt new file mode 100644 index 00000000000..ecea143d795 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/00_test_list.txt @@ -0,0 +1,17 @@ +attribs/00_test_list.txt +buffers/00_test_list.txt +context/00_test_list.txt +extensions/00_test_list.txt +glsl3/00_test_list.txt +misc/00_test_list.txt +programs/00_test_list.txt +query/00_test_list.txt +reading/00_test_list.txt +renderbuffers/00_test_list.txt +rendering/00_test_list.txt +samplers/00_test_list.txt +state/00_test_list.txt +sync/00_test_list.txt +textures/00_test_list.txt +transform_feedback/00_test_list.txt +vertex_arrays/00_test_list.txt diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/00_test_list.txt new file mode 100644 index 00000000000..ae27d5e7c9d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/00_test_list.txt @@ -0,0 +1,4 @@ +gl-vertex-attrib.html +gl-vertex-attrib-i-render.html +gl-vertexattribipointer.html +gl-vertexattribipointer-offsets.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertex-attrib-i-render.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertex-attrib-i-render.html new file mode 100644 index 00000000000..b5df6d5ba4a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertex-attrib-i-render.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertex-attrib.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertex-attrib.html new file mode 100644 index 00000000000..5d5508122fe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertex-attrib.html @@ -0,0 +1,51 @@ + + + + + + +WebGL vertexAttrib Conformance Tests + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertexattribipointer-offsets.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertexattribipointer-offsets.html new file mode 100644 index 00000000000..5f524c64b05 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertexattribipointer-offsets.html @@ -0,0 +1,177 @@ + + + + + + +vertexAttribIPointer offsets tests + + + + + + + + +There is supposed to be an example drawing here, but it's not important. + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertexattribipointer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertexattribipointer.html new file mode 100644 index 00000000000..789d4bd741a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/attribs/gl-vertexattribipointer.html @@ -0,0 +1,149 @@ + + + + + + +WebGL vertexAttribIPointer Conformance Tests + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/00_test_list.txt new file mode 100644 index 00000000000..96921fbea91 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/00_test_list.txt @@ -0,0 +1,9 @@ +bound-buffer-size-change-test.html +buffer-copying-contents.html +buffer-copying-restrictions.html +buffer-data-and-buffer-sub-data-sub-source.html +buffer-type-restrictions.html +buffer-overflow-test.html +get-buffer-sub-data.html +one-large-uniform-buffer.html +uniform-buffers.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/bound-buffer-size-change-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/bound-buffer-size-change-test.html new file mode 100644 index 00000000000..e205a6e2395 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/bound-buffer-size-change-test.html @@ -0,0 +1,142 @@ + + + + + + +WebGL buffer size change test for bindBufferBase/bindBufferRange + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-copying-contents.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-copying-contents.html new file mode 100644 index 00000000000..827b95f1295 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-copying-contents.html @@ -0,0 +1,199 @@ + + + + + + +WebGL buffer copying contents test. + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-copying-restrictions.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-copying-restrictions.html new file mode 100644 index 00000000000..942f60cf2b8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-copying-restrictions.html @@ -0,0 +1,125 @@ + + + + + + +WebGL buffer copying restrictions test. + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-data-and-buffer-sub-data-sub-source.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-data-and-buffer-sub-data-sub-source.html new file mode 100644 index 00000000000..caa890e1e2e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-data-and-buffer-sub-data-sub-source.html @@ -0,0 +1,206 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-overflow-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-overflow-test.html new file mode 100644 index 00000000000..0bef3bc3abb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-overflow-test.html @@ -0,0 +1,74 @@ + + + + + + +WebGL buffer overflow test for bindBufferRange + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-type-restrictions.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-type-restrictions.html new file mode 100644 index 00000000000..ef29a11cae4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/buffer-type-restrictions.html @@ -0,0 +1,143 @@ + + + + + + +WebGL buffer binding restrictions test. + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/get-buffer-sub-data.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/get-buffer-sub-data.html new file mode 100644 index 00000000000..224ed861fa9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/get-buffer-sub-data.html @@ -0,0 +1,178 @@ + + + + + + +WebGL getBufferSubData test. + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/one-large-uniform-buffer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/one-large-uniform-buffer.html new file mode 100644 index 00000000000..0d626b028ad --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/one-large-uniform-buffer.html @@ -0,0 +1,154 @@ + + + + + + +WebGL Uniform Buffers Conformance Tests + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/uniform-buffers.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/uniform-buffers.html new file mode 100644 index 00000000000..a7f8b60785c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/buffers/uniform-buffers.html @@ -0,0 +1,430 @@ + + + + + + +WebGL Uniform Buffers Conformance Tests + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/00_test_list.txt new file mode 100644 index 00000000000..e7cf36a35c9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/00_test_list.txt @@ -0,0 +1,4 @@ +constants-and-properties-2.html +context-attributes-depth-stencil-antialias-obeyed.html +context-type-test-2.html +methods-2.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/constants-and-properties-2.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/constants-and-properties-2.html new file mode 100644 index 00000000000..ba530bf3ec7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/constants-and-properties-2.html @@ -0,0 +1,857 @@ + + + + + +WebGL2 Constants and Properties Test + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/context-attributes-depth-stencil-antialias-obeyed.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/context-attributes-depth-stencil-antialias-obeyed.html new file mode 100644 index 00000000000..5476f4e3a68 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/context-attributes-depth-stencil-antialias-obeyed.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/context-type-test-2.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/context-type-test-2.html new file mode 100644 index 00000000000..d755b7ee00b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/context-type-test-2.html @@ -0,0 +1,74 @@ + + + + + + +WebGL2 Canvas Conformance Tests + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/methods-2.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/methods-2.html new file mode 100644 index 00000000000..f72c3d05c34 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/context/methods-2.html @@ -0,0 +1,331 @@ + + + + + +WebGL2 Methods Test + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/00_test_list.txt new file mode 100644 index 00000000000..7ce7c8b57fe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/00_test_list.txt @@ -0,0 +1,4 @@ +ext-color-buffer-float.html +ext-disjoint-timer-query-webgl2.html +promoted-extensions.html +promoted-extensions-in-shaders.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/ext-color-buffer-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/ext-color-buffer-float.html new file mode 100644 index 00000000000..8f7eb0fe6b4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/ext-color-buffer-float.html @@ -0,0 +1,421 @@ + + + + + + +WebGL EXT_color_buffer_float Conformance Tests + + + + + + + +
+ +
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/ext-disjoint-timer-query-webgl2.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/ext-disjoint-timer-query-webgl2.html new file mode 100644 index 00000000000..9d2d9ee7541 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/ext-disjoint-timer-query-webgl2.html @@ -0,0 +1,337 @@ + + + + + + +WebGL 2 EXT_disjoint_timer_query_webgl2 Conformance Tests + + + + + + + +
+ +
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/promoted-extensions-in-shaders.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/promoted-extensions-in-shaders.html new file mode 100644 index 00000000000..54cb76aa7f4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/promoted-extensions-in-shaders.html @@ -0,0 +1,138 @@ + + + + + + +Extensions promoted to core should not be possible to use in shaders + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/promoted-extensions.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/promoted-extensions.html new file mode 100644 index 00000000000..f34045f86e6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/extensions/promoted-extensions.html @@ -0,0 +1,88 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/00_test_list.txt new file mode 100644 index 00000000000..6301ff5f2a4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/00_test_list.txt @@ -0,0 +1,39 @@ +array-as-return-value.html +array-assign.html +array-assign-constructor.html +array-complex-indexing.html +array-element-increment.html +array-equality.html +array-in-complex-expression.html +attrib-location-length-limits.html +bool-type-cast-bug-uint-ivec-uvec.html +compare-structs-containing-arrays.html +compound-assignment-type-combination.html +const-array-init.html +forbidden-operators.html +frag-depth.html +invalid-default-precision.html +invalid-invariant.html +loops-with-side-effects.html +misplaced-version-directive.html +--min-version 2.0.1 no-attribute-vertex-shader.html +sampler-no-precision.html +sequence-operator-returns-non-constant.html +shader-linking.html +shader-with-1024-character-define.html +shader-with-1024-character-identifier.frag.html +shader-with-1025-character-define.html +shader-with-1025-character-identifier.frag.html +shader-with-invalid-characters.html +shader-with-mis-matching-uniform-block.html +short-circuiting-in-loop-condition.html +texture-offset-out-of-range.html +--min-version 2.0.1 texture-offset-uniform-texture-coordinate.html +--min-version 2.0.1 tricky-loop-conditions.html +--min-version 2.0.1 unary-minus-operator-in-dynamic-loop.html +uniform-block-layouts.html +uniform-block-layout-match.html +uniform-location-length-limits.html +valid-invariant.html +vector-dynamic-indexing.html +--min-version 2.0.1 vector-dynamic-indexing-nv-driver-bug.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-as-return-value.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-as-return-value.html new file mode 100644 index 00000000000..085e682c7ef --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-as-return-value.html @@ -0,0 +1,173 @@ + + + + + + +GLSL array as return value test + + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-assign-constructor.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-assign-constructor.html new file mode 100644 index 00000000000..578fe44bfd6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-assign-constructor.html @@ -0,0 +1,131 @@ + + + + + + +GLSL array constructor assignment test + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-assign.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-assign.html new file mode 100644 index 00000000000..95a36a56bbe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-assign.html @@ -0,0 +1,116 @@ + + + + + + +GLSL array assignment test + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-complex-indexing.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-complex-indexing.html new file mode 100644 index 00000000000..84546e0787f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-complex-indexing.html @@ -0,0 +1,110 @@ + + + + + + +GLSL Indexing complex array expressions + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-element-increment.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-element-increment.html new file mode 100644 index 00000000000..b4d2dd18630 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-element-increment.html @@ -0,0 +1,154 @@ + + + + + + +GLSL initialized array element increment/decrement test + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-equality.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-equality.html new file mode 100644 index 00000000000..fb1059d4feb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-equality.html @@ -0,0 +1,108 @@ + + + + + + +GLSL array equality test + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-in-complex-expression.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-in-complex-expression.html new file mode 100644 index 00000000000..b7c457c0865 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/array-in-complex-expression.html @@ -0,0 +1,172 @@ + + + + + + +GLSL array in complex expression test + + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/attrib-location-length-limits.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/attrib-location-length-limits.html new file mode 100644 index 00000000000..521e6057d5e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/attrib-location-length-limits.html @@ -0,0 +1,112 @@ + + + + + + +WebGL attrib location length tests + + + + + + + + + +There is supposed to be an example drawing here, but it's not important. + +
Verify limits on the lengths of attribute locations per WebGL 2 spec "Maximum Uniform and Attribute Location Lengths"
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/bool-type-cast-bug-uint-ivec-uvec.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/bool-type-cast-bug-uint-ivec-uvec.html new file mode 100644 index 00000000000..07667b4c832 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/bool-type-cast-bug-uint-ivec-uvec.html @@ -0,0 +1,391 @@ + + + + + + +Verify uint(bool), ivec(bvec), and uvec(bvec) work correctly (Mac AMD driver bug) + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/compare-structs-containing-arrays.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/compare-structs-containing-arrays.html new file mode 100644 index 00000000000..09cb7cef78f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/compare-structs-containing-arrays.html @@ -0,0 +1,114 @@ + + + + + + +GLSL array equality test with structs containing arrays + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/compound-assignment-type-combination.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/compound-assignment-type-combination.html new file mode 100644 index 00000000000..493e317cd0e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/compound-assignment-type-combination.html @@ -0,0 +1,49 @@ + + + + + + +Result type should match the l-value type in compound assignment + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/const-array-init.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/const-array-init.html new file mode 100644 index 00000000000..df994deba79 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/const-array-init.html @@ -0,0 +1,121 @@ + + + + + + +Constant array initialization test + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/forbidden-operators.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/forbidden-operators.html new file mode 100644 index 00000000000..b0c011b92d4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/forbidden-operators.html @@ -0,0 +1,147 @@ + + + + + + +WebGL GLSL Conformance Tests - Unsupported variants of operators + + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/frag-depth.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/frag-depth.html new file mode 100644 index 00000000000..80c008f9a40 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/frag-depth.html @@ -0,0 +1,180 @@ + + + + + + +WebGL Frag Depth Conformance Tests + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/invalid-default-precision.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/invalid-default-precision.html new file mode 100644 index 00000000000..f033c400dd2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/invalid-default-precision.html @@ -0,0 +1,94 @@ + + + + + + +Default precision qualifiers should only work with int, float and sampler types + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/invalid-invariant.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/invalid-invariant.html new file mode 100644 index 00000000000..0fecfa70673 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/invalid-invariant.html @@ -0,0 +1,111 @@ + + + + + + +Negative tests for the use of the invariant qualifier and pragma + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/loops-with-side-effects.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/loops-with-side-effects.html new file mode 100644 index 00000000000..f74cf84d645 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/loops-with-side-effects.html @@ -0,0 +1,234 @@ + + + + + + +WebGL Loops and side-effects test + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/misplaced-version-directive.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/misplaced-version-directive.html new file mode 100644 index 00000000000..ac828d8ca4b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/misplaced-version-directive.html @@ -0,0 +1,134 @@ + + + + + + +#version directive should be on the very first line of a OpenGL ES Shading Language 3.00 shader + + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/no-attribute-vertex-shader.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/no-attribute-vertex-shader.html new file mode 100644 index 00000000000..172e456ef71 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/no-attribute-vertex-shader.html @@ -0,0 +1,86 @@ + + + + + + +Test no attribute vertex shaders + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/sampler-no-precision.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/sampler-no-precision.html new file mode 100644 index 00000000000..4512ccae842 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/sampler-no-precision.html @@ -0,0 +1,111 @@ + + + + + + +GLSL sampler with no precision qualifier test + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/sequence-operator-returns-non-constant.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/sequence-operator-returns-non-constant.html new file mode 100644 index 00000000000..14dc806e1af --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/sequence-operator-returns-non-constant.html @@ -0,0 +1,82 @@ + + + + + + +Sequence operator returns non-constant test + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-linking.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-linking.html new file mode 100644 index 00000000000..30b76f3fdf7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-linking.html @@ -0,0 +1,107 @@ + + + + + + +OpenGL ES Shading Language 1.00 and OpenGL ES Shading Language 3.00 shaders should not link with each other + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1024-character-define.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1024-character-define.html new file mode 100644 index 00000000000..e000b331b70 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1024-character-define.html @@ -0,0 +1,59 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1024-character-identifier.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1024-character-identifier.frag.html new file mode 100644 index 00000000000..2bf4d7ab561 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1024-character-identifier.frag.html @@ -0,0 +1,128 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1025-character-define.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1025-character-define.html new file mode 100644 index 00000000000..10f0d2c63e2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1025-character-define.html @@ -0,0 +1,59 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1025-character-identifier.frag.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1025-character-identifier.frag.html new file mode 100644 index 00000000000..2b432c93891 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-1025-character-identifier.frag.html @@ -0,0 +1,59 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-invalid-characters.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-invalid-characters.html new file mode 100644 index 00000000000..402a1ca8b6d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-invalid-characters.html @@ -0,0 +1,60 @@ + + + + + + +WebGL GLSL Conformance Tests + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-mis-matching-uniform-block.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-mis-matching-uniform-block.html new file mode 100644 index 00000000000..bd05a4f0e60 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/shader-with-mis-matching-uniform-block.html @@ -0,0 +1,82 @@ + + + + + + +GLSL mis-matching uniform block + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/short-circuiting-in-loop-condition.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/short-circuiting-in-loop-condition.html new file mode 100644 index 00000000000..03e2a6e77ff --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/short-circuiting-in-loop-condition.html @@ -0,0 +1,195 @@ + + + + + + +Short circuit in loop condition test + + + + + + + +
+
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/texture-offset-out-of-range.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/texture-offset-out-of-range.html new file mode 100644 index 00000000000..090e9122b63 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/texture-offset-out-of-range.html @@ -0,0 +1,129 @@ + + + + + + +GLSL out-of-range texture offset test + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/texture-offset-uniform-texture-coordinate.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/texture-offset-uniform-texture-coordinate.html new file mode 100644 index 00000000000..a8eea8c6767 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/texture-offset-uniform-texture-coordinate.html @@ -0,0 +1,193 @@ + + + + + + +GLSL texture offset with uniform texture coordinates test + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/tricky-loop-conditions.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/tricky-loop-conditions.html new file mode 100644 index 00000000000..eb01d6d1730 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/tricky-loop-conditions.html @@ -0,0 +1,350 @@ + + + + + + +GLSL tricky loop conditions and loop expressions + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/unary-minus-operator-in-dynamic-loop.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/unary-minus-operator-in-dynamic-loop.html new file mode 100644 index 00000000000..b5374e5808e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/unary-minus-operator-in-dynamic-loop.html @@ -0,0 +1,271 @@ + + + + + + + +Unary minus operator on int or uint variables in a dynamic loop in vertex shader should work + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/uniform-block-layout-match.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/uniform-block-layout-match.html new file mode 100644 index 00000000000..086dc687af6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/uniform-block-layout-match.html @@ -0,0 +1,80 @@ + + + + + + +WebGL2 Uniform Block Layout Behavior Testing + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/uniform-block-layouts.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/uniform-block-layouts.html new file mode 100644 index 00000000000..b0457cecb6b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/uniform-block-layouts.html @@ -0,0 +1,86 @@ + + + + + + +Disallowed uniform block layouts + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/uniform-location-length-limits.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/uniform-location-length-limits.html new file mode 100644 index 00000000000..a36e8aed84b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/uniform-location-length-limits.html @@ -0,0 +1,112 @@ + + + + + + +WebGL uniform location length tests + + + + + + + + + +There is supposed to be an example drawing here, but it's not important. + +
Verify limits on the lengths of uniform locations per WebGL 2 spec, "Maximum Uniform and Attribute Location Lengths".
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/valid-invariant.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/valid-invariant.html new file mode 100644 index 00000000000..087a6a6086d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/valid-invariant.html @@ -0,0 +1,118 @@ + + + + + + +Positive tests for the use of the invariant qualifier and pragma + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/vector-dynamic-indexing-nv-driver-bug.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/vector-dynamic-indexing-nv-driver-bug.html new file mode 100644 index 00000000000..c68b8521d9b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/vector-dynamic-indexing-nv-driver-bug.html @@ -0,0 +1,90 @@ + + + + + + +GLSL dynamic vector and matrix indexing test + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/vector-dynamic-indexing.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/vector-dynamic-indexing.html new file mode 100644 index 00000000000..1e2b2edc682 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/glsl3/vector-dynamic-indexing.html @@ -0,0 +1,380 @@ + + + + + + +GLSL dynamic vector and matrix indexing test + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/00_test_list.txt new file mode 100644 index 00000000000..d272e1a0395 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/00_test_list.txt @@ -0,0 +1,6 @@ +expando-loss-2.html +getextension-while-pbo-bound-stability.html +instanceof-test.html +object-deletion-behaviour-2.html +uninitialized-test-2.html +views-with-offsets.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/expando-loss-2.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/expando-loss-2.html new file mode 100644 index 00000000000..59600f45cd9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/expando-loss-2.html @@ -0,0 +1,307 @@ + + + + + + + + + + +WebGL 2 Object Expandos Conformance Test + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/getextension-while-pbo-bound-stability.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/getextension-while-pbo-bound-stability.html new file mode 100644 index 00000000000..607042f86e2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/getextension-while-pbo-bound-stability.html @@ -0,0 +1,80 @@ + + + + + + +WebGL2 getExtension while PBO bound stability conformance test. + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/instanceof-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/instanceof-test.html new file mode 100644 index 00000000000..ecbf1f59708 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/instanceof-test.html @@ -0,0 +1,67 @@ + + + + + + +WebGL instanceof test. + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/object-deletion-behaviour-2.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/object-deletion-behaviour-2.html new file mode 100644 index 00000000000..b834ccc76c6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/object-deletion-behaviour-2.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/uninitialized-test-2.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/uninitialized-test-2.html new file mode 100644 index 00000000000..35032221984 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/uninitialized-test-2.html @@ -0,0 +1,606 @@ + + + + + +WebGL 2 Uninitialized GL Resources Tests + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/views-with-offsets.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/views-with-offsets.html new file mode 100644 index 00000000000..18c7609cd8d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/misc/views-with-offsets.html @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/programs/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/programs/00_test_list.txt new file mode 100644 index 00000000000..4926d0bf9be --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/programs/00_test_list.txt @@ -0,0 +1 @@ +gl-get-frag-data-location.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/programs/gl-get-frag-data-location.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/programs/gl-get-frag-data-location.html new file mode 100644 index 00000000000..a5be9e7ced8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/programs/gl-get-frag-data-location.html @@ -0,0 +1,123 @@ + + + + + + +WebGL Conformance Tests: Verify getFragDataLocation + + + + + + + + +
+ +
+ + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/query/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/query/00_test_list.txt new file mode 100644 index 00000000000..c40921bf887 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/query/00_test_list.txt @@ -0,0 +1,2 @@ +occlusion-query.html +query.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/query/occlusion-query.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/query/occlusion-query.html new file mode 100644 index 00000000000..b3c71eb8b9e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/query/occlusion-query.html @@ -0,0 +1,160 @@ + + + + + + +WebGL Occlusion Query Conformance Tests + + + + + + + +
+ +
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/query/query.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/query/query.html new file mode 100644 index 00000000000..c12429c280e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/query/query.html @@ -0,0 +1,180 @@ + + + + + + +WebGL Query Conformance Tests + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/00_test_list.txt new file mode 100644 index 00000000000..d5fe8b664e2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/00_test_list.txt @@ -0,0 +1,5 @@ +--min-version 2.0.1 format-r11f-g11f-b10f.html +read-pixels-from-fbo-test.html +--min-version 2.0.1 read-pixels-from-rgb8-into-pbo-bug.html +read-pixels-into-pixel-pack-buffer.html +read-pixels-pack-parameters.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/format-r11f-g11f-b10f.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/format-r11f-g11f-b10f.html new file mode 100644 index 00000000000..cbdbfd09eba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/format-r11f-g11f-b10f.html @@ -0,0 +1,289 @@ + + + + + + +Test Format R11F_G11F_B10F + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-from-fbo-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-from-fbo-test.html new file mode 100644 index 00000000000..8b36fbe0346 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-from-fbo-test.html @@ -0,0 +1,665 @@ + + + + + + +WebGL 2 ReadPixels Test. + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-from-rgb8-into-pbo-bug.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-from-rgb8-into-pbo-bug.html new file mode 100644 index 00000000000..bf07c3c292a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-from-rgb8-into-pbo-bug.html @@ -0,0 +1,108 @@ + + + + + + +WebGL 2 Conformance Test: readPixels from RGB8 Buffer Into Pixel Pack Buffer. + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-into-pixel-pack-buffer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-into-pixel-pack-buffer.html new file mode 100644 index 00000000000..88bdff8564a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-into-pixel-pack-buffer.html @@ -0,0 +1,175 @@ + + + + + + +WebGL 2 Conformance Test: ReadPixels Into Pixel Pack Buffer. + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-pack-parameters.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-pack-parameters.html new file mode 100644 index 00000000000..201df4f9368 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/reading/read-pixels-pack-parameters.html @@ -0,0 +1,375 @@ + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/00_test_list.txt new file mode 100644 index 00000000000..6445c9d4844 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/00_test_list.txt @@ -0,0 +1,7 @@ +framebuffer-object-attachment.html +framebuffer-test.html +framebuffer-texture-layer.html +invalidate-framebuffer.html +multisampled-renderbuffer-initialization.html +--min-version 2.0.1 multisample-with-full-sample-counts.html +readbuffer.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-object-attachment.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-object-attachment.html new file mode 100644 index 00000000000..1b7ccd545a6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-object-attachment.html @@ -0,0 +1,429 @@ + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-test.html new file mode 100644 index 00000000000..6014f8169d9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-test.html @@ -0,0 +1,311 @@ + + + + + + +WebGL Framebuffer Test Against WebGL 2 + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-texture-layer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-texture-layer.html new file mode 100644 index 00000000000..dd7ad22adee --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-texture-layer.html @@ -0,0 +1,167 @@ + + + + + + +WebGL FramebufferTextureLayer Test + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/invalidate-framebuffer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/invalidate-framebuffer.html new file mode 100644 index 00000000000..7d5a36b98ba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/invalidate-framebuffer.html @@ -0,0 +1,175 @@ + + + + + + +Invalidate Framebuffer Against WebGL 2 + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/multisample-with-full-sample-counts.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/multisample-with-full-sample-counts.html new file mode 100644 index 00000000000..8dba5583b10 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/multisample-with-full-sample-counts.html @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/multisampled-renderbuffer-initialization.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/multisampled-renderbuffer-initialization.html new file mode 100644 index 00000000000..803ef043803 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/multisampled-renderbuffer-initialization.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/readbuffer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/readbuffer.html new file mode 100644 index 00000000000..e60d46f16dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/renderbuffers/readbuffer.html @@ -0,0 +1,197 @@ + + + + + + +Test readBuffer Against WebGL 2 + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/00_test_list.txt new file mode 100644 index 00000000000..5550a9422fa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/00_test_list.txt @@ -0,0 +1,25 @@ +attrib-type-match.html +blitframebuffer-filter-outofbounds.html +blitframebuffer-filter-srgb.html +blitframebuffer-multisampled-readbuffer.html +--min-version 2.0.1 blitframebuffer-outside-readbuffer.html +blitframebuffer-scissor-enabled.html +--min-version 2.0.1 blitframebuffer-size-overflow.html +--min-version 2.0.1 blitframebuffer-srgb-and-linear-drawbuffers.html +--min-version 2.0.1 blitframebuffer-stencil-only.html +blitframebuffer-test.html +canvas-resizing-with-pbo-bound.html +clear-func-buffer-type-match.html +--min-version 2.0.1 clear-srgb-color-buffer.html +--min-version 2.0.1 clipping-wide-points.html +draw-buffers.html +element-index-uint.html +framebuffer-completeness-unaffected.html +framebuffer-unsupported.html +--min-version 2.0.1 fs-color-type-mismatch-color-buffer-type.html +instanced-arrays.html +--min-version 2.0.1 instanced-rendering-bug.html +out-of-bounds-index-buffers-after-copying.html +--min-version 2.0.1 rendering-sampling-feedback-loop.html +rgb-format-support.html +uniform-block-buffer-size.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/attrib-type-match.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/attrib-type-match.html new file mode 100644 index 00000000000..2d0c9b3f428 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/attrib-type-match.html @@ -0,0 +1,584 @@ + + + + + + +WebGL Conformance Tests: Vertex Attribute Type Match + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-filter-outofbounds.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-filter-outofbounds.html new file mode 100644 index 00000000000..46fde584274 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-filter-outofbounds.html @@ -0,0 +1,205 @@ + + + + + + +WebGL BlitFramebuffer Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-filter-srgb.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-filter-srgb.html new file mode 100644 index 00000000000..9efdc8cd60a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-filter-srgb.html @@ -0,0 +1,185 @@ + + + + + + +WebGL BlitFramebuffer Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-multisampled-readbuffer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-multisampled-readbuffer.html new file mode 100644 index 00000000000..835bd0ac538 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-multisampled-readbuffer.html @@ -0,0 +1,136 @@ + + + + + + +WebGL BlitFramebuffer Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-outside-readbuffer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-outside-readbuffer.html new file mode 100644 index 00000000000..5f3bac0c01f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-outside-readbuffer.html @@ -0,0 +1,291 @@ + + + + + + +WebGL BlitFramebuffer Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-scissor-enabled.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-scissor-enabled.html new file mode 100644 index 00000000000..88a2fb21357 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-scissor-enabled.html @@ -0,0 +1,184 @@ + + + + + + +WebGL BlitFramebuffer Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-size-overflow.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-size-overflow.html new file mode 100644 index 00000000000..fca77e99995 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-size-overflow.html @@ -0,0 +1,109 @@ + + + + + + +WebGL BlitFramebuffer Tests + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-srgb-and-linear-drawbuffers.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-srgb-and-linear-drawbuffers.html new file mode 100644 index 00000000000..19b3b562321 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-srgb-and-linear-drawbuffers.html @@ -0,0 +1,231 @@ + + + + + + +WebGL BlitFramebuffer Tests + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-stencil-only.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-stencil-only.html new file mode 100644 index 00000000000..429efd80928 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-stencil-only.html @@ -0,0 +1,194 @@ + + + + + + +WebGL BlitFramebuffer Stencil-only Tests + + + + + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-test.html new file mode 100644 index 00000000000..b40a3f5784c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/blitframebuffer-test.html @@ -0,0 +1,344 @@ + + + + + + +WebGL BlitFramebuffer Tests + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/canvas-resizing-with-pbo-bound.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/canvas-resizing-with-pbo-bound.html new file mode 100644 index 00000000000..bb303081fc8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/canvas-resizing-with-pbo-bound.html @@ -0,0 +1,132 @@ + + + + + + +WebGL 2 Resizing With PBO Bound Test + + + + + + + +
+ + +
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/clear-func-buffer-type-match.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/clear-func-buffer-type-match.html new file mode 100644 index 00000000000..e8e6f8eeb05 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/clear-func-buffer-type-match.html @@ -0,0 +1,168 @@ + + + + + + +Test clear and clearBuffer functions have to match fbo's buffer format + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/clear-srgb-color-buffer.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/clear-srgb-color-buffer.html new file mode 100644 index 00000000000..a5b6945350b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/clear-srgb-color-buffer.html @@ -0,0 +1,111 @@ + + + + + + +Clear sRGB Color Buffer + + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/clipping-wide-points.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/clipping-wide-points.html new file mode 100644 index 00000000000..8213c8c34b7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/clipping-wide-points.html @@ -0,0 +1,49 @@ + + + + + +Clipping wide points test + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/draw-buffers.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/draw-buffers.html new file mode 100644 index 00000000000..22f256f3bfb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/draw-buffers.html @@ -0,0 +1,583 @@ + + + + + + +WebGL Draw Buffers Conformance Tests + + + + + + + +
+ +
+ + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/element-index-uint.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/element-index-uint.html new file mode 100644 index 00000000000..07358dcacd7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/element-index-uint.html @@ -0,0 +1,428 @@ + + + + + + +WebGL Uint element indices Conformance Tests + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/framebuffer-completeness-unaffected.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/framebuffer-completeness-unaffected.html new file mode 100644 index 00000000000..ede22e6e05d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/framebuffer-completeness-unaffected.html @@ -0,0 +1,115 @@ + + + + + + +Test drawBuffers, readBuffer, and fbo completeness + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/framebuffer-unsupported.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/framebuffer-unsupported.html new file mode 100644 index 00000000000..c082aa30a82 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/framebuffer-unsupported.html @@ -0,0 +1,157 @@ + + + + + + +WebGL FRAMEBUFFER_UNSUPPORTED Test + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/fs-color-type-mismatch-color-buffer-type.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/fs-color-type-mismatch-color-buffer-type.html new file mode 100644 index 00000000000..6d210c107a2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/fs-color-type-mismatch-color-buffer-type.html @@ -0,0 +1,192 @@ + + + + + + +The Color Types of Fragment Shader's Outputs Should Match The Data Types of Color Buffers + + + + + + + + +
+
+ + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/instanced-arrays.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/instanced-arrays.html new file mode 100644 index 00000000000..6b801abf5a1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/instanced-arrays.html @@ -0,0 +1,234 @@ + + + + + + +WebGL Instanced Arrays Conformance Tests + + + + + + + + +
+ +
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/instanced-rendering-bug.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/instanced-rendering-bug.html new file mode 100644 index 00000000000..e7a28dafad2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/instanced-rendering-bug.html @@ -0,0 +1,277 @@ + + + + + + +WebGL Instanced Arrays Conformance Tests + + + + + + + + +
+ +
+ + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/out-of-bounds-index-buffers-after-copying.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/out-of-bounds-index-buffers-after-copying.html new file mode 100644 index 00000000000..4f3d21c4b51 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/out-of-bounds-index-buffers-after-copying.html @@ -0,0 +1,209 @@ + + + + + + + + + + +WebGL Out-of-Bounds Index Buffer Caused by CopyBufferSubData Conformance Test + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/rendering-sampling-feedback-loop.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/rendering-sampling-feedback-loop.html new file mode 100644 index 00000000000..f3b09020065 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/rendering-sampling-feedback-loop.html @@ -0,0 +1,150 @@ + + + + + + +WebGL Rendering and Sampling Feedback Loop Tests + + + + + + + + +
+
+ + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/rgb-format-support.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/rgb-format-support.html new file mode 100644 index 00000000000..7de62ce40c3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/rgb-format-support.html @@ -0,0 +1,134 @@ + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/uniform-block-buffer-size.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/uniform-block-buffer-size.html new file mode 100644 index 00000000000..c90419ce8ea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/rendering/uniform-block-buffer-size.html @@ -0,0 +1,253 @@ + + + + + + +WebGL UniformBlock Buffer Size Conformance Tests + + + + + + + + + +
+ +
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/samplers/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/samplers/00_test_list.txt new file mode 100644 index 00000000000..02901856b77 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/samplers/00_test_list.txt @@ -0,0 +1,2 @@ +samplers.html +sampler-drawing-test.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/samplers/sampler-drawing-test.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/samplers/sampler-drawing-test.html new file mode 100644 index 00000000000..2b7c8373680 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/samplers/sampler-drawing-test.html @@ -0,0 +1,147 @@ + + + + + + +WebGL Sampler Drawing Test + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/samplers/samplers.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/samplers/samplers.html new file mode 100644 index 00000000000..4260413fc2f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/samplers/samplers.html @@ -0,0 +1,253 @@ + + + + + + +WebGL Sampler Conformance Tests + + + + + + + +
+ +
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/00_test_list.txt new file mode 100644 index 00000000000..5bbd184e4fb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/00_test_list.txt @@ -0,0 +1,4 @@ +gl-enum-tests.html +gl-get-calls.html +gl-getstring.html +gl-object-get-calls.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-enum-tests.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-enum-tests.html new file mode 100644 index 00000000000..7c2f6dcfbfd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-enum-tests.html @@ -0,0 +1,52 @@ + + + + + + +WebGL gl enums Conformance Tests + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-get-calls.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-get-calls.html new file mode 100644 index 00000000000..e4c4ad7785a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-get-calls.html @@ -0,0 +1,200 @@ + + + + + + +WebGL gl calls Conformance Tests + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-getstring.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-getstring.html new file mode 100644 index 00000000000..0147e3442cf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-getstring.html @@ -0,0 +1,83 @@ + + + + + + +WebGL gl.getParameter Strings Conformance Tests + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-object-get-calls.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-object-get-calls.html new file mode 100644 index 00000000000..26d02e35e47 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/state/gl-object-get-calls.html @@ -0,0 +1,49 @@ + + + + + + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/sync/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/sync/00_test_list.txt new file mode 100644 index 00000000000..474af6c7653 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/sync/00_test_list.txt @@ -0,0 +1 @@ +sync-webgl-specific.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/sync/sync-webgl-specific.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/sync/sync-webgl-specific.html new file mode 100644 index 00000000000..439f845a8fd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/sync/sync-webgl-specific.html @@ -0,0 +1,89 @@ + + + + + + +WebGL2 specific sync object behaviors + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/00_test_list.txt new file mode 100644 index 00000000000..32867b54c20 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/00_test_list.txt @@ -0,0 +1,14 @@ +misc/00_test_list.txt +canvas/00_test_list.txt +canvas_sub_rectangle/00_test_list.txt +image/00_test_list.txt +image_data/00_test_list.txt +svg_image/00_test_list.txt +video/00_test_list.txt +webgl_canvas/00_test_list.txt +image_bitmap_from_image_data/00_test_list.txt +image_bitmap_from_image/00_test_list.txt +image_bitmap_from_video/00_test_list.txt +image_bitmap_from_canvas/00_test_list.txt +image_bitmap_from_blob/00_test_list.txt +image_bitmap_from_image_bitmap/00_test_list.txt diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/00_test_list.txt new file mode 100644 index 00000000000..11f7a21276e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/00_test_list.txt @@ -0,0 +1,66 @@ +tex-2d-r8-red-unsigned_byte.html +tex-2d-r16f-red-half_float.html +tex-2d-r16f-red-float.html +tex-2d-r32f-red-float.html +tex-2d-r8ui-red_integer-unsigned_byte.html +tex-2d-rg8-rg-unsigned_byte.html +tex-2d-rg16f-rg-half_float.html +tex-2d-rg16f-rg-float.html +tex-2d-rg32f-rg-float.html +tex-2d-rg8ui-rg_integer-unsigned_byte.html +tex-2d-rgb8-rgb-unsigned_byte.html +tex-2d-srgb8-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_short_5_6_5.html +tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-2d-r11f_g11f_b10f-rgb-half_float.html +tex-2d-r11f_g11f_b10f-rgb-float.html +//tex-2d-rgb9_e5-rgb-half_float.html // crbug.com/663188 , Apple Radar 29259244 +//tex-2d-rgb9_e5-rgb-float.html // crbug.com/663188 , Apple Radar 29259244 +tex-2d-rgb16f-rgb-half_float.html +tex-2d-rgb16f-rgb-float.html +tex-2d-rgb32f-rgb-float.html +tex-2d-rgb8ui-rgb_integer-unsigned_byte.html +tex-2d-rgba8-rgba-unsigned_byte.html +tex-2d-srgb8_alpha8-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-2d-rgba4-rgba-unsigned_byte.html +tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba16f-rgba-half_float.html +tex-2d-rgba16f-rgba-float.html +tex-2d-rgba32f-rgba-float.html +tex-2d-rgba8ui-rgba_integer-unsigned_byte.html +tex-3d-r8-red-unsigned_byte.html +tex-3d-r16f-red-half_float.html +tex-3d-r16f-red-float.html +tex-3d-r32f-red-float.html +tex-3d-r8ui-red_integer-unsigned_byte.html +tex-3d-rg8-rg-unsigned_byte.html +tex-3d-rg16f-rg-half_float.html +tex-3d-rg16f-rg-float.html +tex-3d-rg32f-rg-float.html +tex-3d-rg8ui-rg_integer-unsigned_byte.html +tex-3d-rgb8-rgb-unsigned_byte.html +tex-3d-srgb8-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_short_5_6_5.html +tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-3d-r11f_g11f_b10f-rgb-half_float.html +tex-3d-r11f_g11f_b10f-rgb-float.html +//tex-3d-rgb9_e5-rgb-half_float.html // crbug.com/663188 , Apple Radar 29259244 +//tex-3d-rgb9_e5-rgb-float.html // crbug.com/663188 , Apple Radar 29259244 +tex-3d-rgb16f-rgb-half_float.html +tex-3d-rgb16f-rgb-float.html +tex-3d-rgb32f-rgb-float.html +tex-3d-rgb8ui-rgb_integer-unsigned_byte.html +tex-3d-rgba8-rgba-unsigned_byte.html +tex-3d-srgb8_alpha8-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-3d-rgba4-rgba-unsigned_byte.html +tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-3d-rgba16f-rgba-half_float.html +tex-3d-rgba16f-rgba-float.html +tex-3d-rgba32f-rgba-float.html +tex-3d-rgba8ui-rgba_integer-unsigned_byte.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..5c3842214c1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..95fcb251d95 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..e3b4ec24aa7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r16f-red-float.html new file mode 100644 index 00000000000..4049e28ab60 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r16f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r16f-red-half_float.html new file mode 100644 index 00000000000..f4a9bfa5732 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r16f-red-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r32f-red-float.html new file mode 100644 index 00000000000..5c152c61a69 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r32f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..31b929e28fd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r8-red-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..24cf9aa0006 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg16f-rg-float.html new file mode 100644 index 00000000000..9021fbd2cbb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg16f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..e0ded5c4e85 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg16f-rg-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg32f-rg-float.html new file mode 100644 index 00000000000..fc60ace52d4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg32f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..2f7cc533435 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg8-rg-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..7f40c0c7fe3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..08087928594 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb16f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..2168e61bc21 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb16f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..c9f8b9667b0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb32f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..191532d4fdc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..f585a1f0ae0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..2cd1efa6b32 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..1ae2b21867a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..6527bbfbe23 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..50786049891 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..46467aa0170 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba16f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..8893cc3eecb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba16f-rgba-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..e81f402d789 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba32f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..8bacbe983b3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..ee1509059c0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..54c1ebb2882 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..df50f4d6f52 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..9f1a5966db5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..d54ecdd9c9d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..734f4751910 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..7e7180c4bc7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..26ccdec83f0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r16f-red-float.html new file mode 100644 index 00000000000..5f2543868c5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r16f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r16f-red-half_float.html new file mode 100644 index 00000000000..0ce839b5366 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r16f-red-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r32f-red-float.html new file mode 100644 index 00000000000..67b353436bb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r32f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..261762c34ea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r8-red-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..5cdca978e28 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg16f-rg-float.html new file mode 100644 index 00000000000..603e0de7346 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg16f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..8e3b938c01f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg16f-rg-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg32f-rg-float.html new file mode 100644 index 00000000000..04339548014 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg32f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..d7f9825c8b0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg8-rg-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..0de57d1a7a0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..1615165f29c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb16f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..c176afb035a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb16f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..c68d171108e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb32f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..15300cbb9f4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..ce6462e09c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..d101049a438 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..a1a35a75609 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..737e546b301 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..cbf1f66aba3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..d32fc7c72ed --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba16f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..c8e15dea85e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba16f-rgba-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..775582fc310 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba32f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..41cbf3cd61b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..7e4bab45a9c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..0956b788ea6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..41a738734dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..b0e8880c1e1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..3fec468d378 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/00_test_list.txt new file mode 100644 index 00000000000..5ad5e132ffb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/00_test_list.txt @@ -0,0 +1,66 @@ +tex-2d-r8-red-unsigned_byte.html +tex-2d-r16f-red-half_float.html +tex-2d-r16f-red-float.html +tex-2d-r32f-red-float.html +tex-2d-r8ui-red_integer-unsigned_byte.html +tex-2d-rg8-rg-unsigned_byte.html +tex-2d-rg16f-rg-half_float.html +tex-2d-rg16f-rg-float.html +tex-2d-rg32f-rg-float.html +tex-2d-rg8ui-rg_integer-unsigned_byte.html +tex-2d-rgb8-rgb-unsigned_byte.html +tex-2d-srgb8-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_short_5_6_5.html +tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-2d-r11f_g11f_b10f-rgb-half_float.html +tex-2d-r11f_g11f_b10f-rgb-float.html +tex-2d-rgb9_e5-rgb-half_float.html +tex-2d-rgb9_e5-rgb-float.html +tex-2d-rgb16f-rgb-half_float.html +tex-2d-rgb16f-rgb-float.html +tex-2d-rgb32f-rgb-float.html +tex-2d-rgb8ui-rgb_integer-unsigned_byte.html +tex-2d-rgba8-rgba-unsigned_byte.html +tex-2d-srgb8_alpha8-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-2d-rgba4-rgba-unsigned_byte.html +tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba16f-rgba-half_float.html +tex-2d-rgba16f-rgba-float.html +tex-2d-rgba32f-rgba-float.html +tex-2d-rgba8ui-rgba_integer-unsigned_byte.html +tex-3d-r8-red-unsigned_byte.html +tex-3d-r16f-red-half_float.html +tex-3d-r16f-red-float.html +tex-3d-r32f-red-float.html +tex-3d-r8ui-red_integer-unsigned_byte.html +tex-3d-rg8-rg-unsigned_byte.html +tex-3d-rg16f-rg-half_float.html +tex-3d-rg16f-rg-float.html +tex-3d-rg32f-rg-float.html +tex-3d-rg8ui-rg_integer-unsigned_byte.html +tex-3d-rgb8-rgb-unsigned_byte.html +tex-3d-srgb8-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_short_5_6_5.html +tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-3d-r11f_g11f_b10f-rgb-half_float.html +tex-3d-r11f_g11f_b10f-rgb-float.html +tex-3d-rgb9_e5-rgb-half_float.html +tex-3d-rgb9_e5-rgb-float.html +tex-3d-rgb16f-rgb-half_float.html +tex-3d-rgb16f-rgb-float.html +tex-3d-rgb32f-rgb-float.html +tex-3d-rgb8ui-rgb_integer-unsigned_byte.html +tex-3d-rgba8-rgba-unsigned_byte.html +tex-3d-srgb8_alpha8-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-3d-rgba4-rgba-unsigned_byte.html +tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-3d-rgba16f-rgba-half_float.html +tex-3d-rgba16f-rgba-float.html +tex-3d-rgba32f-rgba-float.html +tex-3d-rgba8ui-rgba_integer-unsigned_byte.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..4103972a1d9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..065112e72a4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..36a53ff2814 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r16f-red-float.html new file mode 100644 index 00000000000..f380a1f59ac --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r16f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r16f-red-half_float.html new file mode 100644 index 00000000000..cabfe1daac9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r16f-red-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r32f-red-float.html new file mode 100644 index 00000000000..20f2e0e448c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r32f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..6afb2992885 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r8-red-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..402af459329 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg16f-rg-float.html new file mode 100644 index 00000000000..d48ef22ce0f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg16f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..b1ee50ab038 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg16f-rg-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg32f-rg-float.html new file mode 100644 index 00000000000..8fc5ae980d1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg32f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..ba99578a591 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg8-rg-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..b65d021e433 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..58f1d274cc5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb16f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..67b9da66fa1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb16f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..256493e1e83 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb32f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..4625baed896 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..1f2bf4b480b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..ef5aff23cd5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..a115ef70ed7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..1e6217f1f4d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..4b699e4e120 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..f2537782f7e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb9_e5-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..b96df69e3ee --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..6e3fc078c0b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba16f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..4ef8e0fc3c1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba16f-rgba-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..99a8f883837 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba32f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..63a2f568493 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..2f9d215e0f3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..01db7e44c69 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..61b41f54189 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..e0cafb1ad6a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..ef8c7a5473c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..5a91695f217 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..aa72054728a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..835153d7d5d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r16f-red-float.html new file mode 100644 index 00000000000..ec43b2b9272 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r16f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r16f-red-half_float.html new file mode 100644 index 00000000000..9c605fea26f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r16f-red-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r32f-red-float.html new file mode 100644 index 00000000000..b008b0bd6f1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r32f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..c103f0f98a1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r8-red-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..0d931141a8a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg16f-rg-float.html new file mode 100644 index 00000000000..c8343e00e80 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg16f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..bf14d792fb4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg16f-rg-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg32f-rg-float.html new file mode 100644 index 00000000000..30a61d7c0cb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg32f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..8ce16053476 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg8-rg-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..6151f7b03b0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..019348bbc84 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb16f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..15b7afd2aba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb16f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..5638bde2deb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb32f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..b895a7b01d2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..20ff515df84 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..22c15f5639b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..a604f7ad2e9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..fbf1f835f6c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..87695fe54f9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..16588e182de --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb9_e5-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..8c3c6a16b24 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..cf353033d32 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba16f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..63e39fd8d66 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba16f-rgba-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..6e46d1bc5c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba32f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..15124dca9c9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..9306b669f16 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..9dccdfb4599 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..ec1f0cfc9c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..9ffc22cd9bf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..8af04629fb5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/canvas_sub_rectangle/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/00_test_list.txt new file mode 100644 index 00000000000..5ad5e132ffb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/00_test_list.txt @@ -0,0 +1,66 @@ +tex-2d-r8-red-unsigned_byte.html +tex-2d-r16f-red-half_float.html +tex-2d-r16f-red-float.html +tex-2d-r32f-red-float.html +tex-2d-r8ui-red_integer-unsigned_byte.html +tex-2d-rg8-rg-unsigned_byte.html +tex-2d-rg16f-rg-half_float.html +tex-2d-rg16f-rg-float.html +tex-2d-rg32f-rg-float.html +tex-2d-rg8ui-rg_integer-unsigned_byte.html +tex-2d-rgb8-rgb-unsigned_byte.html +tex-2d-srgb8-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_short_5_6_5.html +tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-2d-r11f_g11f_b10f-rgb-half_float.html +tex-2d-r11f_g11f_b10f-rgb-float.html +tex-2d-rgb9_e5-rgb-half_float.html +tex-2d-rgb9_e5-rgb-float.html +tex-2d-rgb16f-rgb-half_float.html +tex-2d-rgb16f-rgb-float.html +tex-2d-rgb32f-rgb-float.html +tex-2d-rgb8ui-rgb_integer-unsigned_byte.html +tex-2d-rgba8-rgba-unsigned_byte.html +tex-2d-srgb8_alpha8-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-2d-rgba4-rgba-unsigned_byte.html +tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba16f-rgba-half_float.html +tex-2d-rgba16f-rgba-float.html +tex-2d-rgba32f-rgba-float.html +tex-2d-rgba8ui-rgba_integer-unsigned_byte.html +tex-3d-r8-red-unsigned_byte.html +tex-3d-r16f-red-half_float.html +tex-3d-r16f-red-float.html +tex-3d-r32f-red-float.html +tex-3d-r8ui-red_integer-unsigned_byte.html +tex-3d-rg8-rg-unsigned_byte.html +tex-3d-rg16f-rg-half_float.html +tex-3d-rg16f-rg-float.html +tex-3d-rg32f-rg-float.html +tex-3d-rg8ui-rg_integer-unsigned_byte.html +tex-3d-rgb8-rgb-unsigned_byte.html +tex-3d-srgb8-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_short_5_6_5.html +tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-3d-r11f_g11f_b10f-rgb-half_float.html +tex-3d-r11f_g11f_b10f-rgb-float.html +tex-3d-rgb9_e5-rgb-half_float.html +tex-3d-rgb9_e5-rgb-float.html +tex-3d-rgb16f-rgb-half_float.html +tex-3d-rgb16f-rgb-float.html +tex-3d-rgb32f-rgb-float.html +tex-3d-rgb8ui-rgb_integer-unsigned_byte.html +tex-3d-rgba8-rgba-unsigned_byte.html +tex-3d-srgb8_alpha8-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-3d-rgba4-rgba-unsigned_byte.html +tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-3d-rgba16f-rgba-half_float.html +tex-3d-rgba16f-rgba-float.html +tex-3d-rgba32f-rgba-float.html +tex-3d-rgba8ui-rgba_integer-unsigned_byte.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..ea936541cc7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..29455250175 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..478b50c7c71 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r16f-red-float.html new file mode 100644 index 00000000000..b651134af24 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r16f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r16f-red-half_float.html new file mode 100644 index 00000000000..770686dc28f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r16f-red-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r32f-red-float.html new file mode 100644 index 00000000000..b762f9c1da7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r32f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..96cafefde61 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r8-red-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..e44595c498e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg16f-rg-float.html new file mode 100644 index 00000000000..149f72b2c13 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg16f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..645a9caf7e9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg16f-rg-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg32f-rg-float.html new file mode 100644 index 00000000000..70dae00a88d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg32f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..e388141f00f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg8-rg-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..7a8d51a748c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..b407d7b7f97 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb16f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..b8606e598cd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb16f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..08aedb8f9b5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb32f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..28c8e12c8e4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..bba9650a941 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..71c3142e3b8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..462b6553d79 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..a7b5cfa93c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..d6072552f34 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..ead312abda0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb9_e5-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..438e70b2d70 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..59a129e7fc9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba16f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..32dc8ff9a27 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba16f-rgba-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..50d089799c2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba32f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..10ff9da8a32 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..ebe2e47b072 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..f170022d98d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..84c4008f5a9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..aeea5f6190c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..d0bfc16dbd2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..510d4ba37c2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..9e8c47ee237 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..9f6d7a51ed2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r16f-red-float.html new file mode 100644 index 00000000000..94ff6855f6f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r16f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r16f-red-half_float.html new file mode 100644 index 00000000000..0297dd70f66 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r16f-red-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r32f-red-float.html new file mode 100644 index 00000000000..237ea30faac --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r32f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..8f13af900ae --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r8-red-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..3a6ab8f310d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg16f-rg-float.html new file mode 100644 index 00000000000..6b0c4154d24 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg16f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..f4364635df9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg16f-rg-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg32f-rg-float.html new file mode 100644 index 00000000000..cd26e0d9e2f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg32f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..f072cae4080 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg8-rg-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..971e5ace3c8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..0b3324f5f08 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb16f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..5c8d57ffc84 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb16f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..e6b370f3345 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb32f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..9db30cdeb37 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..2e08c573b9e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..535b94fbbb8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..17c551555b9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..09fdec8591c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..23556ee951a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..a812dc3e9ee --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb9_e5-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..509847f953b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..2aa3cc5c59f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba16f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..88aab7333b6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba16f-rgba-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..9bf40660009 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba32f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..82f1f5705e8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..1689bef06c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..f60b0ae74e1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..c7f12a16435 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..c44f6f42b30 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..8612cd2562b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/00_test_list.txt new file mode 100644 index 00000000000..5ad5e132ffb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/00_test_list.txt @@ -0,0 +1,66 @@ +tex-2d-r8-red-unsigned_byte.html +tex-2d-r16f-red-half_float.html +tex-2d-r16f-red-float.html +tex-2d-r32f-red-float.html +tex-2d-r8ui-red_integer-unsigned_byte.html +tex-2d-rg8-rg-unsigned_byte.html +tex-2d-rg16f-rg-half_float.html +tex-2d-rg16f-rg-float.html +tex-2d-rg32f-rg-float.html +tex-2d-rg8ui-rg_integer-unsigned_byte.html +tex-2d-rgb8-rgb-unsigned_byte.html +tex-2d-srgb8-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_short_5_6_5.html +tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-2d-r11f_g11f_b10f-rgb-half_float.html +tex-2d-r11f_g11f_b10f-rgb-float.html +tex-2d-rgb9_e5-rgb-half_float.html +tex-2d-rgb9_e5-rgb-float.html +tex-2d-rgb16f-rgb-half_float.html +tex-2d-rgb16f-rgb-float.html +tex-2d-rgb32f-rgb-float.html +tex-2d-rgb8ui-rgb_integer-unsigned_byte.html +tex-2d-rgba8-rgba-unsigned_byte.html +tex-2d-srgb8_alpha8-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-2d-rgba4-rgba-unsigned_byte.html +tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba16f-rgba-half_float.html +tex-2d-rgba16f-rgba-float.html +tex-2d-rgba32f-rgba-float.html +tex-2d-rgba8ui-rgba_integer-unsigned_byte.html +tex-3d-r8-red-unsigned_byte.html +tex-3d-r16f-red-half_float.html +tex-3d-r16f-red-float.html +tex-3d-r32f-red-float.html +tex-3d-r8ui-red_integer-unsigned_byte.html +tex-3d-rg8-rg-unsigned_byte.html +tex-3d-rg16f-rg-half_float.html +tex-3d-rg16f-rg-float.html +tex-3d-rg32f-rg-float.html +tex-3d-rg8ui-rg_integer-unsigned_byte.html +tex-3d-rgb8-rgb-unsigned_byte.html +tex-3d-srgb8-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_short_5_6_5.html +tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-3d-r11f_g11f_b10f-rgb-half_float.html +tex-3d-r11f_g11f_b10f-rgb-float.html +tex-3d-rgb9_e5-rgb-half_float.html +tex-3d-rgb9_e5-rgb-float.html +tex-3d-rgb16f-rgb-half_float.html +tex-3d-rgb16f-rgb-float.html +tex-3d-rgb32f-rgb-float.html +tex-3d-rgb8ui-rgb_integer-unsigned_byte.html +tex-3d-rgba8-rgba-unsigned_byte.html +tex-3d-srgb8_alpha8-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-3d-rgba4-rgba-unsigned_byte.html +tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-3d-rgba16f-rgba-half_float.html +tex-3d-rgba16f-rgba-float.html +tex-3d-rgba32f-rgba-float.html +tex-3d-rgba8ui-rgba_integer-unsigned_byte.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..6f6212c6f81 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..133a271db83 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..3518780d824 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r16f-red-float.html new file mode 100644 index 00000000000..dd241e66887 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r16f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r16f-red-half_float.html new file mode 100644 index 00000000000..8899118f0d0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r16f-red-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r32f-red-float.html new file mode 100644 index 00000000000..bb752db31e5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r32f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..8ed2d03bd4f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r8-red-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..ec1c3abc7b7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg16f-rg-float.html new file mode 100644 index 00000000000..9d9d0277f41 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg16f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..6fa62c51b62 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg16f-rg-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg32f-rg-float.html new file mode 100644 index 00000000000..ef4da9911ef --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg32f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..05b432e3ade --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg8-rg-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..9ab8f2ad2bd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..554e6068482 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb16f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..4e1aa650bf4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb16f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..46dcfb7fec2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb32f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..c9d15e88c0f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..316a13d192a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..23cf17f5567 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..5bca8ce2522 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..ddd461d28e9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..222c8fa53c1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..b9b5e496a64 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb9_e5-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..5048c1b344a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..fa395009a62 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba16f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..741708c9c71 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba16f-rgba-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..537c0dc55cb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba32f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..e5a277fe6c8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..62390673d82 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..d7657441f19 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..d29596b076f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..b2dff48a21d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..25ef225865c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..81d3a0ded7d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..e759027b6a7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..b129320f733 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r16f-red-float.html new file mode 100644 index 00000000000..3725c574d77 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r16f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r16f-red-half_float.html new file mode 100644 index 00000000000..0e257a37280 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r16f-red-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r32f-red-float.html new file mode 100644 index 00000000000..8720fcf2705 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r32f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..8f62ed68ecb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r8-red-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..6294c292d8e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg16f-rg-float.html new file mode 100644 index 00000000000..2f80e9db363 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg16f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..bbc109fd679 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg16f-rg-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg32f-rg-float.html new file mode 100644 index 00000000000..5b805f5d4fc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg32f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..313f207a44e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg8-rg-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..5bf442b27bc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..aafff9b0288 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb16f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..7e5e13a3b66 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb16f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..69f4ce518a9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb32f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..1b7f20502f7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..fb86bf93a00 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..cfef4ca1d74 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..aece4fdfb76 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..9dbe0bf6b5a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..af855e9a829 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..1f69293c51f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb9_e5-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..9a0ff47b53a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..f21677093b3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba16f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..e1541507a6f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba16f-rgba-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..41d939dd457 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba32f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..af31534b907 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..bbd4361b3ac --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..563024bce66 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..471e05b0572 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..ccfcd72e15f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..87e8033c373 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_blob/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/00_test_list.txt new file mode 100644 index 00000000000..5ad5e132ffb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/00_test_list.txt @@ -0,0 +1,66 @@ +tex-2d-r8-red-unsigned_byte.html +tex-2d-r16f-red-half_float.html +tex-2d-r16f-red-float.html +tex-2d-r32f-red-float.html +tex-2d-r8ui-red_integer-unsigned_byte.html +tex-2d-rg8-rg-unsigned_byte.html +tex-2d-rg16f-rg-half_float.html +tex-2d-rg16f-rg-float.html +tex-2d-rg32f-rg-float.html +tex-2d-rg8ui-rg_integer-unsigned_byte.html +tex-2d-rgb8-rgb-unsigned_byte.html +tex-2d-srgb8-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_short_5_6_5.html +tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-2d-r11f_g11f_b10f-rgb-half_float.html +tex-2d-r11f_g11f_b10f-rgb-float.html +tex-2d-rgb9_e5-rgb-half_float.html +tex-2d-rgb9_e5-rgb-float.html +tex-2d-rgb16f-rgb-half_float.html +tex-2d-rgb16f-rgb-float.html +tex-2d-rgb32f-rgb-float.html +tex-2d-rgb8ui-rgb_integer-unsigned_byte.html +tex-2d-rgba8-rgba-unsigned_byte.html +tex-2d-srgb8_alpha8-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-2d-rgba4-rgba-unsigned_byte.html +tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba16f-rgba-half_float.html +tex-2d-rgba16f-rgba-float.html +tex-2d-rgba32f-rgba-float.html +tex-2d-rgba8ui-rgba_integer-unsigned_byte.html +tex-3d-r8-red-unsigned_byte.html +tex-3d-r16f-red-half_float.html +tex-3d-r16f-red-float.html +tex-3d-r32f-red-float.html +tex-3d-r8ui-red_integer-unsigned_byte.html +tex-3d-rg8-rg-unsigned_byte.html +tex-3d-rg16f-rg-half_float.html +tex-3d-rg16f-rg-float.html +tex-3d-rg32f-rg-float.html +tex-3d-rg8ui-rg_integer-unsigned_byte.html +tex-3d-rgb8-rgb-unsigned_byte.html +tex-3d-srgb8-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_short_5_6_5.html +tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-3d-r11f_g11f_b10f-rgb-half_float.html +tex-3d-r11f_g11f_b10f-rgb-float.html +tex-3d-rgb9_e5-rgb-half_float.html +tex-3d-rgb9_e5-rgb-float.html +tex-3d-rgb16f-rgb-half_float.html +tex-3d-rgb16f-rgb-float.html +tex-3d-rgb32f-rgb-float.html +tex-3d-rgb8ui-rgb_integer-unsigned_byte.html +tex-3d-rgba8-rgba-unsigned_byte.html +tex-3d-srgb8_alpha8-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-3d-rgba4-rgba-unsigned_byte.html +tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-3d-rgba16f-rgba-half_float.html +tex-3d-rgba16f-rgba-float.html +tex-3d-rgba32f-rgba-float.html +tex-3d-rgba8ui-rgba_integer-unsigned_byte.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..1adcb557cd1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..c79019dcafb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..f10bbebbfc9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r16f-red-float.html new file mode 100644 index 00000000000..5d619dd9493 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r16f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r16f-red-half_float.html new file mode 100644 index 00000000000..828ec545054 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r16f-red-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r32f-red-float.html new file mode 100644 index 00000000000..1de306f0433 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r32f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..ae95fc763f5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r8-red-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..ad6ef1a9287 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg16f-rg-float.html new file mode 100644 index 00000000000..ad854a9b5c5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg16f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..9a1f9d4bbdf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg16f-rg-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg32f-rg-float.html new file mode 100644 index 00000000000..a7d3c7e6898 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg32f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..718f37de993 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg8-rg-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..d8d00176928 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..6ec90dcd4e2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb16f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..1b871c1dda8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb16f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..666395c111c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb32f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..575c5bfc91f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..cc682655ece --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..4af412b03a5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..09153f457a5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..6ebd51932f6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..2f5fd233a73 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..a9e6147c12c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb9_e5-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..7205490aec0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..416c2cf5a8f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba16f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..b5228c24638 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba16f-rgba-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..577d6ba72cb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba32f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..10fecc0b6fb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..d677287cff1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..b68059de10d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..654312748aa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..dd96057ae9f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..2aa45fa732a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..79b5a7ec8db --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..76d05572961 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..0a1c53971fd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r16f-red-float.html new file mode 100644 index 00000000000..f2ea7fe7c95 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r16f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r16f-red-half_float.html new file mode 100644 index 00000000000..88e88f4f1c6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r16f-red-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r32f-red-float.html new file mode 100644 index 00000000000..dcae4c1caa3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r32f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..c86d4fa1b36 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r8-red-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..1d59f60fe28 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg16f-rg-float.html new file mode 100644 index 00000000000..f39aea34aa7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg16f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..fec5f78bceb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg16f-rg-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg32f-rg-float.html new file mode 100644 index 00000000000..db879082932 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg32f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..949a2139899 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg8-rg-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..d3571afe343 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..d26d0126fc4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb16f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..9080f255b23 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb16f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..aad6d5f473b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb32f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..a06627fdf1b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..bc6df3ffb9c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..a2c04f67fba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..8b444c8c5c7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..be00a2aa281 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..3453fb80476 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..5d84d7c4135 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb9_e5-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..a858c9007ad --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..bc2b46c5958 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba16f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..2d0a2b0a30f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba16f-rgba-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..6ed5a4d06c9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba32f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..025c7139a5b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..aa1662c6835 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..f1dcfa95bce --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..a0716e2f884 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..cf9fe70e311 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..0448e74e4c9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/00_test_list.txt new file mode 100644 index 00000000000..5ad5e132ffb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/00_test_list.txt @@ -0,0 +1,66 @@ +tex-2d-r8-red-unsigned_byte.html +tex-2d-r16f-red-half_float.html +tex-2d-r16f-red-float.html +tex-2d-r32f-red-float.html +tex-2d-r8ui-red_integer-unsigned_byte.html +tex-2d-rg8-rg-unsigned_byte.html +tex-2d-rg16f-rg-half_float.html +tex-2d-rg16f-rg-float.html +tex-2d-rg32f-rg-float.html +tex-2d-rg8ui-rg_integer-unsigned_byte.html +tex-2d-rgb8-rgb-unsigned_byte.html +tex-2d-srgb8-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_short_5_6_5.html +tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-2d-r11f_g11f_b10f-rgb-half_float.html +tex-2d-r11f_g11f_b10f-rgb-float.html +tex-2d-rgb9_e5-rgb-half_float.html +tex-2d-rgb9_e5-rgb-float.html +tex-2d-rgb16f-rgb-half_float.html +tex-2d-rgb16f-rgb-float.html +tex-2d-rgb32f-rgb-float.html +tex-2d-rgb8ui-rgb_integer-unsigned_byte.html +tex-2d-rgba8-rgba-unsigned_byte.html +tex-2d-srgb8_alpha8-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-2d-rgba4-rgba-unsigned_byte.html +tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba16f-rgba-half_float.html +tex-2d-rgba16f-rgba-float.html +tex-2d-rgba32f-rgba-float.html +tex-2d-rgba8ui-rgba_integer-unsigned_byte.html +tex-3d-r8-red-unsigned_byte.html +tex-3d-r16f-red-half_float.html +tex-3d-r16f-red-float.html +tex-3d-r32f-red-float.html +tex-3d-r8ui-red_integer-unsigned_byte.html +tex-3d-rg8-rg-unsigned_byte.html +tex-3d-rg16f-rg-half_float.html +tex-3d-rg16f-rg-float.html +tex-3d-rg32f-rg-float.html +tex-3d-rg8ui-rg_integer-unsigned_byte.html +tex-3d-rgb8-rgb-unsigned_byte.html +tex-3d-srgb8-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_short_5_6_5.html +tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-3d-r11f_g11f_b10f-rgb-half_float.html +tex-3d-r11f_g11f_b10f-rgb-float.html +tex-3d-rgb9_e5-rgb-half_float.html +tex-3d-rgb9_e5-rgb-float.html +tex-3d-rgb16f-rgb-half_float.html +tex-3d-rgb16f-rgb-float.html +tex-3d-rgb32f-rgb-float.html +tex-3d-rgb8ui-rgb_integer-unsigned_byte.html +tex-3d-rgba8-rgba-unsigned_byte.html +tex-3d-srgb8_alpha8-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-3d-rgba4-rgba-unsigned_byte.html +tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-3d-rgba16f-rgba-half_float.html +tex-3d-rgba16f-rgba-float.html +tex-3d-rgba32f-rgba-float.html +tex-3d-rgba8ui-rgba_integer-unsigned_byte.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..821c3252401 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..87145f5af05 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..11ba97a1f4b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r16f-red-float.html new file mode 100644 index 00000000000..e776aae0c18 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r16f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r16f-red-half_float.html new file mode 100644 index 00000000000..d662eda142c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r16f-red-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r32f-red-float.html new file mode 100644 index 00000000000..abf1ea7b811 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r32f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..b23ce446e8d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r8-red-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..10a3ad18560 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg16f-rg-float.html new file mode 100644 index 00000000000..0f7343baa91 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg16f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..95af35e2d44 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg16f-rg-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg32f-rg-float.html new file mode 100644 index 00000000000..91130f1947d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg32f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..91e84ed14f6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg8-rg-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..4327343d8ef --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..666efc398d7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb16f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..c3841c2ec9d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb16f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..53d95cfbc7f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb32f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..ebcebc5514f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..5e9bee321fc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..df8643511e5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..1be9fb1c48b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..c7710418cef --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..1f8d98d7d17 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..ac8d949a0f6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb9_e5-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..10d86d30b11 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..6113da5e3ad --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba16f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..d4ae01d82a3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba16f-rgba-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..8f6f524e24a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba32f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..23bc2ab5ee7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..ab4159b5d59 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..9b1110f3440 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..0ba70709bbd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..4692dbddb1f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..f4ce8e120d9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..f9eb0a9a606 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..f894532a55e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..aeb8ffaeaac --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r16f-red-float.html new file mode 100644 index 00000000000..8d9f694e825 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r16f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r16f-red-half_float.html new file mode 100644 index 00000000000..fa7932f4d6c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r16f-red-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r32f-red-float.html new file mode 100644 index 00000000000..86fec479631 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r32f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..da1ba2a1898 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r8-red-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..99b3726f746 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg16f-rg-float.html new file mode 100644 index 00000000000..fc4518e5307 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg16f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..693c8f3797d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg16f-rg-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg32f-rg-float.html new file mode 100644 index 00000000000..b27cd5017f3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg32f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..45f9889d954 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg8-rg-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..e94ae5c38ff --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..8cfb259cd4a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb16f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..15b69410613 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb16f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..32302118a89 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb32f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..c06cc831ffa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..6520db8a074 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..9dd7eea4cb1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..ed1fa374400 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..3b4873d619a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..287eb884a08 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..826ca8d2f1e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb9_e5-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..45ea854c9ec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..eae3a492a1e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba16f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..f5c24047041 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba16f-rgba-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..42b73b98f0a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba32f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..563df4647ab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..7a76e721482 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..68d32d2ac3d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..91f69c4eab7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..03b23a38a7f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..1da46493b51 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/00_test_list.txt new file mode 100644 index 00000000000..5ad5e132ffb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/00_test_list.txt @@ -0,0 +1,66 @@ +tex-2d-r8-red-unsigned_byte.html +tex-2d-r16f-red-half_float.html +tex-2d-r16f-red-float.html +tex-2d-r32f-red-float.html +tex-2d-r8ui-red_integer-unsigned_byte.html +tex-2d-rg8-rg-unsigned_byte.html +tex-2d-rg16f-rg-half_float.html +tex-2d-rg16f-rg-float.html +tex-2d-rg32f-rg-float.html +tex-2d-rg8ui-rg_integer-unsigned_byte.html +tex-2d-rgb8-rgb-unsigned_byte.html +tex-2d-srgb8-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_short_5_6_5.html +tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-2d-r11f_g11f_b10f-rgb-half_float.html +tex-2d-r11f_g11f_b10f-rgb-float.html +tex-2d-rgb9_e5-rgb-half_float.html +tex-2d-rgb9_e5-rgb-float.html +tex-2d-rgb16f-rgb-half_float.html +tex-2d-rgb16f-rgb-float.html +tex-2d-rgb32f-rgb-float.html +tex-2d-rgb8ui-rgb_integer-unsigned_byte.html +tex-2d-rgba8-rgba-unsigned_byte.html +tex-2d-srgb8_alpha8-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-2d-rgba4-rgba-unsigned_byte.html +tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba16f-rgba-half_float.html +tex-2d-rgba16f-rgba-float.html +tex-2d-rgba32f-rgba-float.html +tex-2d-rgba8ui-rgba_integer-unsigned_byte.html +tex-3d-r8-red-unsigned_byte.html +tex-3d-r16f-red-half_float.html +tex-3d-r16f-red-float.html +tex-3d-r32f-red-float.html +tex-3d-r8ui-red_integer-unsigned_byte.html +tex-3d-rg8-rg-unsigned_byte.html +tex-3d-rg16f-rg-half_float.html +tex-3d-rg16f-rg-float.html +tex-3d-rg32f-rg-float.html +tex-3d-rg8ui-rg_integer-unsigned_byte.html +tex-3d-rgb8-rgb-unsigned_byte.html +tex-3d-srgb8-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_short_5_6_5.html +tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-3d-r11f_g11f_b10f-rgb-half_float.html +tex-3d-r11f_g11f_b10f-rgb-float.html +tex-3d-rgb9_e5-rgb-half_float.html +tex-3d-rgb9_e5-rgb-float.html +tex-3d-rgb16f-rgb-half_float.html +tex-3d-rgb16f-rgb-float.html +tex-3d-rgb32f-rgb-float.html +tex-3d-rgb8ui-rgb_integer-unsigned_byte.html +tex-3d-rgba8-rgba-unsigned_byte.html +tex-3d-srgb8_alpha8-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-3d-rgba4-rgba-unsigned_byte.html +tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-3d-rgba16f-rgba-half_float.html +tex-3d-rgba16f-rgba-float.html +tex-3d-rgba32f-rgba-float.html +tex-3d-rgba8ui-rgba_integer-unsigned_byte.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..d048b8b79ff --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..2257779291d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..d27edd2f30d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r16f-red-float.html new file mode 100644 index 00000000000..e7749cf9c2a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r16f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r16f-red-half_float.html new file mode 100644 index 00000000000..ba169591a87 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r16f-red-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r32f-red-float.html new file mode 100644 index 00000000000..b30761f95dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r32f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..a8596c8d0b8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r8-red-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..3310c514812 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg16f-rg-float.html new file mode 100644 index 00000000000..960ba475ac6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg16f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..625ad77b6b0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg16f-rg-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg32f-rg-float.html new file mode 100644 index 00000000000..a47c334d1da --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg32f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..1161393b9d8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg8-rg-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..a85d6cb581f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..e31c6b4a573 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb16f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..a9a83822e2f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb16f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..7c666827716 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb32f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..f13f260bfc5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..b31eaf5cd4d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..df0fa8bea69 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..bb895608c04 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..6f75c80d9f0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..4e49c133287 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..b88e75d8a00 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb9_e5-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..6e26e8155d5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..f2e062de0cd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba16f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..54e3cab0b28 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba16f-rgba-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..7cff645e7dc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba32f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..59f5e0d9ffa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..aa21dda140f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..32fb4c150f0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..43bb4512fde --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..4a1d468cae7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..e691e70eb71 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..ff9ef36d6e8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..1a3a7e41b77 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..f8414cca669 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r16f-red-float.html new file mode 100644 index 00000000000..cd3c65cee4d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r16f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r16f-red-half_float.html new file mode 100644 index 00000000000..a98398413f9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r16f-red-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r32f-red-float.html new file mode 100644 index 00000000000..ac8e45aec21 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r32f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..212ab61e8a9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r8-red-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..4f52b26639f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg16f-rg-float.html new file mode 100644 index 00000000000..d2fe181ec01 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg16f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..436027b5393 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg16f-rg-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg32f-rg-float.html new file mode 100644 index 00000000000..a64c386aadf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg32f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..66b1fa13407 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg8-rg-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..fd1546484ec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..f422317ce93 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb16f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..10f9c9375b5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb16f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..f608fc84b10 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb32f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..d32fe27d6f4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..367ab9608f2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..b50d5436b2f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..5e7987c543a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..2015e3c033f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..5ec20b18f58 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..0740a1a569a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb9_e5-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..730fa9f67f3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..beac7dee87e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba16f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..94a3ea3beb5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba16f-rgba-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..fb2ef443931 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba32f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..6b1743d661d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..ae1aaa7351e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..fa3abf2b86d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..43b2b608ae2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..96f3ddc438e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..c0e538c5a52 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/00_test_list.txt new file mode 100644 index 00000000000..5ad5e132ffb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/00_test_list.txt @@ -0,0 +1,66 @@ +tex-2d-r8-red-unsigned_byte.html +tex-2d-r16f-red-half_float.html +tex-2d-r16f-red-float.html +tex-2d-r32f-red-float.html +tex-2d-r8ui-red_integer-unsigned_byte.html +tex-2d-rg8-rg-unsigned_byte.html +tex-2d-rg16f-rg-half_float.html +tex-2d-rg16f-rg-float.html +tex-2d-rg32f-rg-float.html +tex-2d-rg8ui-rg_integer-unsigned_byte.html +tex-2d-rgb8-rgb-unsigned_byte.html +tex-2d-srgb8-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_short_5_6_5.html +tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-2d-r11f_g11f_b10f-rgb-half_float.html +tex-2d-r11f_g11f_b10f-rgb-float.html +tex-2d-rgb9_e5-rgb-half_float.html +tex-2d-rgb9_e5-rgb-float.html +tex-2d-rgb16f-rgb-half_float.html +tex-2d-rgb16f-rgb-float.html +tex-2d-rgb32f-rgb-float.html +tex-2d-rgb8ui-rgb_integer-unsigned_byte.html +tex-2d-rgba8-rgba-unsigned_byte.html +tex-2d-srgb8_alpha8-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-2d-rgba4-rgba-unsigned_byte.html +tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba16f-rgba-half_float.html +tex-2d-rgba16f-rgba-float.html +tex-2d-rgba32f-rgba-float.html +tex-2d-rgba8ui-rgba_integer-unsigned_byte.html +tex-3d-r8-red-unsigned_byte.html +tex-3d-r16f-red-half_float.html +tex-3d-r16f-red-float.html +tex-3d-r32f-red-float.html +tex-3d-r8ui-red_integer-unsigned_byte.html +tex-3d-rg8-rg-unsigned_byte.html +tex-3d-rg16f-rg-half_float.html +tex-3d-rg16f-rg-float.html +tex-3d-rg32f-rg-float.html +tex-3d-rg8ui-rg_integer-unsigned_byte.html +tex-3d-rgb8-rgb-unsigned_byte.html +tex-3d-srgb8-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_short_5_6_5.html +tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-3d-r11f_g11f_b10f-rgb-half_float.html +tex-3d-r11f_g11f_b10f-rgb-float.html +tex-3d-rgb9_e5-rgb-half_float.html +tex-3d-rgb9_e5-rgb-float.html +tex-3d-rgb16f-rgb-half_float.html +tex-3d-rgb16f-rgb-float.html +tex-3d-rgb32f-rgb-float.html +tex-3d-rgb8ui-rgb_integer-unsigned_byte.html +tex-3d-rgba8-rgba-unsigned_byte.html +tex-3d-srgb8_alpha8-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-3d-rgba4-rgba-unsigned_byte.html +tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-3d-rgba16f-rgba-half_float.html +tex-3d-rgba16f-rgba-float.html +tex-3d-rgba32f-rgba-float.html +tex-3d-rgba8ui-rgba_integer-unsigned_byte.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..96f8bdad38d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..9f3b7fdbee1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..f9f4ab0e06b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r16f-red-float.html new file mode 100644 index 00000000000..3e4fe46e3b9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r16f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r16f-red-half_float.html new file mode 100644 index 00000000000..0a50848188a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r16f-red-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r32f-red-float.html new file mode 100644 index 00000000000..016762b1038 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r32f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..a4a2c34e441 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r8-red-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..5a5d207a8d4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg16f-rg-float.html new file mode 100644 index 00000000000..a51f6d5f3c5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg16f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..ed753d540d0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg16f-rg-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg32f-rg-float.html new file mode 100644 index 00000000000..1b14e7fe564 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg32f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..eb2ac214e1c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg8-rg-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..8bd072c297f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..1bfefb15022 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb16f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..529c7c6354f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb16f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..9a9d7e5c26a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb32f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..74517584b78 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..f6c1523aec3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..4642f3da941 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..2b0dd209c03 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..78b0f9d1323 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..8262f1f02ac --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..d4f2ece37f7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb9_e5-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..92ed5ca63d4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..fec95e2dd3d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba16f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..408c30ce714 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba16f-rgba-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..02144343f9c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba32f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..9854e5269cb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..9a874f6981f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..7a58be80afc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..6c1af1daaeb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..9d54371f7a9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..f7e2039664d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..4db5a3412c2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..cc9cf4a7a2b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..e021fe6d361 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r16f-red-float.html new file mode 100644 index 00000000000..3c8ad03e181 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r16f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r16f-red-half_float.html new file mode 100644 index 00000000000..62729be3e16 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r16f-red-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r32f-red-float.html new file mode 100644 index 00000000000..bc6aa09d14e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r32f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..f37b001ea98 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r8-red-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..9dd599f4c5c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg16f-rg-float.html new file mode 100644 index 00000000000..0163bbf2322 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg16f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..9cfea467184 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg16f-rg-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg32f-rg-float.html new file mode 100644 index 00000000000..f398ed9944e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg32f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..64a8a95e18a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg8-rg-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..da34e4cd23e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..3523f7f3074 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb16f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..e766ddd6ebd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb16f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..71dbeabd5df --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb32f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..d0d8a5aeb85 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..a7c4c015b80 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..fcf6d6f35a1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..4822a74174a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..ea7ce8a70e0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..b6a6839b442 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..530582c62bb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb9_e5-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..8efe4f9e5ee --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..b3901250977 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba16f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..156cdebabd4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba16f-rgba-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..1fc1ab69af4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba32f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..535edd8001f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..993591179d9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..eeadf2a6827 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..1c43ebffb4a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..8d9e9506e16 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..e11bada1cea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_image_data/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/00_test_list.txt new file mode 100644 index 00000000000..5ad5e132ffb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/00_test_list.txt @@ -0,0 +1,66 @@ +tex-2d-r8-red-unsigned_byte.html +tex-2d-r16f-red-half_float.html +tex-2d-r16f-red-float.html +tex-2d-r32f-red-float.html +tex-2d-r8ui-red_integer-unsigned_byte.html +tex-2d-rg8-rg-unsigned_byte.html +tex-2d-rg16f-rg-half_float.html +tex-2d-rg16f-rg-float.html +tex-2d-rg32f-rg-float.html +tex-2d-rg8ui-rg_integer-unsigned_byte.html +tex-2d-rgb8-rgb-unsigned_byte.html +tex-2d-srgb8-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_short_5_6_5.html +tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-2d-r11f_g11f_b10f-rgb-half_float.html +tex-2d-r11f_g11f_b10f-rgb-float.html +tex-2d-rgb9_e5-rgb-half_float.html +tex-2d-rgb9_e5-rgb-float.html +tex-2d-rgb16f-rgb-half_float.html +tex-2d-rgb16f-rgb-float.html +tex-2d-rgb32f-rgb-float.html +tex-2d-rgb8ui-rgb_integer-unsigned_byte.html +tex-2d-rgba8-rgba-unsigned_byte.html +tex-2d-srgb8_alpha8-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-2d-rgba4-rgba-unsigned_byte.html +tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba16f-rgba-half_float.html +tex-2d-rgba16f-rgba-float.html +tex-2d-rgba32f-rgba-float.html +tex-2d-rgba8ui-rgba_integer-unsigned_byte.html +tex-3d-r8-red-unsigned_byte.html +tex-3d-r16f-red-half_float.html +tex-3d-r16f-red-float.html +tex-3d-r32f-red-float.html +tex-3d-r8ui-red_integer-unsigned_byte.html +tex-3d-rg8-rg-unsigned_byte.html +tex-3d-rg16f-rg-half_float.html +tex-3d-rg16f-rg-float.html +tex-3d-rg32f-rg-float.html +tex-3d-rg8ui-rg_integer-unsigned_byte.html +tex-3d-rgb8-rgb-unsigned_byte.html +tex-3d-srgb8-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_short_5_6_5.html +tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-3d-r11f_g11f_b10f-rgb-half_float.html +tex-3d-r11f_g11f_b10f-rgb-float.html +tex-3d-rgb9_e5-rgb-half_float.html +tex-3d-rgb9_e5-rgb-float.html +tex-3d-rgb16f-rgb-half_float.html +tex-3d-rgb16f-rgb-float.html +tex-3d-rgb32f-rgb-float.html +tex-3d-rgb8ui-rgb_integer-unsigned_byte.html +tex-3d-rgba8-rgba-unsigned_byte.html +tex-3d-srgb8_alpha8-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-3d-rgba4-rgba-unsigned_byte.html +tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-3d-rgba16f-rgba-half_float.html +tex-3d-rgba16f-rgba-float.html +tex-3d-rgba32f-rgba-float.html +tex-3d-rgba8ui-rgba_integer-unsigned_byte.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..a3c34afc44d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..fe5958fa8d0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..c6080bb856b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r16f-red-float.html new file mode 100644 index 00000000000..ab1b31d3cf7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r16f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r16f-red-half_float.html new file mode 100644 index 00000000000..a876cb5ea7f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r16f-red-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r32f-red-float.html new file mode 100644 index 00000000000..ee556cbb6ee --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r32f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..54d86203cc7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r8-red-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..7a9c7de61e5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg16f-rg-float.html new file mode 100644 index 00000000000..9af359d4544 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg16f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..e55fbc53c94 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg16f-rg-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg32f-rg-float.html new file mode 100644 index 00000000000..037b823d14d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg32f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..db10211d8dd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg8-rg-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..a16d88d3401 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..3bca4b734b7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb16f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..fd3711b7bf3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb16f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..ce778b4d8b1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb32f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..2f6c967558e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..01fdf611e30 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..c8926ab77f2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..f6f910a2738 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..911bb234e7a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..860140cdd8e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..e7334960f5f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb9_e5-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..883c8ea388e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..cea83a0eb26 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba16f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..104e5a25147 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba16f-rgba-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..23eb43a2a9a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba32f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..be2d9887aee --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..3a24d4d9bab --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..9acc8a5cf71 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..70df55e7013 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..97bb1ddff6a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..0a8ab9ad815 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..7b939c990c2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..3a0a7018a7a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..f57cecaafb8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r16f-red-float.html new file mode 100644 index 00000000000..05e9293b60a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r16f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r16f-red-half_float.html new file mode 100644 index 00000000000..ae4f10a589e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r16f-red-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r32f-red-float.html new file mode 100644 index 00000000000..72a063a1e83 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r32f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..b4303676d73 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r8-red-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..0b94d3423dd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg16f-rg-float.html new file mode 100644 index 00000000000..d2643289830 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg16f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..fb7f01553af --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg16f-rg-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg32f-rg-float.html new file mode 100644 index 00000000000..9d656aba39e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg32f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..a9b1c76d71e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg8-rg-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..7e9e657e20f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..790f489e3ff --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb16f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..58c6a2e2643 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb16f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..cb7db40f731 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb32f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..a4bf26f2704 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..2c72cfd0365 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..5a0c79c2f77 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..230b49c6c88 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..9d5fc9daa0c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..19d36c1ad53 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..15406a81c0a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb9_e5-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..37e52c124f6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..5791e6746f5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba16f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..b5cd5cff182 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba16f-rgba-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..7ffa5ba42ba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba32f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..5fbca347f56 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..31f3bf272e7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..13c639e65d0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..67bc30fad79 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..b635c09a948 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..d9853ea5806 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/00_test_list.txt new file mode 100644 index 00000000000..5ad5e132ffb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/00_test_list.txt @@ -0,0 +1,66 @@ +tex-2d-r8-red-unsigned_byte.html +tex-2d-r16f-red-half_float.html +tex-2d-r16f-red-float.html +tex-2d-r32f-red-float.html +tex-2d-r8ui-red_integer-unsigned_byte.html +tex-2d-rg8-rg-unsigned_byte.html +tex-2d-rg16f-rg-half_float.html +tex-2d-rg16f-rg-float.html +tex-2d-rg32f-rg-float.html +tex-2d-rg8ui-rg_integer-unsigned_byte.html +tex-2d-rgb8-rgb-unsigned_byte.html +tex-2d-srgb8-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_short_5_6_5.html +tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-2d-r11f_g11f_b10f-rgb-half_float.html +tex-2d-r11f_g11f_b10f-rgb-float.html +tex-2d-rgb9_e5-rgb-half_float.html +tex-2d-rgb9_e5-rgb-float.html +tex-2d-rgb16f-rgb-half_float.html +tex-2d-rgb16f-rgb-float.html +tex-2d-rgb32f-rgb-float.html +tex-2d-rgb8ui-rgb_integer-unsigned_byte.html +tex-2d-rgba8-rgba-unsigned_byte.html +tex-2d-srgb8_alpha8-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-2d-rgba4-rgba-unsigned_byte.html +tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba16f-rgba-half_float.html +tex-2d-rgba16f-rgba-float.html +tex-2d-rgba32f-rgba-float.html +tex-2d-rgba8ui-rgba_integer-unsigned_byte.html +tex-3d-r8-red-unsigned_byte.html +tex-3d-r16f-red-half_float.html +tex-3d-r16f-red-float.html +tex-3d-r32f-red-float.html +tex-3d-r8ui-red_integer-unsigned_byte.html +tex-3d-rg8-rg-unsigned_byte.html +tex-3d-rg16f-rg-half_float.html +tex-3d-rg16f-rg-float.html +tex-3d-rg32f-rg-float.html +tex-3d-rg8ui-rg_integer-unsigned_byte.html +tex-3d-rgb8-rgb-unsigned_byte.html +tex-3d-srgb8-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_short_5_6_5.html +tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-3d-r11f_g11f_b10f-rgb-half_float.html +tex-3d-r11f_g11f_b10f-rgb-float.html +tex-3d-rgb9_e5-rgb-half_float.html +tex-3d-rgb9_e5-rgb-float.html +tex-3d-rgb16f-rgb-half_float.html +tex-3d-rgb16f-rgb-float.html +tex-3d-rgb32f-rgb-float.html +tex-3d-rgb8ui-rgb_integer-unsigned_byte.html +tex-3d-rgba8-rgba-unsigned_byte.html +tex-3d-srgb8_alpha8-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-3d-rgba4-rgba-unsigned_byte.html +tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-3d-rgba16f-rgba-half_float.html +tex-3d-rgba16f-rgba-float.html +tex-3d-rgba32f-rgba-float.html +tex-3d-rgba8ui-rgba_integer-unsigned_byte.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..da89d4e38d3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..674aa78d410 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..e4481412019 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r16f-red-float.html new file mode 100644 index 00000000000..a645812463c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r16f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r16f-red-half_float.html new file mode 100644 index 00000000000..4bfdf19fce1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r16f-red-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r32f-red-float.html new file mode 100644 index 00000000000..8fb2731733a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r32f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..f3297078c3e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r8-red-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..ad1403eb9f9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg16f-rg-float.html new file mode 100644 index 00000000000..379ed8eaa4b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg16f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..6bc5383d0f6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg16f-rg-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg32f-rg-float.html new file mode 100644 index 00000000000..d1528175b24 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg32f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..2677e19c412 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg8-rg-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..03e41e4e592 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..79b809a62c5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb16f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..acb16897dd7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb16f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..a7476805214 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb32f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..ec452ca3ddf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..9c90b029c92 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..c743a932ed4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..07b38211b96 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..268447cb1f4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..f3649821af7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..21c5b3821d5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb9_e5-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..dc93c6f6824 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..8746a474baa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba16f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..d3fa07996ae --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba16f-rgba-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..257baed60c8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba32f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..f7de0f10931 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..0c1279803e0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..552de6688f2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..bb87edfe20c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..988a844e8d2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..a8353046530 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..f3ac99ea393 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..1b9bbca716e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..59c3a1b7b57 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r16f-red-float.html new file mode 100644 index 00000000000..0271e63cd6f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r16f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r16f-red-half_float.html new file mode 100644 index 00000000000..3d94567c3c3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r16f-red-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r32f-red-float.html new file mode 100644 index 00000000000..f47b1fc5960 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r32f-red-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..95262668e14 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r8-red-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..720cacf67b8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg16f-rg-float.html new file mode 100644 index 00000000000..978f22fe4d8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg16f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..e8f9448966e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg16f-rg-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg32f-rg-float.html new file mode 100644 index 00000000000..2e05ea9416b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg32f-rg-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..1f721e65ebf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg8-rg-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..a06c23af75c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..ed7bcf5368e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb16f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..5bb1e564f91 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb16f-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..943c5cd3987 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb32f-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..43847bdf2e1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..7a94221134c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..363e211a9ef --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..d55c7e6bc51 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..36172da8540 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..1525b996491 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..c60be7c4e62 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb9_e5-rgb-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..819aec12ec0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..232d615632d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba16f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..e21f551f83f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba16f-rgba-half_float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..d28761fd3e4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba32f-rgba-float.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..43168e0068b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..d33dc10ba15 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..35083ab603b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..9ac058558f0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..54bd6621a14 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..80a3afe892d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/image_data/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/00_test_list.txt new file mode 100644 index 00000000000..a25c3ec81a6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/00_test_list.txt @@ -0,0 +1,23 @@ +--min-version 2.0.1 active-3d-texture-bug.html +copy-texture-image.html +copy-texture-image-luma-format.html +copy-texture-image-webgl-specific.html +gl-get-tex-parameter.html +--min-version 2.0.1 integer-cubemap-texture-sampling.html +--min-version 2.0.1 integer-cubemap-specification-order-bug.html +mipmap-fbo.html +tex-3d-size-limit.html +tex-image-and-sub-image-with-array-buffer-view-sub-source.html +tex-image-with-bad-args.html +tex-image-with-bad-args-from-dom-elements.html +tex-image-with-different-data-source.html +tex-input-validation.html +tex-mipmap-levels.html +tex-new-formats.html +--min-version 2.0.1 tex-srgb-mipmap.html +tex-storage-2d.html +tex-storage-and-subimage-3d.html +tex-storage-compressed-formats.html +tex-unpack-params.html +texel-fetch-undefined.html +texture-npot.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/active-3d-texture-bug.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/active-3d-texture-bug.html new file mode 100644 index 00000000000..98d714c2997 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/active-3d-texture-bug.html @@ -0,0 +1,147 @@ + + + + + + +WebGL Active TEXTURE1 Bug Tests + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/copy-texture-image-luma-format.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/copy-texture-image-luma-format.html new file mode 100644 index 00000000000..4dfee411d15 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/copy-texture-image-luma-format.html @@ -0,0 +1,189 @@ + + + + + + +WebGL CopyTexSubImage Tests + + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/copy-texture-image-webgl-specific.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/copy-texture-image-webgl-specific.html new file mode 100644 index 00000000000..3924bdd3d07 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/copy-texture-image-webgl-specific.html @@ -0,0 +1,326 @@ + + + + + + +WebGL CopyTexImage Tests + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/copy-texture-image.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/copy-texture-image.html new file mode 100644 index 00000000000..760f74eaa52 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/copy-texture-image.html @@ -0,0 +1,250 @@ + + + + + + +WebGL CopyTexImage Tests + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/gl-get-tex-parameter.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/gl-get-tex-parameter.html new file mode 100644 index 00000000000..4fa3bc5d3d1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/gl-get-tex-parameter.html @@ -0,0 +1,50 @@ + + + + + + +WebGL getTexParameter test + + + + + + + + +
+
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/integer-cubemap-specification-order-bug.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/integer-cubemap-specification-order-bug.html new file mode 100644 index 00000000000..4070c6a24a9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/integer-cubemap-specification-order-bug.html @@ -0,0 +1,192 @@ + + + + + + +WebGL Integer Cubemap Texture Specification Order Bug Test + + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/integer-cubemap-texture-sampling.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/integer-cubemap-texture-sampling.html new file mode 100644 index 00000000000..586ee2997bd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/integer-cubemap-texture-sampling.html @@ -0,0 +1,192 @@ + + + + + + +WebGL Integer Cubemap Texture Sampling Tests + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/mipmap-fbo.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/mipmap-fbo.html new file mode 100644 index 00000000000..6dbe245200c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/mipmap-fbo.html @@ -0,0 +1,73 @@ + + + + + + +Test if mipmap incomplete textures can be used as FBO attachments + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-3d-size-limit.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-3d-size-limit.html new file mode 100644 index 00000000000..caacd2d8b43 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-3d-size-limit.html @@ -0,0 +1,186 @@ + + + + + + +WebGL FramebufferTextureLayer Test + + + + + + + +
+
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-and-sub-image-with-array-buffer-view-sub-source.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-and-sub-image-with-array-buffer-view-sub-source.html new file mode 100644 index 00000000000..88d4548329e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-and-sub-image-with-array-buffer-view-sub-source.html @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-with-bad-args-from-dom-elements.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-with-bad-args-from-dom-elements.html new file mode 100644 index 00000000000..e652b9f3e81 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-with-bad-args-from-dom-elements.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-with-bad-args.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-with-bad-args.html new file mode 100644 index 00000000000..c459a222aea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-with-bad-args.html @@ -0,0 +1,78 @@ + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-with-different-data-source.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-with-different-data-source.html new file mode 100644 index 00000000000..41fe15af6cc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-image-with-different-data-source.html @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-input-validation.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-input-validation.html new file mode 100644 index 00000000000..611ddff7bb7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-input-validation.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-mipmap-levels.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-mipmap-levels.html new file mode 100644 index 00000000000..d71434a9b4a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-mipmap-levels.html @@ -0,0 +1,248 @@ + + + + + + +WebGL2 texture mipmap level conformance test. + + + + + + + + +
+
+ + + + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-new-formats.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-new-formats.html new file mode 100644 index 00000000000..9a2375e0412 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-new-formats.html @@ -0,0 +1,588 @@ + + + + + + +Conformance test for WebGL2 texture image formats specification + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-srgb-mipmap.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-srgb-mipmap.html new file mode 100644 index 00000000000..16dde03a253 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-srgb-mipmap.html @@ -0,0 +1,229 @@ + + + + + + +WebGL texture mipmap conformance test. + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-storage-2d.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-storage-2d.html new file mode 100644 index 00000000000..f3dcb729f00 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-storage-2d.html @@ -0,0 +1,296 @@ + + + + + + +texStorage2D conformance test + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-storage-and-subimage-3d.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-storage-and-subimage-3d.html new file mode 100644 index 00000000000..dad3e66c09c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-storage-and-subimage-3d.html @@ -0,0 +1,236 @@ + + + + + + +texStorage3D and texSubImage3D conformance test + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-storage-compressed-formats.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-storage-compressed-formats.html new file mode 100644 index 00000000000..80d792e3151 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-storage-compressed-formats.html @@ -0,0 +1,126 @@ + + + + + + +Conformance test for WebGL2 texStorage2D and texStorage3D with compressed format + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-unpack-params.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-unpack-params.html new file mode 100644 index 00000000000..8f1ce0c63e8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/tex-unpack-params.html @@ -0,0 +1,614 @@ + + + + + + +WebGL2 texture unpack parameters conformance test. + + + + + + + + +
+
+ + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/texel-fetch-undefined.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/texel-fetch-undefined.html new file mode 100644 index 00000000000..ad0b4c53d8b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/texel-fetch-undefined.html @@ -0,0 +1,106 @@ + + + + + + +WebGL texel fetch test. + + + + + + + + + + +
+
+ + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/texture-npot.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/texture-npot.html new file mode 100644 index 00000000000..6a7bab24131 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/misc/texture-npot.html @@ -0,0 +1,183 @@ + + + + + + +WebGL2 Non-Power of 2 texture conformance test. + + + + + + + + +
+
+ + + + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/00_test_list.txt new file mode 100644 index 00000000000..5ad5e132ffb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/00_test_list.txt @@ -0,0 +1,66 @@ +tex-2d-r8-red-unsigned_byte.html +tex-2d-r16f-red-half_float.html +tex-2d-r16f-red-float.html +tex-2d-r32f-red-float.html +tex-2d-r8ui-red_integer-unsigned_byte.html +tex-2d-rg8-rg-unsigned_byte.html +tex-2d-rg16f-rg-half_float.html +tex-2d-rg16f-rg-float.html +tex-2d-rg32f-rg-float.html +tex-2d-rg8ui-rg_integer-unsigned_byte.html +tex-2d-rgb8-rgb-unsigned_byte.html +tex-2d-srgb8-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_short_5_6_5.html +tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-2d-r11f_g11f_b10f-rgb-half_float.html +tex-2d-r11f_g11f_b10f-rgb-float.html +tex-2d-rgb9_e5-rgb-half_float.html +tex-2d-rgb9_e5-rgb-float.html +tex-2d-rgb16f-rgb-half_float.html +tex-2d-rgb16f-rgb-float.html +tex-2d-rgb32f-rgb-float.html +tex-2d-rgb8ui-rgb_integer-unsigned_byte.html +tex-2d-rgba8-rgba-unsigned_byte.html +tex-2d-srgb8_alpha8-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-2d-rgba4-rgba-unsigned_byte.html +tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba16f-rgba-half_float.html +tex-2d-rgba16f-rgba-float.html +tex-2d-rgba32f-rgba-float.html +tex-2d-rgba8ui-rgba_integer-unsigned_byte.html +tex-3d-r8-red-unsigned_byte.html +tex-3d-r16f-red-half_float.html +tex-3d-r16f-red-float.html +tex-3d-r32f-red-float.html +tex-3d-r8ui-red_integer-unsigned_byte.html +tex-3d-rg8-rg-unsigned_byte.html +tex-3d-rg16f-rg-half_float.html +tex-3d-rg16f-rg-float.html +tex-3d-rg32f-rg-float.html +tex-3d-rg8ui-rg_integer-unsigned_byte.html +tex-3d-rgb8-rgb-unsigned_byte.html +tex-3d-srgb8-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_short_5_6_5.html +tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-3d-r11f_g11f_b10f-rgb-half_float.html +tex-3d-r11f_g11f_b10f-rgb-float.html +tex-3d-rgb9_e5-rgb-half_float.html +tex-3d-rgb9_e5-rgb-float.html +tex-3d-rgb16f-rgb-half_float.html +tex-3d-rgb16f-rgb-float.html +tex-3d-rgb32f-rgb-float.html +tex-3d-rgb8ui-rgb_integer-unsigned_byte.html +tex-3d-rgba8-rgba-unsigned_byte.html +tex-3d-srgb8_alpha8-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-3d-rgba4-rgba-unsigned_byte.html +tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-3d-rgba16f-rgba-half_float.html +tex-3d-rgba16f-rgba-float.html +tex-3d-rgba32f-rgba-float.html +tex-3d-rgba8ui-rgba_integer-unsigned_byte.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..8f7ba64e711 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..9f2ea3f1099 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..8cb4a377101 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r16f-red-float.html new file mode 100644 index 00000000000..f825d9bcedd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r16f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r16f-red-half_float.html new file mode 100644 index 00000000000..d818e76b433 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r16f-red-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r32f-red-float.html new file mode 100644 index 00000000000..ae4a0f2ae3b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r32f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..9ed8be8c99a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r8-red-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..3dc1b9c2085 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg16f-rg-float.html new file mode 100644 index 00000000000..4deb86dbda0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg16f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..f9756c1eb5d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg16f-rg-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg32f-rg-float.html new file mode 100644 index 00000000000..ca99ff00166 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg32f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..77d520e811e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg8-rg-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..39a0f224eef --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..f7ee085e686 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb16f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..46f29632e9b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb16f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..80a7f32e069 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb32f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..3aff625e9fa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..d4c829b3164 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..f8242792c38 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..0786edc5dc0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..9908733ff1e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..2cc215d7d91 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..9f3127e7e83 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb9_e5-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..9508f83f855 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..357ce5d64b9 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba16f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..89e3bcaf062 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba16f-rgba-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..7d52595971e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba32f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..6a26e41afb3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..6530f77ffd0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..cb4f1c89143 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..2ca5178de72 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..f15e4b9b44a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..8196795f9ee --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..6dbb77130fb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..4126adbe662 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..1f2055c64ad --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r16f-red-float.html new file mode 100644 index 00000000000..862aa951648 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r16f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r16f-red-half_float.html new file mode 100644 index 00000000000..42fc8c19626 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r16f-red-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r32f-red-float.html new file mode 100644 index 00000000000..10ea10e3aeb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r32f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..b8773e9856c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r8-red-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..8746338160d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg16f-rg-float.html new file mode 100644 index 00000000000..8165ef9bb87 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg16f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..1036f60daf2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg16f-rg-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg32f-rg-float.html new file mode 100644 index 00000000000..068aa4adecb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg32f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..08e80b40715 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg8-rg-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..dc37c62daa0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..373d3c38d56 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb16f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..13d09101cf1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb16f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..54921b7b5ca --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb32f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..5c100fcde2f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..53524db2705 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..7004ac1503b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..dc321cc374f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..6019f6b27ec --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..263aa6f9729 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..b0fcf8c2d33 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb9_e5-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..b9053929b52 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..5113080a93b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba16f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..b8ca5930224 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba16f-rgba-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..57512921939 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba32f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..fd68c78dcd7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..38d5d209d05 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..47f9129a9d8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..a2b8b921360 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..246de7d3edf --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..9304ec6e47b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/svg_image/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/00_test_list.txt new file mode 100644 index 00000000000..5ad5e132ffb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/00_test_list.txt @@ -0,0 +1,66 @@ +tex-2d-r8-red-unsigned_byte.html +tex-2d-r16f-red-half_float.html +tex-2d-r16f-red-float.html +tex-2d-r32f-red-float.html +tex-2d-r8ui-red_integer-unsigned_byte.html +tex-2d-rg8-rg-unsigned_byte.html +tex-2d-rg16f-rg-half_float.html +tex-2d-rg16f-rg-float.html +tex-2d-rg32f-rg-float.html +tex-2d-rg8ui-rg_integer-unsigned_byte.html +tex-2d-rgb8-rgb-unsigned_byte.html +tex-2d-srgb8-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_short_5_6_5.html +tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-2d-r11f_g11f_b10f-rgb-half_float.html +tex-2d-r11f_g11f_b10f-rgb-float.html +tex-2d-rgb9_e5-rgb-half_float.html +tex-2d-rgb9_e5-rgb-float.html +tex-2d-rgb16f-rgb-half_float.html +tex-2d-rgb16f-rgb-float.html +tex-2d-rgb32f-rgb-float.html +tex-2d-rgb8ui-rgb_integer-unsigned_byte.html +tex-2d-rgba8-rgba-unsigned_byte.html +tex-2d-srgb8_alpha8-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-2d-rgba4-rgba-unsigned_byte.html +tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba16f-rgba-half_float.html +tex-2d-rgba16f-rgba-float.html +tex-2d-rgba32f-rgba-float.html +tex-2d-rgba8ui-rgba_integer-unsigned_byte.html +tex-3d-r8-red-unsigned_byte.html +tex-3d-r16f-red-half_float.html +tex-3d-r16f-red-float.html +tex-3d-r32f-red-float.html +tex-3d-r8ui-red_integer-unsigned_byte.html +tex-3d-rg8-rg-unsigned_byte.html +tex-3d-rg16f-rg-half_float.html +tex-3d-rg16f-rg-float.html +tex-3d-rg32f-rg-float.html +tex-3d-rg8ui-rg_integer-unsigned_byte.html +tex-3d-rgb8-rgb-unsigned_byte.html +tex-3d-srgb8-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_short_5_6_5.html +tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-3d-r11f_g11f_b10f-rgb-half_float.html +tex-3d-r11f_g11f_b10f-rgb-float.html +tex-3d-rgb9_e5-rgb-half_float.html +tex-3d-rgb9_e5-rgb-float.html +tex-3d-rgb16f-rgb-half_float.html +tex-3d-rgb16f-rgb-float.html +tex-3d-rgb32f-rgb-float.html +tex-3d-rgb8ui-rgb_integer-unsigned_byte.html +tex-3d-rgba8-rgba-unsigned_byte.html +tex-3d-srgb8_alpha8-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-3d-rgba4-rgba-unsigned_byte.html +tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-3d-rgba16f-rgba-half_float.html +tex-3d-rgba16f-rgba-float.html +tex-3d-rgba32f-rgba-float.html +tex-3d-rgba8ui-rgba_integer-unsigned_byte.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..7a4f99ca2cc --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..d1e7fe87ac0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..0f8a1f53ada --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r16f-red-float.html new file mode 100644 index 00000000000..1125cc99582 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r16f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r16f-red-half_float.html new file mode 100644 index 00000000000..bf6cebdf6ed --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r16f-red-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r32f-red-float.html new file mode 100644 index 00000000000..6363048d9a2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r32f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..746010a6f4e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r8-red-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..65b9436dca5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg16f-rg-float.html new file mode 100644 index 00000000000..639047c2346 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg16f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..8a0c09b7f62 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg16f-rg-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg32f-rg-float.html new file mode 100644 index 00000000000..c682b085f53 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg32f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..9fef207243c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg8-rg-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..c3151708218 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..105f674a664 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb16f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..40582d24a9d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb16f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..efb91ad1ba4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb32f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..f5605fed9ba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..df4e5267d72 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..0ba8d740115 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..5ced9831b7e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..81176424682 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..064a0490d2e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..6f0462f24ae --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb9_e5-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..0176a25aa74 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..83abb323a4d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba16f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..e03cfb94572 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba16f-rgba-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..87f22fa3758 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba32f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..04b253043fe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..3d9c5ddf781 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..0398e73565d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..0d900fd7070 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..11f9d3f974d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..de387d34097 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..2cfe6a42c24 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..5c7c6b5e68b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..3f316e2838c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r16f-red-float.html new file mode 100644 index 00000000000..0ed7c7c8827 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r16f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r16f-red-half_float.html new file mode 100644 index 00000000000..6b6bb9ab429 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r16f-red-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r32f-red-float.html new file mode 100644 index 00000000000..81b36abaeea --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r32f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..e4ac49a01ed --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r8-red-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..1e15b95649a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg16f-rg-float.html new file mode 100644 index 00000000000..6faaeb0d464 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg16f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..9806fb10d90 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg16f-rg-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg32f-rg-float.html new file mode 100644 index 00000000000..1caacdfd5b3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg32f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..9422c31ab98 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg8-rg-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..366f1ca19de --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..8a05b09d708 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb16f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..569fb1729a6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb16f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..29bf90237f4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb32f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..5199c5dff2a --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..151c3bd8880 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..a6ddba35d63 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..62a7db1dfe7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..c42f6a77f9c --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..17a2d80eb2e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb9_e5-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb9_e5-rgb-float.html new file mode 100644 index 00000000000..97a35b53720 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb9_e5-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb9_e5-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb9_e5-rgb-half_float.html new file mode 100644 index 00000000000..591b2209475 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgb9_e5-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..3a4d4b04bd5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba16f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..742f3894715 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba16f-rgba-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..4f07e41b402 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba32f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..44d16a6fee2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..e340f3028e4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..9b695a3cfaa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..0849f462b6e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..6ac55129878 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..0ed88f9d7a0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/video/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/00_test_list.txt new file mode 100644 index 00000000000..11f7a21276e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/00_test_list.txt @@ -0,0 +1,66 @@ +tex-2d-r8-red-unsigned_byte.html +tex-2d-r16f-red-half_float.html +tex-2d-r16f-red-float.html +tex-2d-r32f-red-float.html +tex-2d-r8ui-red_integer-unsigned_byte.html +tex-2d-rg8-rg-unsigned_byte.html +tex-2d-rg16f-rg-half_float.html +tex-2d-rg16f-rg-float.html +tex-2d-rg32f-rg-float.html +tex-2d-rg8ui-rg_integer-unsigned_byte.html +tex-2d-rgb8-rgb-unsigned_byte.html +tex-2d-srgb8-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_byte.html +tex-2d-rgb565-rgb-unsigned_short_5_6_5.html +tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-2d-r11f_g11f_b10f-rgb-half_float.html +tex-2d-r11f_g11f_b10f-rgb-float.html +//tex-2d-rgb9_e5-rgb-half_float.html // crbug.com/663188 , Apple Radar 29259244 +//tex-2d-rgb9_e5-rgb-float.html // crbug.com/663188 , Apple Radar 29259244 +tex-2d-rgb16f-rgb-half_float.html +tex-2d-rgb16f-rgb-float.html +tex-2d-rgb32f-rgb-float.html +tex-2d-rgb8ui-rgb_integer-unsigned_byte.html +tex-2d-rgba8-rgba-unsigned_byte.html +tex-2d-srgb8_alpha8-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_byte.html +tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-2d-rgba4-rgba-unsigned_byte.html +tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-2d-rgba16f-rgba-half_float.html +tex-2d-rgba16f-rgba-float.html +tex-2d-rgba32f-rgba-float.html +tex-2d-rgba8ui-rgba_integer-unsigned_byte.html +tex-3d-r8-red-unsigned_byte.html +tex-3d-r16f-red-half_float.html +tex-3d-r16f-red-float.html +tex-3d-r32f-red-float.html +tex-3d-r8ui-red_integer-unsigned_byte.html +tex-3d-rg8-rg-unsigned_byte.html +tex-3d-rg16f-rg-half_float.html +tex-3d-rg16f-rg-float.html +tex-3d-rg32f-rg-float.html +tex-3d-rg8ui-rg_integer-unsigned_byte.html +tex-3d-rgb8-rgb-unsigned_byte.html +tex-3d-srgb8-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_byte.html +tex-3d-rgb565-rgb-unsigned_short_5_6_5.html +tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html +tex-3d-r11f_g11f_b10f-rgb-half_float.html +tex-3d-r11f_g11f_b10f-rgb-float.html +//tex-3d-rgb9_e5-rgb-half_float.html // crbug.com/663188 , Apple Radar 29259244 +//tex-3d-rgb9_e5-rgb-float.html // crbug.com/663188 , Apple Radar 29259244 +tex-3d-rgb16f-rgb-half_float.html +tex-3d-rgb16f-rgb-float.html +tex-3d-rgb32f-rgb-float.html +tex-3d-rgb8ui-rgb_integer-unsigned_byte.html +tex-3d-rgba8-rgba-unsigned_byte.html +tex-3d-srgb8_alpha8-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_byte.html +tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html +tex-3d-rgba4-rgba-unsigned_byte.html +tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html +tex-3d-rgba16f-rgba-half_float.html +tex-3d-rgba16f-rgba-float.html +tex-3d-rgba32f-rgba-float.html +tex-3d-rgba8ui-rgba_integer-unsigned_byte.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..183872c524e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..e1639ffac64 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..9f845580239 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r16f-red-float.html new file mode 100644 index 00000000000..9480a5b96c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r16f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r16f-red-half_float.html new file mode 100644 index 00000000000..01a898385fa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r16f-red-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r32f-red-float.html new file mode 100644 index 00000000000..5f67d4971b0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r32f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..1c4aee02653 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r8-red-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..f7192bbbeb1 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg16f-rg-float.html new file mode 100644 index 00000000000..950849099b7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg16f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..44e3d13edf4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg16f-rg-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg32f-rg-float.html new file mode 100644 index 00000000000..5b6711a0932 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg32f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..57aea79cacd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg8-rg-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..0217abfd739 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..9aea6a7e554 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb16f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..d2c1897527f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb16f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..ccd84f45456 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb32f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..4586d7d4257 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..7267de4f1b8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..a46850349be --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..c4bd164cb9d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..a1146ef45c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..b17404e2361 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..f2ddb209217 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba16f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..193455c3007 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba16f-rgba-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..d962aee21fe --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba32f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..cdc18ca4456 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..dd5e504c7c4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..805d1ce9015 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..487132ecb5b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..2d4667b2c56 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..7420c932a5b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r11f_g11f_b10f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r11f_g11f_b10f-rgb-float.html new file mode 100644 index 00000000000..aa6c5756491 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r11f_g11f_b10f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r11f_g11f_b10f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r11f_g11f_b10f-rgb-half_float.html new file mode 100644 index 00000000000..1ea0ccc5f2b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r11f_g11f_b10f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html new file mode 100644 index 00000000000..c129b7f795b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r16f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r16f-red-float.html new file mode 100644 index 00000000000..47eba2fc3d3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r16f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r16f-red-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r16f-red-half_float.html new file mode 100644 index 00000000000..5785cd2a2c5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r16f-red-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r32f-red-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r32f-red-float.html new file mode 100644 index 00000000000..543346f93d2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r32f-red-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r8-red-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r8-red-unsigned_byte.html new file mode 100644 index 00000000000..bcfc4828826 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r8-red-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r8ui-red_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r8ui-red_integer-unsigned_byte.html new file mode 100644 index 00000000000..430d2a795bb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-r8ui-red_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg16f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg16f-rg-float.html new file mode 100644 index 00000000000..702683c7690 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg16f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg16f-rg-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg16f-rg-half_float.html new file mode 100644 index 00000000000..30205d9ae10 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg16f-rg-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg32f-rg-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg32f-rg-float.html new file mode 100644 index 00000000000..342effb4033 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg32f-rg-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg8-rg-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg8-rg-unsigned_byte.html new file mode 100644 index 00000000000..7b3f7f8a6e2 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg8-rg-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg8ui-rg_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg8ui-rg_integer-unsigned_byte.html new file mode 100644 index 00000000000..ca168d01423 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rg8ui-rg_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb16f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb16f-rgb-float.html new file mode 100644 index 00000000000..a2d18ac1faa --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb16f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb16f-rgb-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb16f-rgb-half_float.html new file mode 100644 index 00000000000..ec1e11052ba --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb16f-rgb-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb32f-rgb-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb32f-rgb-float.html new file mode 100644 index 00000000000..5ca3317927f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb32f-rgb-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb565-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb565-rgb-unsigned_byte.html new file mode 100644 index 00000000000..5aee40fa742 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb565-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html new file mode 100644 index 00000000000..7c854c416c3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb565-rgb-unsigned_short_5_6_5.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb5_a1-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb5_a1-rgba-unsigned_byte.html new file mode 100644 index 00000000000..fcd0f53fac4 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb5_a1-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html new file mode 100644 index 00000000000..34da6c39e77 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..00d5953681e --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html new file mode 100644 index 00000000000..f2d3a2d74fd --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgb8ui-rgb_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba16f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba16f-rgba-float.html new file mode 100644 index 00000000000..9c9a18ce275 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba16f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba16f-rgba-half_float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba16f-rgba-half_float.html new file mode 100644 index 00000000000..ae04c52853b --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba16f-rgba-half_float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba32f-rgba-float.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba32f-rgba-float.html new file mode 100644 index 00000000000..d572bcbd531 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba32f-rgba-float.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba4-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba4-rgba-unsigned_byte.html new file mode 100644 index 00000000000..ae7e5f20df3 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba4-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html new file mode 100644 index 00000000000..2defbc1266d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..f5b02948aa6 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html new file mode 100644 index 00000000000..ba0e96bdab5 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-rgba8ui-rgba_integer-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-srgb8-rgb-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-srgb8-rgb-unsigned_byte.html new file mode 100644 index 00000000000..9f517c7b7cb --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-srgb8-rgb-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html new file mode 100644 index 00000000000..84e8116beb8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/textures/webgl_canvas/tex-3d-srgb8_alpha8-rgba-unsigned_byte.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/00_test_list.txt new file mode 100644 index 00000000000..84da3d3ca61 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/00_test_list.txt @@ -0,0 +1,3 @@ +transform_feedback.html +two-unreferenced-varyings.html +unwritten-output-defaults-to-zero.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/transform_feedback.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/transform_feedback.html new file mode 100644 index 00000000000..c8f4d1ab8c0 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/transform_feedback.html @@ -0,0 +1,456 @@ + + + + + + +WebGL Transform Feedback Conformance Tests + + + + + + + +
+ +
+ + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/two-unreferenced-varyings.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/two-unreferenced-varyings.html new file mode 100644 index 00000000000..7c463f41679 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/two-unreferenced-varyings.html @@ -0,0 +1,159 @@ + + + + + + +WebGL Transform Feedback Conformance Tests + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/unwritten-output-defaults-to-zero.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/unwritten-output-defaults-to-zero.html new file mode 100644 index 00000000000..376f169aad7 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/transform_feedback/unwritten-output-defaults-to-zero.html @@ -0,0 +1,156 @@ + + + + + + +WebGL Transform Feedback Conformance Tests + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/vertex_arrays/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/vertex_arrays/00_test_list.txt new file mode 100644 index 00000000000..5b59a217393 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/vertex_arrays/00_test_list.txt @@ -0,0 +1 @@ +vertex-array-object.html diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/vertex_arrays/vertex-array-object.html b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/vertex_arrays/vertex-array-object.html new file mode 100644 index 00000000000..47b5d560d7f --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/conformance2/vertex_arrays/vertex-array-object.html @@ -0,0 +1,605 @@ + + + + + + +WebGL vertex_array_object Conformance Tests + + + + + + + +
+ +
+ + + + + + + diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/00_test_list.txt b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/00_test_list.txt new file mode 100644 index 00000000000..32ec5067a61 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/00_test_list.txt @@ -0,0 +1,7 @@ +// files that end in .txt list other tests +// other lines are assumed to be .html files + +--min-version 1.0.4 --max-version 1.9.9 data/gles2/shaders/00_test_list.txt +--min-version 2.0.0 data/gles3/shaders/00_test_list.txt +--min-version 2.0.0 framework/opengl/simplereference/00_test_list.txt +--min-version 2.0.0 functional/gles3/00_test_list.txt diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/LICENSE b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/LICENSE new file mode 100644 index 00000000000..0a93ef71868 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/README.md b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/README.md new file mode 100644 index 00000000000..bdaf88f0507 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/README.md @@ -0,0 +1,21 @@ +DEQP tests for WebGL +=========================================== + +1. Running +Tests can be run as part of the WebGL Conformance suite or individually +by navigating to one of pages in functional/gles3 or in data/gles(2|3)/shaders/ + +2. Filtering +One can limit the tests to run with a 'filter' query. For example: + +functional/gles3/textureformat.html?filter=2d + +will executed only the tests with '2d' in the test name. +Filter query accepts a regular expression. + +3. Compiling. +The tests have been annotated for closure and can be compiled with run-closure script. + +4. Implementation notes. +Tests use a minimal subset of google closure library for dependency management. +The closure compiler is used solely for error checking. The compiler output is discarded. diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/build.py b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/build.py new file mode 100644 index 00000000000..5349a6c939d --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/build.py @@ -0,0 +1,283 @@ +#!/usr/bin/env python + +# +# Copyright (c) 2015 The Khronos Group Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and/or associated documentation files (the +# "Materials"), to deal in the Materials without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Materials, and to +# permit persons to whom the Materials are furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Materials. +# +# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +# + +# Author: Mobica LTD + +import sys +import re +import os +import subprocess +import threading +from sys import stdout, stderr, argv + +# Running this script +# 1. To rebuild all dependencies: +# $ build.py deps +# 2. To build all targets without rebuilding dependencies +# $ build.py build +# 3. To build a single target without rebuilding dependencies +# $ build.py build +# See the table below for available targets +# 4. To rebuild all dependencies and targets +# $ build.py +# 5. To build dependencies for a single target +# $ build.py deps +# 6. To build dependencies for and compile a single target +# $ build.py + +# List of targets (short target name, closure namespace) +targets = { + 'textureformat': 'functional.gles3.es3fTextureFormatTests', + 'fboCompletenessTests': 'functional.gles3.es3fFboCompletenessTests', + 'fbomultisampletests': 'functional.gles3.es3fFboMultisampleTests', + 'fbostencilbuffertests': 'functional.gles3.es3fFboStencilbufferTests', + 'fragmentoutput': 'functional.gles3.es3fFragmentOutputTests', + 'framebufferblittests': 'functional.gles3.es3fFramebufferBlitTests', + 'instancedrenderingtests': 'functional.gles3.es3fInstancedRenderingTests', + 'pixelBufferObjectTest': 'functional.gles3.es3fPixelBufferObjectTest', + 'primitiverestarttests': 'functional.gles3.es3fPrimitiveRestartTests', + 'samplerobjecttests': 'functional.gles3.es3fSamplerObjectTests', + 'transformFeedbackTests': 'functional.gles3.es3fTransformFeedbackTests', + 'uniformapi': 'functional.gles3.es3fUniformApiTests', + 'uniformbuffers': 'functional.gles3.es3fUniformBlockTests', + 'vertexarrays': 'functional.gles3.es3fVertexArrayTests', + 'shaderlibrary': 'modules.shared.glsShaderLibrary', + 'negativebuffer': 'functional.gles3.es3fNegativeBufferApiTests', + 'sglrReferenceContextTest': 'framework.opengl.simplereference.sglrReferenceContextTest', + 'lifetime': 'functional.gles3.es3fLifetimeTests', + 'draw': 'functional.gles3.es3fDrawTests', + 'attriblocation': 'functional.gles3.es3fAttribLocationTests', + 'textureShadowTests': 'functional.gles3.es3fTextureShadowTests', + 'texturewrap': 'functional.gles3.es3fTextureWrapTests', + 'negativetextureapi': 'functional.gles3.es3fNegativeTextureApiTests', + 'multisample': 'functional.gles3.es3fMultisampleTests', + 'negativefragmentapi': 'functional.gles3.es3fNegativeFragmentApiTests', + 'negativevertexarrayapi': 'functional.gles3.es3fNegativeVertexArrayApiTests', + 'negativestateapi' : 'functional.gles3.es3fNegativeStateApiTests', + 'negativeshaderapi' : 'functional.gles3.es3fNegativeShaderApiTests', + 'rasterizerdiscard' : 'functional.gles3.es3fRasterizerDiscardTests', + 'buffercopy' : 'functional.gles3.es3fBufferCopyTests', + 'shaderindexing' : 'functional.gles3.es3fShaderIndexingTests', + 'shaderloop' : 'functional.gles3.es3fShaderLoopTests', + 'shaderstruct' : 'functional.gles3.es3fShaderStructTests', + 'shaderswitch' : 'functional.gles3.es3fShaderSwitchTests', + 'fborender' : 'functional.gles3.es3fFboRenderTest', + 'shaderderivate' : 'functional.gles3.es3fShaderDerivateTests', + 'builtinprecision' : 'functional.gles3.es3fBuiltinPrecisionTests', + 'shaderbuiltinvar' : 'functional.gles3.es3fShaderBuiltinVarTests', + 'texturefiltering' : 'functional.gles3.es3fTextureFilteringTests', + 'fbocolor' : 'functional.gles3.es3fFboColorbufferTests', + 'fragdepth' : 'functional.gles3.es3fFragDepthTests', + 'shaderop' : 'functional.gles3.es3fShaderOperatorTests', + 'vao' : 'functional.gles3.es3fVertexArrayObjectTests', + 'clip' : 'functional.gles3.es3fClippingTests', + 'inv' : 'functional.gles3.es3fFboInvalidateTests', + 'defvertattr' : 'functional.gles3.es3fDefaultVertexAttributeTests', + 'occlusion' : 'functional.gles3.es3fOcclusionQueryTests', + 'shaderapi' : 'functional.gles3.es3fShaderApiTests', + 'shaderpackingfunction' : 'functional.gles3.es3fShaderPackingFunctionTests', + 'shadercommonfunction' : 'functional.gles3.es3fShaderCommonFunctionTests', + 'shadermatrix' : 'functional.gles3.es3fShaderMatrixTest', + 'shaderprecision' : 'functional.gles3.es3fShaderPrecisionTests', + 'bstate': 'functional.gles3.es3fBooleanStateQuery', + 'shaderstate': 'functional.gles3.es3fShaderStateQueryTests', + 'fbostate' : 'functional.gles3.es3fFboStateQueryTests', + 'rbostate' : 'functional.gles3.es3fRboStateQueryTests', + 'bufferstate' : 'functional.gles3.es3fBufferObjectQueryTests', + 'samplerstate' : 'functional.gles3.es3fSamplerStateQueryTests', + 'texstate' : 'functional.gles3.es3fTextureStateQuery', + 'internalformatstate' : 'functional.gles3.es3fInternalFormatQueryTests', + 'texturespecification' : 'functional.gles3.es3fTextureSpecificationTests', + 'shadertexturefunction' : 'functional.gles3.es3fShaderTextureFunctionTests', + 'sync' : 'functional.gles3.es3fSyncTests', + 'readpixel' : 'functional.gles3.es3fReadPixelTests', + 'stringquery' : 'functional.gles3.es3fStringQueryTests', + 'indexedstate' : 'functional.gles3.es3fIndexedStateQueryTests', + 'integerstate' : 'functional.gles3.es3fIntegerStateQueryTests', + 'floatstate' : 'functional.gles3.es3fFloatStateQueryTests' +} + +total_errors = 0 +total_warnings = 0 + +results = dict() + +def dep_filename(target): + return target + '.dep' + +def compiled_filename(target): + return target + '.compiled' + +def write_to_file(outfile, cmdLine, redirect_stderr): + stderr = None + if redirect_stderr: + stderr = subprocess.STDOUT + + with open(outfile, "w") as out_file: + proc = subprocess.Popen(cmdLine, shell=True, stdout=subprocess.PIPE, stderr=stderr) + while proc.poll() is None: + line = proc.stdout.readline() + out_file.write(line) + + out_file.flush() + proc.wait() + +def read_file(file_path): + #File exist + if not file_exists(file_path): + sys.exit(2) + + fo = open(file_path) + lines = fo.read() + fo.close() + return lines + +def file_exists(file_path): + if not os.path.exists: + print "The file " + file_name + " doesn't exists" + return False + return True + +def build_deps(target, namespace): + cmdLine = 'python ../closure-library/closure/bin/build/closurebuilder.py --root=../closure-library --root=. --namespace=' + namespace + print cmdLine + write_to_file(dep_filename(target), cmdLine, False) + +def build_all_deps(): + for target in targets.keys(): + build_deps(target, targets[target]) + +def buildDepsFile(): + # the parameter "--root_with_prefix" is the relative path from the file goog/base.js to the root of the .js files we + # are working on. + cmdBuildDeps = 'python ../closure-library/closure/bin/build/depswriter.py --root_with_prefix=". ../../../deqp" > deqp-deps.js' + + # Calls the python program that generates the google closure dependencies + # write_to_file('deqp-deps.js', cmdBuildDeps, False) + proc = subprocess.Popen(cmdBuildDeps, shell=True, stdout=subprocess.PIPE, stderr=None) + proc.wait() + +def build_target(target, namespace): + global total_errors + global total_warnings + deps = read_file(dep_filename(target)) + cmdLine = 'java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --warning_level VERBOSE --jscomp_warning undefinedVars --externs compiler_additional_extern.js' + for dep in deps.split('\n'): + dep = dep.strip() + if len(dep) > 0: + cmdLine += ' --js ' + dep + cmdLine += ' --closure_entry_point=' + namespace + print cmdLine + filename = compiled_filename(target) + write_to_file(filename, cmdLine, True) + compiled = read_file(filename) + result = re.search(r'(\d*)\s*error\(s\),\s*(\d*)\s*warning\(s\)', compiled) + errors = 0 + warnings = 0 + if result: + print target + ': ' + result.group(0) + errors = int(result.group(1)) + warnings = int(result.group(2)) + total_errors += errors + total_warnings += warnings + results[target] = [errors, warnings] + +def build_all_targets(): + for target in targets.keys(): + build_target(target, targets[target]) + +def format_target(target): + deps = read_file(dep_filename(target)) + fixjsstyle = 'fixjsstyle.py' + reformat = 'reformatting_tool.py' + for dep in deps.split('\n'): + dep = dep.strip() + if len(dep) > 0 and not re.search('closure-library.*base\.js', dep): + print fixjsstyle + ' ' + dep + subprocess.call(['python', fixjsstyle, dep]) + print reformat + ' -f ' + dep + subprocess.call(['python', reformat, '-f', dep]) + +def format_all_targets(): + for target in targets.keys(): + format_target(target) + +def pass_or_fail(): + if total_errors + total_warnings == 0: + print "Passed" + elif len(results) > 1: #display the summary only when building more than one target + passed = [k for k, v in results.iteritems() if v[0] + v[1] == 0] + failed = dict((k, v) for k, v in results.iteritems() if v[0] + v[1] != 0) + print "\nBuild Summary:" + # Print first the tests that passed + for target in passed: + print "{0:>30}\tPassed".format(target+":") + + # Print tests that failed. Fixed-width to improve readability + for target in failed: + errors = failed[target][0] + warnings = failed[target][1] + print "{0:>30}\tErrors: {1:4}\tWarnings: {2:4}".format(target+":", errors, warnings) + print "Compilation failed: {} error(s), {} warning(s).".format(total_errors, total_warnings) + +def main(argv): + if len(argv) == 0: + build_all_deps() + build_all_targets() + buildDepsFile() + pass_or_fail() + elif (argv[0] == 'deps'): + if len(argv) == 2: + target = argv[1] + build_deps(target, targets[target]) + else: + build_all_deps() + elif (argv[0] == 'format'): + if len(argv) == 2: + target = argv[1] + format_target(target) + else: + format_all_targets() + elif (argv[0] == 'build'): + if len(argv) == 2: + target = argv[1] + build_target(target, targets[target]) + else: + build_all_targets() + pass_or_fail() + elif (argv[0] == 'depfile'): + buildDepsFile() + elif (argv[0] == 'list'): + print "List of available targets:" + for target in targets.keys(): + print "\t{}".format(target) + else: + target = argv[0] + build_deps(target, targets[target]) + build_target(target, targets[target]) + pass_or_fail() + +if __name__ == '__main__': + main(sys.argv[1:]) diff --git a/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/compiler.jar b/tests/wpt/mozilla/tests/webgl/conformance-2.0.0/deqp/compiler.jar new file mode 100644 index 0000000000000000000000000000000000000000..940f408ee5d8f8b4557f856f7f513c5c3632346f GIT binary patch literal 6220019 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

M%Mc$z9 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

;vVmUkv}7-}j&GVl612 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 z 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�?+ST|@-XgjrxSa{ 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 z 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ⅈ+JMT*v{54h34;#z-d-wpJ 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%0AOMC+cj}?I>(@2;(n|~GyV?|how>(o9JY0f^UI| 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

t!i#DG-^^VwSKs4 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�x#%dHx)5;2l$8z1T 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�FciB8@l;K3I;sNe=gmA|0FJN4zO`ApPi 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

;%@;r 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

0YUfo?=#gVnwaDzo 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%0DUDuB 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�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