MantisBT - ParaView
View Issue Details
0015020ParaView(No Category)public2014-09-30 21:312015-01-13 22:05
Alan Scott 
Utkarsh Ayachit 
normalminorhave not tried
closedfixed 
4.2 
4.34.3 
Sandia
15020_fix_OpenGL-1.2_issues
incorrect functionality
0015020: Mesa3d volume rendering incorrectly forces use of floating point frame buffer
There is a mistake in the way ParaView incorrectly forces Mesa3d to use floating point buffer when volume rendering. I can trivially test this, if anyone wants. The problem is in the following code:
../VTK/Rendering/VolumeOpenGL/vtkOpenGLProjectedTetrahedraMapper.cxx.

Around line 145 is the following code:
    if (!this->CanDoFloatingPointFrameBuffer)
      {
      vtkWarningMacro(
        "Missing FBO support. The algorithm may produce visual artifacts.");
      }
 
This forces ParaView to issue a warning, that is not needed, whenever we are rendering with an old version of Mesa3d (i.e., version 7.10.3).

The way I worked around the issue, at Utkarsh's suggestion, was to changed line
98,
  this->UseFloatingPointFrameBuffer = true;
to be
  this->UseFloatingPointFrameBuffer = false;


Please either change the this->UseFloatingPointFrameBuffer to be false in the constructor, or rework the logic of this if() test at line 147.
 
 
Alan - tested with Linux, local server, NX, disk_out_ref.exo. Just volume render. Error pops up.
No tags attached.
related to 0015046closed Utkarsh Ayachit Windows volume rendering appears broken 
Issue History
2014-09-30 21:31Alan ScottNew Issue
2014-09-30 21:32Alan ScottTarget Version => 4.2.1
2014-10-13 11:32Cory QuammenNote Added: 0033632
2014-10-14 19:24BurlenNote Added: 0033637
2014-10-14 19:39Alan ScottNote Added: 0033638
2014-10-14 19:43Alan ScottNote Added: 0033639
2014-10-14 21:29BurlenNote Added: 0033640
2014-11-04 09:53Utkarsh AyachitTarget Version4.2.1 => bug_fix
2014-11-04 14:38Utkarsh AyachitNote Added: 0033714
2014-11-04 14:38Utkarsh AyachitAssigned To => Utkarsh Ayachit
2014-11-04 14:39Utkarsh AyachitNote Edited: 0033714bug_revision_view_page.php?bugnote_id=33714#r901
2014-11-04 14:51Alan ScottNote Added: 0033715
2014-11-04 15:24Utkarsh AyachitRelationship addedrelated to 0015046
2014-11-05 10:11Utkarsh AyachitNote Added: 0033725
2014-11-05 10:12Utkarsh AyachitTopic Name => vtk_master_20141105
2014-11-05 10:12Utkarsh AyachitStatusbacklog => gatekeeper review
2014-11-05 10:12Utkarsh AyachitFixed in Version => git-next
2014-11-05 10:12Utkarsh AyachitResolutionopen => fixed
2014-11-06 08:44Utkarsh AyachitFixed in Versiongit-next => git-master
2014-11-06 08:44Utkarsh AyachitStatusgatekeeper review => customer review
2014-11-06 08:44Utkarsh AyachitNote Added: 0033745
2014-11-06 16:03Alan ScottNote Added: 0033752
2014-11-06 16:03Alan ScottStatuscustomer review => closed
2014-11-14 22:56Utkarsh AyachitTarget Versionbug_fix => 4.3
2015-01-02 10:45Utkarsh AyachitFixed in Versiongit-master => 4.3
2015-01-07 16:27Alan ScottNote Added: 0034021
2015-01-07 16:27Alan ScottStatusclosed => backlog
2015-01-07 16:27Alan ScottResolutionfixed => reopened
2015-01-07 16:27Alan ScottNote Edited: 0034021bug_revision_view_page.php?bugnote_id=34021#r982
2015-01-09 12:06Utkarsh AyachitTopic Namevtk_master_20141105 => 15020_fix_OpenGL-1.2_issues
2015-01-09 12:06Utkarsh AyachitNote Added: 0034035
2015-01-09 12:06Utkarsh AyachitStatusbacklog => gatekeeper review
2015-01-09 12:06Utkarsh AyachitResolutionreopened => fixed
2015-01-09 13:33Utkarsh AyachitSource_changeset_attached => VTK master 2bc4c6cc
2015-01-09 13:34Utkarsh AyachitSource_changeset_attached => VTK master b9f40617
2015-01-09 13:34Utkarsh AyachitSource_changeset_attached => VTK master 031f7f63
2015-01-10 08:20Utkarsh AyachitNote Added: 0034052
2015-01-10 08:20Utkarsh AyachitStatusgatekeeper review => customer review
2015-01-13 22:05Alan ScottNote Added: 0034080
2015-01-13 22:05Alan ScottStatuscustomer review => closed

