aardvark-platform / aardvark.rendering

Aardvark.Rendering is a high-performance, dependency-aware rendering engine. It is part of the open-source Aardvark Platform for visual computing, real-time graphics, and visualization.
https://aardvarkians.com/
Other
131 stars 13 forks source link

Intel IRIS Problems #86

Open haraldsteinlechner opened 3 years ago

haraldsteinlechner commented 3 years ago

as we found out in PRo3D, there are problems with new intel chips. It seemed like FBO/Multisample is causing the problems. The workaround was to disable multisampling: https://github.com/pro3d-space/PRo3D/issues/116 with @luithefirst we just found out that text is causing the problems - all ok, put in a text in pro3d - no rendering result. Reproducing this in media - add the text - clear color remains... moving on to vanilla aardvark.rendering - stalls, non-termination etc appears for multisampled text and without (MS).

Conclusions?

Looks like text rendering is broken on iris gpus, disabling multisampling helps in PRo3D but there is something fishy still - just with text alone. We suspect an endless loop, which not breaks fbos, but sometimes, in media cases provokes infinite frametimes there.

What are the most promising features in text to be removed step by step to track it down?

@hyazinthh - that is why your test suite did not detect it ;

krauthaufen commented 3 years ago

Text rendering uses stencil-buffer and sample-shading

krauthaufen commented 3 years ago

I think especially sample-shading might be interesting

haraldsteinlechner commented 3 years ago

but without multisampling - maybe just the existence of sample shading kills. i just found out text rendering also does not work on linux. i think i recompiled glvm (which might be necessary) - somebody any clue - maybe related?

krauthaufen commented 3 years ago

We force the shader to be executed per sample via using gl_SampleCoord, so there could certainly be a difference with/without multisampling. Furthermore i think sample-shading must be enabled client-side (which could be the invalidenum error)

haraldsteinlechner commented 3 years ago

https://pastebin.com/0xurPWgW

haraldsteinlechner commented 3 years ago
haraldsteinlechner commented 3 years ago

so this is the last conclusion for the moment - it is not possible to make it work on

 0:   vendor:   "Intel"
 0:   renderer: "Intel(R) Iris(R) Xe Graphics"
 0:   version:  OpenGL 4.5.0 / GLSL 4.5.0  Core

experimenting with

                    GL.MinSampleShading(1.0f)
                    GL.Enable(EnableCap.SampleShading)

et al. does not work. so to prevent hanging frames, one needs to disable multisampling enable cap and a fbo without sampleCount = 1.

No repro strategy was successful, i think we need to live with the workaround which as already been deployed and tested in pro3d.