Mesa: error: GL_INVALID_FRAMEBUFFER_OPERATION in glDrawArrays

Hi all

I am building ParaView/5.11.2-foss-2023a module on our HPC system for our users, using EasyBuild. For now, I have successfully compiled ParaView on our Intel Skylake nodes under Rocky Linux 8.9.

However, a simple ‘Sphere’ example fails to actually ‘Render()’ the sphere. Similarly, the OpenGL information query fails like this (where I have massively trimmed off repeated error messages):

>>> openGLInfo = GetOpenGLInformation()
( 702.880s) [paraview        ] vtkEGLRenderWindow.cxx:666   WARN| vtkEGLRenderWindow (0x5ec9df0): Unable to eglMakeCurrent: 12290
Mesa: error: GL_INVALID_ENUM in glEnable(GL_POINT_SPRITE)
( 702.881s) [paraview        ]     vtkOpenGLState.cxx:1795  WARN| Hardware does not support the number of textures defined.
Mesa: error: GL_INVALID_ENUM in glTexImage2DMultisample(internalformat=GL_NONE)
( 702.882s) [paraview        ]     vtkOpenGLState.cxx:1795  WARN| Hardware does not support the number of textures defined.
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_NONE)
Mesa: error: 2 similar GL_INVALID_VALUE errors
Mesa: error: GL_INVALID_VALUE in glUniform1i(invalid sampler/tex unit index for uniform 0)
Mesa: error: GL_INVALID_FRAMEBUFFER_OPERATION in glDrawArrays
( 702.998s) [paraview        ] vtkEGLRenderWindow.cxx:666   WARN| vtkEGLRenderWindow (0x5ec9df0): Unable to eglMakeCurrent: 12290
Mesa: error: GL_INVALID_FRAMEBUFFER_OPERATION in glBlitFramebuffer(incomplete draw/read buffers)
( 702.999s) [paraview        ] vtkEGLRenderWindow.cxx:666   WARN| vtkEGLRenderWindow (0x5ec9df0): Unable to eglMakeCurrent: 12290

However, if I rebuild the same module with the same dependencies with OSMESA, then I can run the simple ‘Sphere’ example and take a screenshot of the off-screen rendering as a file. For this build, I have used the following compiler flags:

-DVTK_OPENGL_HAS_EGL=OFF \
-DVTK_USE_X=OFF \
-DVTK_USE_SDL2=OFF \
-DVTK_OPENGL_HAS_OSMESA=ON

Now, my question is how can I still use the nomal ParaView (i.e. without OSMESA) and yet do not get the error blow up when using pvpython --no-mpi for the simple ‘Sphere’ example?

Thanks in advance
Ehsan (VSC/KU Leuven, Belgium)

If OSMesa works, it sounds like the available OpenGL driver on the machine is not suitable.

Cc: @mwestphal @Sankhesh_Jhaveri

Hi @moravveji, since you’ve disabled Xlib support, vtk is trying to use EGL for rendering. And it seems like the egl is coming from mesa. Have you tried installing a newer mesa?

Thanks @Sankhesh_Jhaveri for your reply.
As the Easybuild recipe for ParaView mentions, this specific version of ParaView which I am testing is built against MESA/23.1.4-GCCcore-12.3.0. Is that recent enough for the correct handling of EGL from MESA?