Notes
(0033632)
Cory Quammen   
2014-10-13 11:32   
Hi Alan,

Do you have OSMesa enabled with the version of Mesa in question? I'm setting up a build to reproduce this warning and want to make sure I can replicate your Mesa build.

Thanks,
Cory
(0033637)
Burlen   
2014-10-14 19:24   
You may not want to see the warning but you definitely want to try to use floating point buffers if they are available.

You're seeing that warning because your Mesa build is missing floating point support. Some of the older releases didn't have it, however newer releases do. It's always been a build option that's off by default because of patent issues,
so you need to explicitly enable it when compiling mesa (add --enable-texture-float).

The intention behind that (in hindsight annoying) warning is to alert you are using an ancient version of mesa and or that you may have not built mesa with floating point support. At the time the warning seemed reasonable to me since without floating point support the projected tets algorithm *could produce precision related artifacts depending on data and rendering parameters and downloading and installing a newer mesa (or simply recompiling your existing mesa build with floating point support enabled) is a relatively easy fix. For me I'd rather know that there's potentially a problem and update mesa, rather than scratch my head about why there are artifacts in my rendering.
(0033638)
Alan Scott   
2014-10-14 19:39   
But, and this is a huge but, there are many platforms where the system provides a software frame buffer, making it look like we have a graphics card on the machine, and that software frame buffer is an old version of Mesa. An example is NX (google NX, by nomachine). I don't want my users to see the warning, and especially don't want volume rendering to fail! It is OK to put out warnings like this for debug builds, but not release builds.
(0033639)
Alan Scott   
2014-10-14 19:43   
You won't believe the version that I am having issues with. Here is a glxinfo:

libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
display: :1193 screen: 0
direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
    GLX_ARB_multisample, GLX_EXT_visual_info, GLX_EXT_visual_rating,
    GLX_EXT_import_context, GLX_OML_swap_method, GLX_SGI_make_current_read,
    GLX_SGIS_multisample, GLX_SGIX_hyperpipe, GLX_SGIX_swap_barrier,
    GLX_SGIX_fbconfig
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile,
    GLX_ARB_create_context_robustness, GLX_ARB_get_proc_address,
    GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_visual_info,
    GLX_EXT_visual_rating, GLX_EXT_framebuffer_sRGB,
    GLX_EXT_create_context_es2_profile, GLX_MESA_copy_sub_buffer,
    GLX_MESA_multithread_makecurrent, GLX_MESA_swap_control,
    GLX_OML_swap_method, GLX_OML_sync_control, GLX_SGI_make_current_read,
    GLX_SGI_swap_control, GLX_SGI_video_sync, GLX_SGIS_multisample,
    GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group,
    GLX_EXT_texture_from_pixmap, GLX_INTEL_swap_event
GLX version: 1.2
GLX extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
    GLX_EXT_visual_info, GLX_EXT_visual_rating,
    GLX_MESA_multithread_makecurrent, GLX_OML_swap_method,
    GLX_SGI_make_current_read, GLX_SGIS_multisample, GLX_SGIX_fbconfig
