summaryrefslogtreecommitdiffstats
path: root/dom/canvas/test/webgl-conf/checkout/conformance/misc/hint.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/canvas/test/webgl-conf/checkout/conformance/misc/hint.html')
-rw-r--r--dom/canvas/test/webgl-conf/checkout/conformance/misc/hint.html124
1 files changed, 124 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/conformance/misc/hint.html b/dom/canvas/test/webgl-conf/checkout/conformance/misc/hint.html
new file mode 100644
index 0000000000..f49f2248fc
--- /dev/null
+++ b/dom/canvas/test/webgl-conf/checkout/conformance/misc/hint.html
@@ -0,0 +1,124 @@
+<!--
+Copyright (c) 2022 The Khronos Group Inc.
+Use of this source code is governed by an MIT-style license that can be
+found in the LICENSE.txt file.
+-->
+
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset=utf-8>
+<link rel="stylesheet" href="../../resources/js-test-style.css"/>
+<script src="../../js/js-test-pre.js"></script>
+<script src="../../js/webgl-test-utils.js"></script>
+</head>
+<body>
+<div id="description"></div>
+<div id="console"></div>
+
+<script>
+"use strict";
+const wtu = WebGLTestUtils;
+description("Tests webgl.hint()");
+
+const gl = wtu.create3DContext();
+wtu.glErrorShouldBe(gl, gl.NO_ERROR, "Setup should succeed");
+
+// From https://kdashg.github.io/misc/gl/search-headers.html#str=_HINT
+const HINT_TARGETS = {
+ GL_GENERATE_MIPMAP_HINT: 0x8192,
+ GL_FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8B8B,
+ GL_BINNING_CONTROL_HINT_QCOM: 0x8FB0,
+ GL_PROGRAM_BINARY_RETRIEVABLE_HINT: 0x8257,
+ GL_LINE_SMOOTH_HINT: 0x0C52,
+ GL_POLYGON_SMOOTH_HINT: 0x0C53,
+ EGL_PRODUCER_MAX_FRAME_HINT_NV: 0x3337,
+ EGL_CONSUMER_MAX_FRAME_HINT_NV: 0x3338,
+ EGL_YUV_COLOR_SPACE_HINT_EXT: 0x327B,
+ EGL_SAMPLE_RANGE_HINT_EXT: 0x327C,
+ EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT: 0x327D,
+ EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT: 0x327E,
+ EGL_LOCK_USAGE_HINT_KHR: 0x30C5,
+ GL_TEXTURE_COMPRESSION_HINT: 0x84EF,
+ GL_TEXTURE_STORAGE_HINT_APPLE: 0x85BC,
+ GL_TRANSFORM_HINT_APPLE: 0x85B1,
+ GL_VERTEX_ARRAY_STORAGE_HINT_APPLE: 0x851F,
+ GL_CLIP_VOLUME_CLIPPING_HINT_EXT: 0x80F0,
+ GL_PACK_CMYK_HINT_EXT: 0x800E,
+ GL_UNPACK_CMYK_HINT_EXT: 0x800F,
+ GL_MULTISAMPLE_FILTER_HINT_NV: 0x8534,
+ GL_PREFER_DOUBLEBUFFER_HINT_PGI: 0x1A1F8,
+ GL_CONSERVE_MEMORY_HINT_PGI: 0x1A1FD,
+ GL_RECLAIM_MEMORY_HINT_PGI: 0x1A1FE,
+ GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI: 0x1A203,
+ GL_NATIVE_GRAPHICS_END_HINT_PGI: 0x1A204,
+ GL_ALWAYS_FAST_HINT_PGI: 0x1A20C,
+ GL_ALWAYS_SOFT_HINT_PGI: 0x1A20D,
+ GL_ALLOW_DRAW_OBJ_HINT_PGI: 0x1A20E,
+ GL_ALLOW_DRAW_WIN_HINT_PGI: 0x1A20F,
+ GL_ALLOW_DRAW_FRG_HINT_PGI: 0x1A210,
+ GL_ALLOW_DRAW_MEM_HINT_PGI: 0x1A211,
+ GL_STRICT_DEPTHFUNC_HINT_PGI: 0x1A216,
+ GL_STRICT_LIGHTING_HINT_PGI: 0x1A217,
+ GL_STRICT_SCISSOR_HINT_PGI: 0x1A218,
+ GL_FULL_STIPPLE_HINT_PGI: 0x1A219,
+ GL_CLIP_NEAR_HINT_PGI: 0x1A220,
+ GL_CLIP_FAR_HINT_PGI: 0x1A221,
+ GL_WIDE_LINE_HINT_PGI: 0x1A222,
+ GL_BACK_NORMALS_HINT_PGI: 0x1A223,
+ GL_VERTEX_DATA_HINT_PGI: 0x1A22A,
+ GL_VERTEX_CONSISTENT_HINT_PGI: 0x1A22B,
+ GL_MATERIAL_SIDE_HINT_PGI: 0x1A22C,
+ GL_MAX_VERTEX_HINT_PGI: 0x1A22D,
+ GL_GENERATE_MIPMAP_HINT_SGIS: 0x8192,
+ GL_CONVOLUTION_HINT_SGIX: 0x8316,
+ GL_SCALEBIAS_HINT_SGIX: 0x8322,
+ GL_TEXTURE_MULTI_BUFFER_HINT_SGIX: 0x812E,
+ GL_VERTEX_PRECLIP_HINT_SGIX: 0x83EF,
+ GL_PHONG_HINT_WIN: 0x80EB,
+};
+
+async function testValidTargets(validTargets) {
+ Object.entries(HINT_TARGETS).forEach(kv => {
+ const [k,v] = kv;
+ let targetError = gl.INVALID_ENUM;
+ if (validTargets[v]) {
+ targetError = 0;
+ }
+ debug("");
+ debug(k);
+ wtu.shouldGenerateGLError(gl, gl.INVALID_ENUM, `gl.hint(HINT_TARGETS.${k}, gl.DONT_CARE-1)`);
+ wtu.shouldGenerateGLError(gl, targetError, `gl.hint(HINT_TARGETS.${k}, gl.DONT_CARE)`);
+ wtu.shouldGenerateGLError(gl, targetError, `gl.hint(HINT_TARGETS.${k}, gl.FASTEST)`);
+ wtu.shouldGenerateGLError(gl, targetError, `gl.hint(HINT_TARGETS.${k}, gl.NICEST)`);
+ wtu.shouldGenerateGLError(gl, gl.INVALID_ENUM, `gl.hint(HINT_TARGETS.${k}, gl.NICEST+1)`);
+ });
+}
+
+(async () => {
+ const validTargets = {};
+ validTargets[HINT_TARGETS.GL_GENERATE_MIPMAP_HINT] = true;
+
+ if (gl.FRAGMENT_SHADER_DERIVATIVE_HINT) { // webgl2
+ validTargets[gl.FRAGMENT_SHADER_DERIVATIVE_HINT] = true;
+ }
+ testValidTargets(validTargets);
+
+ const ext = gl.getExtension("OES_standard_derivatives");
+ if (ext) {
+ debug("");
+ debug("");
+ debug("-----------------------------------------");
+ debug("Test with OES_standard_derivatives enabled");
+ debug("");
+ validTargets[ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES] = true;
+ testValidTargets(validTargets);
+ }
+
+ finishTest();
+})();
+
+var successfullyParsed = true;
+</script>
+</body>
+</html>