Primitive-ray intersector GLES shader regression in crostini Mesa 22.3.6 on virgl device IMG GX6250
System information
Crostini guest on ChromeOS host Lenovo 300e Chromebook. Host GPU is IMG GX6250.
- OS:
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_CODENAME=bookworm
- GPU:
*-display
description: Display controller
product: Virtio 1.0 GPU [1AF4:1050]
vendor: Red Hat, Inc. [1AF4]
physical id: 2
bus info: pci@0000:00:02.0
version: 01
width: 64 bits
clock: 33MHz
capabilities: bus_master cap_list
configuration: driver=virtio-pci latency=0
resources: iomemory:40-3f irq:15 memory:2008000-200ffff memory:400000000-5ffffffff
- Kernel version:
Linux penguin 6.1.64-09049-g010fe86d9eae #1 SMP PREEMPT Thu, 1 Feb 2024 01:25:43 +0000 aarch64 GNU/Linux
- Mesa version:
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Mesa/X.org (0x1af4)
Device: virgl (PowerVR Rogue GX6250) (0x1010)
Version: 22.3.6
Accelerated: yes
Video memory: 0MB
Unified memory: no
Preferred profile: compat (0x2)
Max core profile version: 0.0
Max compat profile version: 2.1
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 2.0
OpenGL vendor string: Mesa/X.org
OpenGL renderer string: virgl (PowerVR Rogue GX6250)
OpenGL version string: 2.1 Mesa 22.3.6
OpenGL shading language version string: 1.20
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 22.3.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
- Desktop manager and compositor: crostini Chrome compositor (via Exosphere)
Describe the issue
A popular raycasting shader producing intersections with parametric capsule primitives (ie. a tube section + sphere caps) glitches at the "tube" part of the test, resulting in always producing tube hits, thus not reaching the "sphere" part of the test. The end result is missing capsule caps, and wrong ray depth intersection (ray "t" param) all along the image space. Original shader by Inigo Quilez https://www.shadertoy.com/view/Xt3SzX
Regression
The sample scene + shaders used to work on crostini Mesa 21.2.6, producing a continuous capsule "polyline" shape. On Mesa 22.3.6 "polyline" caps are missing, producing discontinuities, and ray "t" is wrong for the entire image.
Screenshots/video files
good screengrab; Mesa 21.2.6
bad screengrab; Mesa 22.3.6
Above from standalone repro case here: https://github.com/blu/hello-chromeos-gles2/blob/master/asset/shader/conic.glslf
(don't mind the shader name -- it's a capsule intersector, not a conic intersector)