OpenGL vendor string: Mesa project: www.mesa3d.org
OpenGL renderer string: Mesa GLX Indirect
OpenGL version string: 1.2 (1.5 Mesa 6.4.1)
OpenGL extensions:
    GL_ARB_depth_texture, GL_ARB_imaging, GL_ARB_multitexture,
    GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_shadow,
    GL_ARB_shadow_ambient, GL_ARB_texture_border_clamp,
    GL_ARB_texture_cube_map, GL_ARB_texture_env_add,
    GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,
    GL_ARB_texture_env_dot3, GL_ARB_texture_mirrored_repeat,
    GL_ARB_texture_rectangle, GL_ARB_transpose_matrix, GL_ARB_window_pos,
    GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color, GL_EXT_blend_func_separate,
    GL_EXT_blend_logic_op, GL_EXT_blend_minmax, GL_EXT_blend_subtract,
    GL_EXT_clip_volume_hint, GL_EXT_copy_texture, GL_EXT_draw_range_elements,
    GL_EXT_fog_coord, GL_EXT_multi_draw_arrays, GL_EXT_packed_pixels,
    GL_EXT_point_parameters, GL_EXT_polygon_offset, GL_EXT_rescale_normal,
    GL_EXT_secondary_color, GL_EXT_separate_specular_color,
    GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap,
    GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,
    GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,
    GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
    GL_EXT_texture_lod_bias, GL_EXT_texture_object, GL_EXT_texture_rectangle,
    GL_EXT_vertex_array, GL_APPLE_packed_pixels, GL_ATI_texture_env_combine3,
    GL_ATI_texture_mirror_once, GL_ATIX_texture_env_combine3,
    GL_HP_occlusion_test, GL_IBM_texture_mirrored_repeat,
    GL_INGR_blend_func_separate, GL_MESA_pack_invert, GL_MESA_ycbcr_texture,
    GL_NV_blend_square, GL_NV_point_sprite, GL_NV_texgen_reflection,
    GL_NV_texture_rectangle, GL_SGIS_generate_mipmap,
    GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp,
    GL_SGIS_texture_lod, GL_SGIX_depth_texture, GL_SGIX_shadow,
    GL_SGIX_shadow_ambient, GL_SUN_multi_draw_arrays

4 GLX Visuals
    visual x bf lv rg d st colorbuffer sr ax dp st accumbuffer ms cav
  id dep cl sp sz l ci b ro r g b a F gb bf th cl r g b a ns b eat
----------------------------------------------------------------------------
0x039 24 tc 0 24 0 r y . 8 8 8 0 . . 0 16 0 0 0 0 0 0 0 None
0x03a 24 tc 0 24 0 r y . 8 8 8 0 . . 0 16 8 16 16 16 0 0 0 None
0x03b 24 tc 0 32 0 r y . 8 8 8 8 . . 0 16 8 16 16 16 16 0 0 None
0x03c 24 tc 0 32 0 r . . 8 8 8 8 . . 0 16 8 16 16 16 16 0 0 None

4 GLXFBConfigs:
    visual x bf lv rg d st colorbuffer sr ax dp st accumbuffer ms cav
  id dep cl sp sz l ci b ro r g b a F gb bf th cl r g b a ns b eat
----------------------------------------------------------------------------
0x039 24 tc 0 24 0 r y . 8 8 8 0 . . 0 16 0 0 0 0 0 0 0 None
0x03a 24 tc 0 24 0 r y . 8 8 8 0 . . 0 16 8 16 16 16 0 0 0 None
0x03b 24 tc 0 32 0 r y . 8 8 8 8 . . 0 16 8 16 16 16 16 0 0 None
0x03c 24 tc 0 32 0 r . . 8 8 8 8 . . 0 16 8 16 16 16 16 0 0 None

As I stated in the previous note, I didn't build it, I don't build it, I would never use a Mesa build that is so old. However, it is what is available to me on that system. And no - building my own version of Mesa is not tivial - since the same version of ParaView is used for this software framebuffer systems and the hardware framebuffer systems.
(0033640)
Burlen   
2014-10-14 21:29   
> I don't want my users to see the warning, and especially
> don't want volume rendering to fail! It is OK to put out
> warnings like this for debug builds, but not release builds.

