From 501671c8b23cf160749f10c05592b7e473252ce1 Mon Sep 17 00:00:00 2001 From: Vladimir Agafonkin Date: Mon, 24 Apr 2017 21:16:36 +0300 Subject: [PATCH] use 3 more bits for clipping mask ids Fixes #3517. Fixes #2676. Likely fixes #1679. --- src/render/painter.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/render/painter.js b/src/render/painter.js index 013a7a3e9fd..04c7ade994b 100644 --- a/src/render/painter.js +++ b/src/render/painter.js @@ -158,8 +158,7 @@ class Painter { gl.disable(gl.DEPTH_TEST); gl.enable(gl.STENCIL_TEST); - // Only write clipping IDs to the last 5 bits. The first three are used for drawing fills. - gl.stencilMask(0xF8); + gl.stencilMask(0xFF); // Tests will always pass, and ref value will be written to stencil buffer. gl.stencilOp(gl.KEEP, gl.KEEP, gl.REPLACE); @@ -167,9 +166,9 @@ class Painter { this._tileClippingMaskIDs = {}; for (const coord of coords) { - const id = this._tileClippingMaskIDs[coord.id] = (idNext++) << 3; + const id = this._tileClippingMaskIDs[coord.id] = idNext++; - gl.stencilFunc(gl.ALWAYS, id, 0xF8); + gl.stencilFunc(gl.ALWAYS, id, 0xFF); const program = this.useProgram('fill', this.basicFillProgramConfiguration); gl.uniformMatrix4fv(program.u_matrix, false, coord.posMatrix); @@ -187,7 +186,7 @@ class Painter { enableTileClippingMask(coord) { const gl = this.gl; - gl.stencilFunc(gl.EQUAL, this._tileClippingMaskIDs[coord.id], 0xF8); + gl.stencilFunc(gl.EQUAL, this._tileClippingMaskIDs[coord.id], 0xFF); } // Overridden by headless tests.