From 3e20ad3c142af0ebc0824cb211ef7ce7fdbcff65 Mon Sep 17 00:00:00 2001 From: Jeff Gilbert Date: Fri, 5 Nov 2021 10:33:28 -0700 Subject: [PATCH 1/3] Add format-filterable-renderable test. Checks all texture formats for filterable and color-renderable. WebGL 1 and 2. WebGL 1's RGB8 doesn't look like it's spec-required. Should it be? Every device and browser I tested supports it, and it's color-renderable in ES3/webgl2. --- .../textures/misc/00_test_list.txt | 3 +- .../misc/format-filterable-renderable.html | 374 ++++++++++++++++++ sdk/tests/js/js-test-pre.js | 13 + 3 files changed, 389 insertions(+), 1 deletion(-) create mode 100644 sdk/tests/conformance/textures/misc/format-filterable-renderable.html diff --git a/sdk/tests/conformance/textures/misc/00_test_list.txt b/sdk/tests/conformance/textures/misc/00_test_list.txt index 757a996348..ef3d1de504 100644 --- a/sdk/tests/conformance/textures/misc/00_test_list.txt +++ b/sdk/tests/conformance/textures/misc/00_test_list.txt @@ -4,11 +4,12 @@ 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-image-crash.html --min-version 1.0.4 copytexsubimage2d-large-partial-copy-corruption.html ---min-version 1.0.4 copytexsubimage2d-subrects.html +--min-version 1.0.4 copytexsubimage2d-subrects.html --min-version 1.0.4 cube-incomplete-fbo.html --min-version 1.0.4 cube-map-uploads-out-of-order.html --min-version 1.0.3 default-texture.html --min-version 1.0.4 exif-orientation.html +--min-version 1.0.4 format-filterable-renderable.html --min-version 1.0.2 --max-version 1.9.9 gl-get-tex-parameter.html gl-pixelstorei.html gl-teximage.html diff --git a/sdk/tests/conformance/textures/misc/format-filterable-renderable.html b/sdk/tests/conformance/textures/misc/format-filterable-renderable.html new file mode 100644 index 0000000000..d0603bb511 --- /dev/null +++ b/sdk/tests/conformance/textures/misc/format-filterable-renderable.html @@ -0,0 +1,374 @@ + + + + + + + + + + + +
+
+ + + diff --git a/sdk/tests/js/js-test-pre.js b/sdk/tests/js/js-test-pre.js index cb37aff173..e1cb9f749c 100644 --- a/sdk/tests/js/js-test-pre.js +++ b/sdk/tests/js/js-test-pre.js @@ -786,3 +786,16 @@ function finishTest() { document.body.appendChild(epilogue); } +/// Prefer `call(() => { ... })` to `(() => { ... })()`\ +/// This way, it's clear up-front that we're calling not just defining. +function call(fn) { + return fn(); +} + +/// `for (const i of range(3))` => 0, 1, 2 +/// Don't use `for...in range(n)`, it will not work. +function* range(n) { + for (let i = 0; i < n; i++) { + yield i; + } +} From 2b34ea4730e7afef3636be6c35327a655221b014 Mon Sep 17 00:00:00 2001 From: Jeff Gilbert Date: Thu, 18 Nov 2021 16:12:14 -0700 Subject: [PATCH 2/3] Make webgl1 non-RGBA8 formats `render: undefined`. --- .../misc/format-filterable-renderable.html | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/sdk/tests/conformance/textures/misc/format-filterable-renderable.html b/sdk/tests/conformance/textures/misc/format-filterable-renderable.html index d0603bb511..df7694b821 100644 --- a/sdk/tests/conformance/textures/misc/format-filterable-renderable.html +++ b/sdk/tests/conformance/textures/misc/format-filterable-renderable.html @@ -97,14 +97,14 @@ // GLES 2.0.25 p63 const FORMAT_INFO_WEBGL1 = { - RGBA8 : { filter: true, render: true , unpack: ['RGBA', 'UNSIGNED_BYTE'] }, - RGB8 : { filter: true, render: true , unpack: ['RGB', 'UNSIGNED_BYTE'] }, - RGBA4 : { filter: true, render: true , unpack: ['RGBA', 'UNSIGNED_SHORT_4_4_4_4'] }, - RGB5_A1: { filter: true, render: true , unpack: ['RGBA', 'UNSIGNED_SHORT_5_5_5_1'] }, - RGB565 : { filter: true, render: true , unpack: ['RGB', 'UNSIGNED_SHORT_5_6_5'] }, - LA8 : { filter: true, render: false, unpack: ['LUMINANCE_ALPHA', 'UNSIGNED_BYTE'] }, - L8 : { filter: true, render: false, unpack: ['LUMINANCE', 'UNSIGNED_BYTE'] }, - A8 : { filter: true, render: false, unpack: ['ALPHA', 'UNSIGNED_BYTE'] }, + RGBA8 : { filter: true, render: true , unpack: ['RGBA', 'UNSIGNED_BYTE'] }, + RGB8 : { filter: true, render: undefined, unpack: ['RGB', 'UNSIGNED_BYTE'] }, + RGBA4 : { filter: true, render: undefined, unpack: ['RGBA', 'UNSIGNED_SHORT_4_4_4_4'] }, + RGB5_A1: { filter: true, render: undefined, unpack: ['RGBA', 'UNSIGNED_SHORT_5_5_5_1'] }, + RGB565 : { filter: true, render: undefined, unpack: ['RGB', 'UNSIGNED_SHORT_5_6_5'] }, + LA8 : { filter: true, render: false , unpack: ['LUMINANCE_ALPHA', 'UNSIGNED_BYTE'] }, + L8 : { filter: true, render: false , unpack: ['LUMINANCE', 'UNSIGNED_BYTE'] }, + A8 : { filter: true, render: false , unpack: ['ALPHA', 'UNSIGNED_BYTE'] }, }; // GLES 3.0.6 p130-132 @@ -331,7 +331,11 @@ gl.TEXTURE_2D, tex, 0); const status = gl.checkFramebufferStatus(gl.FRAMEBUFFER); const wasRenderable = (status == gl.FRAMEBUFFER_COMPLETE); - expect('color-renderable', wasRenderable, !!info.render); + if (info.render === undefined) { + debug(`Non-normative: color-renderable was ${wasRenderable}`); + } else { + expect('color-renderable', wasRenderable, !!info.render); + } if (wasRenderable) { gl.clearColor(0,0,0,0); gl.clearDepth(0); From ef45bdaf3e65af727fd67d9ff9af59cb7d0d46c0 Mon Sep 17 00:00:00 2001 From: Ken Russell Date: Fri, 3 Dec 2021 18:25:10 -0800 Subject: [PATCH 3/3] Set gl_PointSize in primitive restart tests for GL_POINTS. Failing to set this was relying on currently-undefined behavior and causing the tests to fail on Apple's M1. Related to #2818, #2822 and #3356. --- .../functional/gles3/es3fPrimitiveRestartTests.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sdk/tests/deqp/functional/gles3/es3fPrimitiveRestartTests.js b/sdk/tests/deqp/functional/gles3/es3fPrimitiveRestartTests.js index 85973665ad..ac0da2fe66 100644 --- a/sdk/tests/deqp/functional/gles3/es3fPrimitiveRestartTests.js +++ b/sdk/tests/deqp/functional/gles3/es3fPrimitiveRestartTests.js @@ -334,10 +334,15 @@ var gluTextureUtil = framework.opengl.gluTextureUtil; '\n' + 'void main()\n' + ' {\n' + - ' gl_Position = a_position;\n' + - '}\n'; + ' gl_Position = a_position;\n'; + + if (this.m_primType == es3fPrimitiveRestartTests.PrimitiveType.PRIMITIVE_POINTS) { + vertShaderSource += ' gl_PointSize = 1.0;\n'; + } + + vertShaderSource += '}\n'; - /** @type {string} */ var fragShaderSource = + /** @type {string} */ var fragShaderSource = '#version 300 es\n' + 'layout(location = 0) out mediump vec4 o_color;\n' + '\n' +