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:
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?
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?
Fair enough.
Then, back to your earlier reply, the VTK is explicitly set to use EGL by passing -DVTK_OPENGL_HAS_EGL=ON to CMake. I wonder if this is sufficient go get VTK working properly in pvpython?
Furthermore, I realized that the simple sphere example can be executed directly like paraview --no-mpi --script sphere.py, and this one succeeds. Hence, I did not require pvpython for this. But, I wonder now whether paraview --script can fully replace using pvpython? In other words, are there still feature differences between the two?
Indeed, using pvpython is supposed to be much lighter (if I manage to get it working).
Anyhow, I do not see this discussion resulting in any solution or suggestion that I can try out. Seems like the version of Mesa is sufficiently recent and the compilation flags are properly passed. So, nothing more to experiment in that regard.
Still, I would appreciate if you guys have any suggestion for me to fix this VTK/EGL issue which is only raised in pvpython and not with paraview itself.
If our hands are empty, I shall close this thread.