[vtkusers] GPURayCast and Texture3D volume mappers fail to render

burlen burlen.loring at gmail.com
Wed Sep 11 20:03:11 EDT 2013


Hi Miro

> 203 - LoadOpenGLExtension (Failed)
keep it simple. forget about the GPURayCast until this test passes.

> *#define VTK_NO_EXTENSION_LOADING*
that happens if neither glXGetProcAddressARB nor glXGetProcAddress is 
found. I think this is your problem. I could verify these are around as 
follows:

    $ grep glXGetProcAddress /usr/include/GL/ -rIn
    $ nm -CD /usr/lib/x86_64-linux-gnu/libGL.so | grep glXGetProcAdd

and verify that VTK found them too:

    $grep GLX ./CMakeCache.txt


> after I installed nvidia propriatory driver, I got another libGL.so in 
> /usr/lib/nvidia-310/libGL.so so I re-configured vtk
did you rm -rf your build just to make sure that there's no bad values 
in your cmake cache? might be worth  a try if you hadn't.

Burlen


On 09/11/2013 03:36 PM, Miro Drahos wrote:
> Thanks burlen and Julien.
>
> I did call Render() to initialize the GL context. Created a new plain 
> vtkRenderWindow too (in my application I use QVTKWidget):
>   cout << " DEBUG standalone renwin" << endl;
> vtkRenderWindow * rw = vtkRenderWindow::New();
>   rw->SetSize(512, 512);
>   rw->Render();
>
>   VTK_CREATE(vtkRenderer, ren);
>   ren->AddViewProp(this->m_volume);
>   rw->AddRenderer(ren);
>
>   vtkOpenGLExtensionManager *extensions=vtkOpenGLExtensionManager::New();
>   extensions->SetRenderWindow(rw);
>   extensions->Update();
>
>   cout << " SUPPORTS 1.3? " << 
> extensions->ExtensionSupported("GL_VERSION_1_3") << endl;
>   cout << "====================== exts: ==================== " <<
>     extensions->GetExtensionsString() <<
>     "================================================== " << endl;
>   rw->Render();
>   cout << " DEBUG standalone renwin done" << endl;
>
> But the terminal output shows empty string:
>  DEBUG standalone renwin
>  SUPPORTS 1.3? 0
> ====================== exts: ==================== 
> ==================================================
> ERROR: In 
> /home/miro/BUILDS/VTK5.10.1/VolumeRendering/vtkOpenGLVolumeTextureMapper3D.cxx, 
> line 100
> vtkOpenGLVolumeTextureMapper3D (0xba0c9c0): required extensions not 
> supported
>
>  DEBUG standalone renwin done
>
> Julien's hint got me to dig deeper into why I am getting the empty 
> GetExtensionsString().
>
> Looking at the sources, the reason why it returns an empty string is 
> because of this #define:
> VTK_NO_EXTENSION_LOADING
> which causes vtkOpenGLExtensionManager::ReadOpenGLExtensions() to set 
> the extensions to empty string
> This #define gets into play from #include'd 
> vtkOpenGLExtensionManagerConfigure.h which contains only the following:
>
> /* #undef VTK_USE_WGL_GET_PROC_ADDRESS */
> /* #undef VTK_USE_APPLE_LOADER */
> /* #undef VTK_USE_GLX_GET_PROC_ADDRESS */
> /* #undef VTK_USE_GLX_GET_PROC_ADDRESS_ARB */
> /* #undef VTK_USE_VTK_DYNAMIC_LOADER */
> *#define VTK_NO_EXTENSION_LOADING*
>
> /* #undef VTK_DEFINE_GLX_GET_PROC_ADDRESS_PROTOTYPE */
>
> // If using vtkDynamicLoader, we need to know where the libraries are.
> #define OPENGL_LIBRARIES 
> "/usr/lib/x86_64-linux-gnu/libGLU.so;/usr/lib/x86_64-linux-gnu/libGL.so;/usr/lib/x86_64-linux-gnu/libSM.so;/usr/lib/x86_64-linux-gnu/libICE.so;/usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so"
>
> This #define must have gotten there when configuring the VTK build. I 
> tried to search CMakeLists.txt for VTK_NO_EXTENSION_LOADING and it 
> appers in this section (which I admit I have no clue about):
> IF(VTK_USE_X)
>       CHECK_FUNCTION_EXISTS(glXGetProcAddressARB 
> VTK_USE_GLX_GET_PROC_ADDRESS_ARB)
>       IF (VTK_USE_GLX_GET_PROC_ADDRESS_ARB)
>         IF (NOT 
> "${VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_INCLUDES}" STREQUAL 
> "${OPENGL_INCLUDE_DIR}")
>           # The OpenGL includes changed.  Retest glXGetProcAddressARB 
> prototype.
> SET(VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_TESTED 0)
>         ENDIF (NOT 
> "${VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_INCLUDES}" STREQUAL 
> "${OPENGL_INCLUDE_DIR}")
>         IF (NOT VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_TESTED)
>           MESSAGE(STATUS "Looking for glXGetProcAddressARB in GL/glx.h")
> TRY_COMPILE(VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS
>             ${CMAKE_BINARY_DIR}
> ${CMAKE_CURRENT_SOURCE_DIR}/CheckglXGetProcAddressARB.cxx
>             CMAKE_FLAGS 
> "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}"
> "-DINCLUDE_DIRECTORIES:STRING=${OPENGL_INCLUDE_DIR}"
>             OUTPUT_VARIABLE OUTPUT)
>           MESSAGE(STATUS "Looking for glXGetProcAddressARB in GL/glx.h 
> - ${VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS}")
>           FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeOutput.log
>             "Determining if glXGetProcAddressARB exists in GL/glx.h 
> ${VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS} with the following 
> output:\n"
>             "${OUTPUT}\n\n")
> SET(VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_TESTED 1
>             CACHE INTERNAL "Already set 
> VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS")
> SET(VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_INCLUDES
>             "${OPENGL_INCLUDE_DIR}"
>             CACHE INTERNAL "OpenGL includes used to test 
> glXGetProcAddressARB prototype.")
>         ENDIF (NOT VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_TESTED)
>         IF (NOT VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS)
>           SET(VTK_DEFINE_GLX_GET_PROC_ADDRESS_PROTOTYPE 1)
>         ENDIF (NOT VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS)
>       ELSE (VTK_USE_GLX_GET_PROC_ADDRESS_ARB)
>         CHECK_FUNCTION_EXISTS(glXGetProcAddress 
> VTK_USE_GLX_GET_PROC_ADDRESS)
>         IF (NOT VTK_USE_GLX_GET_PROC_ADDRESS)
>           #         SET(VTK_USE_VTK_DYNAMIC_LOADER 1)
>           MESSAGE(STATUS "Could not find extension loader.  Extensions 
> disabled.")
> *          SET(VTK_NO_EXTENSION_LOADING 1)*
>         ENDIF (NOT VTK_USE_GLX_GET_PROC_ADDRESS)
>       ENDIF (VTK_USE_GLX_GET_PROC_ADDRESS_ARB)
>     ELSE(VTK_USE_X)
> *      SET(VTK_NO_EXTENSION_LOADING 1)*
>     ENDIF(VTK_USE_X)
>
> When configuring VTK, the cmake option VTK_OPENGL_HAS_OSMESA was OFF, 
> if it matters at all.
> Some other openGL options in cmake config:
>  OPENGL_INCLUDE_DIR /usr/include
>  OPENGL_gl_LIBRARY /usr/lib/x86_64-linux-gnu/libGL.so
>  OPENGL_glu_LIBRARY /usr/lib/x86_64-linux-gnu/libGLU.so
>  OPENGL_xmesa_INCLUDE_DIR OPENGL_xmesa_INCLUDE_DIR-NOTFOUND
>
> Now after I installed nvidia propriatory driver, I got another 
> libGL.so in /usr/lib/nvidia-310/libGL.so so I re-configured vtk with
> OPENGL_gl_LIBRARY /usr/lib/nvidia-310/libGL.so
> instead and recompiled, but it didn't change things. The 
> vtkOpenGLExtensionManagerConfigure.h still #defines 
> VTK_NO_EXTENSION_LOADING.
>
> The tests (thanks burlen!) show the following:
>
> $ ctest -R LoadOpenGL --verbose | grep GL_
> 203: GL_VENDOR: NVIDIA Corporation
> 203: GL_VERSION: 4.3.0 NVIDIA 310.44
> 203: GL_RENDERER: GeForce GT 520/PCIe/SSE2
> Errors while running CTest
>
> The relevant failed line was this:
> The following tests FAILED:
>     203 - LoadOpenGLExtension (Failed)
>
> Then the Tests binary shows nvidia's libGL.so in use, as expected:
> $ ldd bin/RenderingCxxTests | grep GL
>     libGL.so.1 => /usr/lib/nvidia-310/libGL.so.1 (0x00007f75d8888000)
>
> But most interestingly,
> ctest -R GPURay
> all tests in this battery pass, only one segfaults:
>
>  8/17 Test #303: TestGPURayCastDataTypesMinIP 
> .....................***Exception: SegFault  0.02 sec
>
> That being said, I see the renderwindow flicker, but I don't see any 
> content (e.g. sphere) rendered. I'd like to run the tests in 
> interactive mode, but not sure how?
>
> I could build the latest vtk version from git and see whether I can 
> replicate the issue there if you think it would make debugging easier.
>
> Some more info on my system:
> Installed OpenGL-related packages:
> $ sudo dpkg-query -l | egrep -i 'mesa|opengl'
> ii  compiz-core 1:0.9.9~daily13.06.19~13.04-0ubuntu1       
> amd64        OpenGL window and compositing manager
> ii  compiz-plugins-default 1:0.9.9~daily13.06.19~13.04-0ubuntu1       
> amd64        OpenGL window and compositing manager - default plugins
> ii  glew-utils 1.9.0.is.1.8.0-0ubuntu1                    amd64        
> OpenGL Extension Wrangler - utilities
> ii  libegl1-mesa:amd64 9.1.3-0ubuntu0.3                           
> amd64        free implementation of the EGL API -- runtime
> ii  libegl1-mesa-dev 9.1.3-0ubuntu0.3                           
> amd64        free implementation of the EGL API -- development files
> ii  libegl1-mesa-drivers:amd64 
> 9.1.3-0ubuntu0.3                           amd64        free 
> implementation of the EGL API -- hardware drivers
> ii  libgl1-mesa-dev 9.1.3-0ubuntu0.3                           
> amd64        free implementation of the OpenGL API -- GLX development 
> files
> ii  libgl1-mesa-dri:amd64 9.1.3-0ubuntu0.3                           
> amd64        free implementation of the OpenGL API -- DRI modules
> ii  libgl1-mesa-dri-dbg:amd64 
> 9.1.3-0ubuntu0.3                           amd64 Debugging symbols for 
> the Mesa DRI modules
> ii  libgl1-mesa-glx:amd64 9.1.3-0ubuntu0.3                           
> amd64        free implementation of the OpenGL API -- GLX runtime
> ii  libgl2ps0 1.3.6-1                                    amd64        
> Lib providing high quality vector output for OpenGL application
> ii  libglapi-mesa:amd64 9.1.3-0ubuntu0.3                           
> amd64        free implementation of the GL API -- shared library
> ii  libgles2-mesa:amd64 9.1.3-0ubuntu0.3                           
> amd64        free implementation of the OpenGL|ES 2.x API -- runtime
> ii  libglew1.8:amd64 1.9.0.is.1.8.0-0ubuntu1                    
> amd64        OpenGL Extension Wrangler - runtime environment
> ii  libglewmx1.8:amd64 1.9.0.is.1.8.0-0ubuntu1                    
> amd64        OpenGL Extension Wrangler (Multiple Rendering Contexts)
> ii  libglu1-mesa:amd64 9.0.0-0ubuntu1                             
> amd64        Mesa OpenGL utility library (GLU)
> ii  libglu1-mesa-dev 9.0.0-0ubuntu1                             
> amd64        Mesa OpenGL utility library -- development files
> ii  libopenvg1-mesa:amd64 9.1.3-0ubuntu0.3                           
> amd64        free implementation of the OpenVG API -- runtime
> ii  libopenvg1-mesa-dev 9.1.3-0ubuntu0.3                           
> amd64        free implementation of the OpenVG API -- development files
> ii  libqt4-opengl:amd64 4:4.8.4+dfsg-0ubuntu9.2                    
> amd64        Qt 4 OpenGL module
> ii  libreoffice-ogltrans 1:4.0.2-0ubuntu1                           
> amd64 LibreOffice Impress extension for transitions using OpenGL
> ii  libtxc-dxtn-s2tc0:amd64 0~git20121227-1                            
> amd64        Texture compression library for Mesa
> ii  mesa-common-dev 9.1.3-0ubuntu0.3                           amd64 
> Developer documentation for Mesa
> ii  mesa-utils 8.0.1+git20110129+d8f7d6b-0ubuntu2         amd64 
> Miscellaneous Mesa GL utilities
> ii  x11proto-gl-dev 1.4.16-1                                   
> all          X11 OpenGL extension wire protocol
>
> Thanks again!
> Miro
>
>
>
>
>
> On 09/11/2013 03:08 PM, burlen wrote:
>> also, did you call "renWin->Render()" once before using the extension 
>> manager? or class that uses the extension manager?
>>
>> On 09/11/2013 02:21 PM, burlen wrote:
>>> in your vtk build dir, what does the output of
>>>
>>>     $ ctest -R LoadOpenGL --verbose | grep GL_
>>>
>>> say? If it's not reporting the expected versions then you could 
>>> verify which driver VTK using with:
>>>
>>>     $ ldd bin/vtkRenderingVolumeCxxTests | grep GL
>>>
>>> you may try this also on your app to verify. Do VTK's tests have the 
>>> same issue?
>>>
>>>     $ ctest -R GPURay --verbose
>>>
>>> if none of this helps, would you be willing to work with the 
>>> development version of VTK? it will be easier to find and fix the bug.
>>>
>>> Burlen
>>>
>>> On 09/10/2013 07:21 PM, Miro Drahos wrote:
>>>> Hi all,
>>>> I am having an issue with volume mappers and hope someone can 
>>>> provide some constructive feedback.
>>>> When trying to use vtkGPUVolumeRayCastMapper rendering fails with 
>>>> the message:
>>>> ERROR: In 
>>>> /home/miro/BUILDS/VTK5.10.1/VolumeRendering/vtkOpenGLGPUVolumeRayCastMapper.cxx, 
>>>> line 4011
>>>> vtkOpenGLGPUVolumeRayCastMapper (0x12e15ce0): Rendering failed 
>>>> because the following OpenGL extensions are required but not 
>>>> supported:  OpenGL 1.3 is required but not supported
>>>>
>>>> If I run
>>>> glGetString(GL_VERSION)
>>>> I get the correct output string:
>>>> 4.3.0 NVIDIA 310.44
>>>>
>>>> and yet the 
>>>> vtkOpenGLExtensionManager::ExtensionSupported("GL_VERSION_1_3") 
>>>> somehow returns 0.
>>>>
>>>> I am using vtk 5.10, my graphics card is NVIDIA GT520, using NVIDIA 
>>>> propriatory driver 310.44 on Linux Mint 15 (same thing with 
>>>> open-source nouveau driver).
>>>> Some terminal output that may be relevant:
>>>>
>>>> $ glewinfo   | grep GL_VER
>>>> GL_VERSION_1_1: OK
>>>> GL_VERSION_1_2: OK
>>>> GL_VERSION_1_2_1: OK
>>>> GL_VERSION_1_3: OK
>>>> GL_VERSION_1_4: OK
>>>> GL_VERSION_1_5: OK
>>>> GL_VERSION_2_0: OK
>>>> GL_VERSION_2_1: OK
>>>> GL_VERSION_3_0: OK
>>>> GL_VERSION_3_1: OK
>>>> GL_VERSION_3_2: OK
>>>> GL_VERSION_3_3: OK
>>>> GL_VERSION_4_0: OK
>>>> GL_VERSION_4_1: OK
>>>> GL_VERSION_4_2: OK
>>>>
>>>> $ inxi -Gx
>>>> Graphics:  Card: NVIDIA GF119 [GeForce GT 520] bus-ID: 01:00.0
>>>>            X.Org: 1.13.3 drivers: nvidia (unloaded: 
>>>> fbdev,vesa,nouveau) Resolution: 1920x1080 at 60.0hz, 1920x1080 at 60.0hz
>>>>            GLX Renderer: GeForce GT 520/PCIe/SSE2 GLX Version: 
>>>> 4.3.0 NVIDIA 310.44 Direct Rendering: Yes
>>>>
>>>>
>>>> More puzzling yet it gets when I try to use 
>>>> vtkVolumeMapperTexture3D, I get
>>>> ERROR: In 
>>>> /home/miro/BUILDS/VTK5.10.1/VolumeRendering/vtkOpenGLGPUVolumeRayCastMapper.cxx, 
>>>> line 4011
>>>> vtkOpenGLGPUVolumeRayCastMapper (0x12e15ce0): Rendering failed 
>>>> because the following OpenGL extensions are required but not 
>>>> supported:
>>>>
>>>> With no list of problem extensions...
>>>>
>>>> Thank you very much for any input on this!
>>>>
>>>> ------------------------------------------------------------------------
>>>> Miroslav Drahoš
>>>> software engineer
>>>> <http://www.robodoc.com>
>>>> *Curexo Technology Corporation*
>>>> 47320 Mission Falls Ct
>>>> Fremont CA, 94539
>>>> Tel: (510) 249-2300 x2372
>>>> Fax: (510) 249-2396
>>>> www.robodoc.com <http://www.robodoc.com>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Powered bywww.kitware.com
>>>>
>>>> Visit other Kitware open-source projects athttp://www.kitware.com/opensource/opensource.html
>>>>
>>>> Please keep messages on-topic and check the VTK FAQ at:http://www.vtk.org/Wiki/VTK_FAQ
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130911/fd43f1ea/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 7158 bytes
Desc: not available
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130911/fd43f1ea/attachment.jpeg>


More information about the vtkusers mailing list