The warning is new, but the fact that the algorithm may have issues without floating point support is not. If your OpenGL doesn't have that support your users may have issues.

Your solution to only issue the warning in debug builds sounds OK.
(0033714)
Utkarsh Ayachit   
2014-11-04 14:38   
(edited on: 2014-11-04 14:39)
I managed to reproduce the issue with Mesa 7.4. Alan, note that soon we'll stop supporting anything less than Open 2.1 in VTK. So systems where you're getting these volume mapper errors are indeed going to be unusable. Until then, however, here's a fix for this issue:

http://review.source.kitware.com/#/c/17878/1 [^]

Once reviewed, I'll merge this into ParaView.

(0033715)
Alan Scott   
2014-11-04 14:51   
Sounds good. We have a process in place here that will be supporting OpenGL 2.1 in the near future.
(0033725)
Utkarsh Ayachit   
2014-11-05 10:11   
commit 031f7f63719e3dc34feaa970cf31f8de40fbe316
Author: Utkarsh Ayachit <utkarsh.ayachit@kitware.com>
Date: Tue Nov 4 14:33:20 2014 -0500

    BUG 0015046, BUG 0015020: Fix issues with OpenGL 1.2.
    
    Believe it or not, we have use-cases where people use OpenGL 1.2! Soon
    we won't support that. But until then, we should continue to support
    it. Based on discusson on BUG 0015020, making the missing FBO warning to
    be shown only in debug builds. Also use GL_ARB_multitexture explicitly
    when GL_VERSION_1_3 is not supported.
    
    Change-Id: Id8ec2e902536fb3165e03bc05c6a9bd1fcbc03e8
(0033745)
Utkarsh Ayachit   
2014-11-06 08:44   
Topics merged into master:
        14845_reset_color_map
        15053_fix_coloring_with_missing_arrays
        15085_fix_install_rules_for_catalyst
        15107_catalyst_rendering_edition
        opengl2-backend
(VTK) vtk_master_20141105
(0033752)
Alan Scott   
2014-11-06 16:03   
Excellent.

Tested local server, Linux, NX, disk_out_ref.exo, Master.
(0034021)
Alan Scott   
2015-01-07 16:27   
This bug fix has an #ifdef that is reversed. This is making a debug print write in release code, but not debug code.

File /VTK/Rendering/VolumeOpenGL/vtkOpenGLProjectedTetrahedraMapper.cxx, line number 146 has a reversed #ifdef. Please fix it.

Current:
#ifdef NDEBUG
    if (!this->CanDoFloatingPointFrameBuffer)
      {
      vtkWarningMacro(
        "Missing FBO support. The algorithm may produce visual artifacts.");
      }
#endif


Suggested:
#ifndef NDEBUG
    if (!this->CanDoFloatingPointFrameBuffer)
      {
      vtkWarningMacro(
        "Missing FBO support. The algorithm may produce visual artifacts.");
      }
#endif

(0034035)
Utkarsh Ayachit   
2015-01-09 12:06   
commit 5fa4f8c363ea599247f5a483c0327ca0744ebb31
Author: Utkarsh Ayachit <utkarsh.ayachit@kitware.com>
Date: Fri Jan 9 12:02:33 2015 -0500

    Fixed typo in commit 031f7f6371.
    
    Incorrect ifdef. We were ending up skipping error in debug mode, not
    release.
    
    Change-Id: I1ce35c6d1bb2c759ab3d4eaf32cbeb612f21dccb
(0034052)
Utkarsh Ayachit   
2015-01-10 08:20   
Topics merged into master (v4.3.0-RC1-46-g4b7a696):
(VTK) 15020_fix_OpenGL-1.2_issues
        fix_showinmenu_hints
        help-15203
        visit-gl2
(0034080)
Alan Scott   
2015-01-13 22:05   
Tested 4.3.0, Linux, remote server. Volume rendered with NX. Also, tested local server, volume rendering, with NX.