tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

hint.html (4274B)


      1 <!--
      2 Copyright (c) 2022 The Khronos Group Inc.
      3 Use of this source code is governed by an MIT-style license that can be
      4 found in the LICENSE.txt file.
      5 -->
      6 
      7 <!DOCTYPE html>
      8 <html>
      9 <head>
     10 <meta charset=utf-8>
     11 <link rel="stylesheet" href="../../resources/js-test-style.css"/>
     12 <script src="../../js/js-test-pre.js"></script>
     13 <script src="../../js/webgl-test-utils.js"></script>
     14 </head>
     15 <body>
     16 <div id="description"></div>
     17 <div id="console"></div>
     18 
     19 <script>
     20 "use strict";
     21 const wtu = WebGLTestUtils;
     22 description("Tests webgl.hint()");
     23 
     24 const gl = wtu.create3DContext();
     25 wtu.glErrorShouldBe(gl, gl.NO_ERROR, "Setup should succeed");
     26 
     27 // From https://kdashg.github.io/misc/gl/search-headers.html#str=_HINT
     28 const HINT_TARGETS = {
     29    GL_GENERATE_MIPMAP_HINT: 0x8192,
     30    GL_FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8B8B,
     31    GL_BINNING_CONTROL_HINT_QCOM: 0x8FB0,
     32    GL_PROGRAM_BINARY_RETRIEVABLE_HINT: 0x8257,
     33    GL_LINE_SMOOTH_HINT: 0x0C52,
     34    GL_POLYGON_SMOOTH_HINT: 0x0C53,
     35    EGL_PRODUCER_MAX_FRAME_HINT_NV: 0x3337,
     36    EGL_CONSUMER_MAX_FRAME_HINT_NV: 0x3338,
     37    EGL_YUV_COLOR_SPACE_HINT_EXT: 0x327B,
     38    EGL_SAMPLE_RANGE_HINT_EXT: 0x327C,
     39    EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT: 0x327D,
     40    EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT: 0x327E,
     41    EGL_LOCK_USAGE_HINT_KHR: 0x30C5,
     42    GL_TEXTURE_COMPRESSION_HINT: 0x84EF,
     43    GL_TEXTURE_STORAGE_HINT_APPLE: 0x85BC,
     44    GL_TRANSFORM_HINT_APPLE: 0x85B1,
     45    GL_VERTEX_ARRAY_STORAGE_HINT_APPLE: 0x851F,
     46    GL_CLIP_VOLUME_CLIPPING_HINT_EXT: 0x80F0,
     47    GL_PACK_CMYK_HINT_EXT: 0x800E,
     48    GL_UNPACK_CMYK_HINT_EXT: 0x800F,
     49    GL_MULTISAMPLE_FILTER_HINT_NV: 0x8534,
     50    GL_PREFER_DOUBLEBUFFER_HINT_PGI: 0x1A1F8,
     51    GL_CONSERVE_MEMORY_HINT_PGI: 0x1A1FD,
     52    GL_RECLAIM_MEMORY_HINT_PGI: 0x1A1FE,
     53    GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI: 0x1A203,
     54    GL_NATIVE_GRAPHICS_END_HINT_PGI: 0x1A204,
     55    GL_ALWAYS_FAST_HINT_PGI: 0x1A20C,
     56    GL_ALWAYS_SOFT_HINT_PGI: 0x1A20D,
     57    GL_ALLOW_DRAW_OBJ_HINT_PGI: 0x1A20E,
     58    GL_ALLOW_DRAW_WIN_HINT_PGI: 0x1A20F,
     59    GL_ALLOW_DRAW_FRG_HINT_PGI: 0x1A210,
     60    GL_ALLOW_DRAW_MEM_HINT_PGI: 0x1A211,
     61    GL_STRICT_DEPTHFUNC_HINT_PGI: 0x1A216,
     62    GL_STRICT_LIGHTING_HINT_PGI: 0x1A217,
     63    GL_STRICT_SCISSOR_HINT_PGI: 0x1A218,
     64    GL_FULL_STIPPLE_HINT_PGI: 0x1A219,
     65    GL_CLIP_NEAR_HINT_PGI: 0x1A220,
     66    GL_CLIP_FAR_HINT_PGI: 0x1A221,
     67    GL_WIDE_LINE_HINT_PGI: 0x1A222,
     68    GL_BACK_NORMALS_HINT_PGI: 0x1A223,
     69    GL_VERTEX_DATA_HINT_PGI: 0x1A22A,
     70    GL_VERTEX_CONSISTENT_HINT_PGI: 0x1A22B,
     71    GL_MATERIAL_SIDE_HINT_PGI: 0x1A22C,
     72    GL_MAX_VERTEX_HINT_PGI: 0x1A22D,
     73    GL_GENERATE_MIPMAP_HINT_SGIS: 0x8192,
     74    GL_CONVOLUTION_HINT_SGIX: 0x8316,
     75    GL_SCALEBIAS_HINT_SGIX: 0x8322,
     76    GL_TEXTURE_MULTI_BUFFER_HINT_SGIX: 0x812E,
     77    GL_VERTEX_PRECLIP_HINT_SGIX: 0x83EF,
     78    GL_PHONG_HINT_WIN: 0x80EB,
     79 };
     80 
     81 async function testValidTargets(validTargets) {
     82    Object.entries(HINT_TARGETS).forEach(kv => {
     83        const [k,v] = kv;
     84        let targetError = gl.INVALID_ENUM;
     85        if (validTargets[v]) {
     86            targetError = 0;
     87        }
     88        debug("");
     89        debug(k);
     90        wtu.shouldGenerateGLError(gl, gl.INVALID_ENUM, `gl.hint(HINT_TARGETS.${k}, gl.DONT_CARE-1)`);
     91        wtu.shouldGenerateGLError(gl, targetError, `gl.hint(HINT_TARGETS.${k}, gl.DONT_CARE)`);
     92        wtu.shouldGenerateGLError(gl, targetError, `gl.hint(HINT_TARGETS.${k}, gl.FASTEST)`);
     93        wtu.shouldGenerateGLError(gl, targetError, `gl.hint(HINT_TARGETS.${k}, gl.NICEST)`);
     94        wtu.shouldGenerateGLError(gl, gl.INVALID_ENUM, `gl.hint(HINT_TARGETS.${k}, gl.NICEST+1)`);
     95    });
     96 }
     97 
     98 (async () => {
     99    const validTargets = {};
    100    validTargets[HINT_TARGETS.GL_GENERATE_MIPMAP_HINT] = true;
    101 
    102    if (gl.FRAGMENT_SHADER_DERIVATIVE_HINT) { // webgl2
    103        validTargets[gl.FRAGMENT_SHADER_DERIVATIVE_HINT] = true;
    104    }
    105    testValidTargets(validTargets);
    106 
    107    const ext = gl.getExtension("OES_standard_derivatives");
    108    if (ext) {
    109        debug("");
    110        debug("");
    111        debug("-----------------------------------------");
    112        debug("Test with OES_standard_derivatives enabled");
    113        debug("");
    114        validTargets[ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES] = true;
    115        testValidTargets(validTargets);
    116    }
    117 
    118    finishTest();
    119 })();
    120 
    121 var successfullyParsed = true;
    122 </script>
    123 </body>
    124 </html>