Reproduced via:
$ node platform/node/test/render.test.js \
--recycle-map "fill-extrusion-pattern/missing" "fill-extrusion-color/property-function"
* ignore fill-extrusion-pattern missing (https://github.com/mapbox/mapbox-gl-js/issues/3327)
* failed fill-extrusion-color property-function
1 passed but were ignored (50.0%)
1 failed (50.0%)
| expected | actual | diff |
|--|--|--|
|
|
|
|
It seems the previous _faulty_ fill-extrusion-pattern/missing run is messing with the layer z-ordering in fill-extrusion-color/property-function.
/cc @lbud
I started digging into this and realized something extra weird was going on where only sometimes, and only (afaict) when using fill-extrusion-pattern layers, the extrusion texture was being bound without a depth buffer. This can happen with missing patterns (like in this case) or with valid patterns, with other layers or without — my best guess is that something in the ImageManager binding is interfering with the state. I haven't figured out exactly what it is yet, BUT since https://github.com/mapbox/mapbox-gl-native/pull/9931 majorly overhauls the way create/use offscreen textures for extrusions, I tested several cases/platforms where I was reproducing this bug on that branch and it seems to fix them. 🤷♀️
That's great news @lbud!
Most helpful comment
I started digging into this and realized something extra weird was going on where only sometimes, and only (afaict) when using fill-extrusion-pattern layers, the extrusion texture was being bound without a depth buffer. This can happen with missing patterns (like in this case) or with valid patterns, with other layers or without — my best guess is that something in the ImageManager binding is interfering with the state. I haven't figured out exactly what it is yet, BUT since https://github.com/mapbox/mapbox-gl-native/pull/9931 majorly overhauls the way create/use offscreen textures for extrusions, I tested several cases/platforms where I was reproducing this bug on that branch and it seems to fix them. 🤷♀️