diff --git a/sdk/tests/conformance/rendering/point-size.html b/sdk/tests/conformance/rendering/point-size.html index 14d4e60ec5..42be3c1738 100644 --- a/sdk/tests/conformance/rendering/point-size.html +++ b/sdk/tests/conformance/rendering/point-size.html @@ -32,6 +32,7 @@ + - + + + + @@ -142,6 +156,54 @@ shouldBe('gl.getError()', 'gl.NO_ERROR'); test(program2); +const trivialProg = wtu.setupProgram(gl, ['trivial-vs', 'trivial-fs']); +gl.useProgram(trivialProg); +wtu.glErrorShouldBe(gl, 0, 'Use trivial program.'); + +// We don't write to gl_PointSize, but since it's supposed to be clamped within the valid range, +// and the valid range must be positive, we should be guaranteed to get at least one pixel drawn. +// So, just use a 1x1 FB for testing. +gl.canvas.width = 1; +gl.canvas.height = 1; +gl.viewport(0, 0, 1, 1); + +gl.clearColor(1, 0, 0, 1); +gl.clear(gl.COLOR_BUFFER_BIT); +wtu.checkCanvasRect(gl, 0, 0, 1, 1, [255, 0, 0, 255]); + +gl.disableVertexAttribArray(0); +gl.disableVertexAttribArray(1); +gl.drawArrays(gl.POINTS, 0, 1); +wtu.checkCanvasRect(gl, 0, 0, 1, 1, [0, 255, 0, 255]); +wtu.glErrorShouldBe(gl, 0, 'After trivial program draw.'); + +if (gl.transformFeedbackVaryings) { + gl.transformFeedbackVaryings(trivialProg, ['gl_Position'], gl.INTERLEAVED_ATTRIBS); + gl.linkProgram(trivialProg); + gl.useProgram(trivialProg); + wtu.glErrorShouldBe(gl, 0, 'Relinking trivial program with TF-varyings.'); + + const buffer = gl.createBuffer(); + gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, 0, buffer); + gl.bufferData(gl.TRANSFORM_FEEDBACK_BUFFER, 16, gl.STREAM_READ); + + gl.clear(gl.COLOR_BUFFER_BIT); + wtu.checkCanvasRect(gl, 0, 0, 1, 1, [255, 0, 0, 255]); + + gl.beginTransformFeedback(gl.POINTS); + + gl.drawArrays(gl.POINTS, 0, 1); + wtu.checkCanvasRect(gl, 0, 0, 1, 1, [0, 255, 0, 255]); + + gl.endTransformFeedback(); + + gl.finish(); // Prevent 'please wait on a fence' warning. + window.tfResults = new Float32Array(4); + gl.getBufferSubData(gl.TRANSFORM_FEEDBACK_BUFFER, 0, window.tfResults); + + shouldBeString('window.tfResults', new Float32Array([0, 0, 0, 1]).toString()); +} + var successfullyParsed = true;