Mesa 7.0 and OpenGL 2.0

I have never used Mesa before, but can someone please explain this:

“June 2007: Mesa 7.0 is released, implementing the OpenGL 2.1 specification and OpenGL Shading Language.”

Does this mean Mesa OpenGL drivers ( http://www.mesa3d.org ) can provide
support to higher version OpenGL extensions to a graphics card that maybe only supports OpenGL 1.5?

This is under Windows of course.

Yes but all the rendering will be in software mode on the cpu => slow.

Have you used Mesa 7.2 for Windows before? Are you speaking from experience?

Because I just compiled it, dropped its opengl32.dll into my program directory and it crashed.

First it complains it can’t find MSVCR90.DLL. I fix this with installing MSVS 2008 redistributable DLLs.
Then it crashes. Mesa doesn’t provide support for anything else except MSVS 2008.

Have you used Mesa 7.2 for Windows before? Are you speaking from experience?
I have used Mesa 7.0 under Linux with my Nvidia TnT2. I was able execute program with vertex and fragment shaders.

Because I just compiled it, dropped its opengl32.dll into my program directory and it crashed.
I don’t know for Windows but for Linux I have to uninstall the Nvidia binary drivers before
installing Mesa to not have a conflict with OpenGL libraries.

First it complains it can’t find MSVCR90.DLL. I fix this with installing MSVS 2008 redistributable DLLs.
Then it crashes. Mesa doesn’t provide support for anything else except MSVS 2008.
My advice here is to find with which libraries your OpenGL program is linked. Under Linux we have the ldd command to see that. Finally I suspect that you have a dll conflict.

Example:


ldd shapes
        linux-gate.so.1 =>  (0xb7f75000)
        libosgViewer.so.44 => /usr/lib/libosgViewer.so.44 (0xb7ebd000)
        libosg.so.44 => /usr/lib/libosg.so.44 (0xb7c77000)
        libstdc++.so.6 => /usr/lib/gcc/i686-pc-linux-gnu/4.1.2/libstdc++.so.6 (0xb7b8e000)
        libm.so.6 => /lib/libm.so.6 (0xb7b68000)
        libgcc_s.so.1 => /usr/lib/gcc/i686-pc-linux-gnu/4.1.2/libgcc_s.so.1 (0xb7b5c000)
        libc.so.6 => /lib/libc.so.6 (0xb7a2c000)
        libosgDB.so.44 => /usr/lib/libosgDB.so.44 (0xb79a1000)
        libOpenThreads.so.11 => /usr/lib/libOpenThreads.so.11 (0xb7998000)
        libosgGA.so.44 => /usr/lib/libosgGA.so.44 (0xb7952000)
        libosgText.so.44 => /usr/lib/libosgText.so.44 (0xb7905000)
        libosgUtil.so.44 => /usr/lib/libosgUtil.so.44 (0xb77a0000)
        libGLU.so.1 => /usr/lib/libGLU.so.1 (0xb7719000)
        libGL.so.1 => /usr/lib/libGL.so.1 (0xb769f000)
        libSM.so.6 => /usr/lib/libSM.so.6 (0xb7696000)
        libICE.so.6 => /usr/lib/libICE.so.6 (0xb767d000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0xb757d000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0xb756b000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7554000)
        /lib/ld-linux.so.2 (0xb7f76000)
        libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0xb6e02000)
     libnvidia-tls.so.1 => /usr/lib/tls/libnvidia-tls.so.1 (0xb6e00000)
        libdl.so.2 => /lib/libdl.so.2 (0xb6dfc000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0xb6df8000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb6df0000)


Notice here the library libnvidia-tls.so.1 => /usr/lib/tls/libnvidia-tls.so.1. This indicate that I use the OpenGL libraries provided by NVidia binary driver. To use Mesa I must remove that library + a bunch of other (libGLcore.so.1,libGL.so.1 …) before installing Mesa.

So, all the DLLs that link to my program have to use the same runtime library, MSVCR90.DLL?

My program links to MFC42.DLL and MSVCRT.DLL. It’s wasn’t compiled with MSVS 2008.

I do use a NVidia card, but Windows use dynamic DLLs, so I don’t think I have to uninstall
Nvidia’s drivers?

I ditched Mesa 7.2 and downloaded Mesa 7.0, which has project files for VC6, but the
compiler complains it can’t find a dozen or so files. I searched and all those files
are missing from the package, so the Mesa VC6 project is really messed up. :frowning:

I do use a NVidia card, but Windows use dynamic DLLs, so I don’t think I have to uninstall
Nvidia’s drivers?
Linux use dynamic library too. *.so files are the equivalent of DLL in windows. What I would do (maybe not very clever) is copy all the DLL produced by Mesa in the local directory of your opengl program in the hope that it will use it first.

Is there an error message with the crash?

Also, you can try to compile Mesa static with the runtime (/MT instead of /MD).

I get this error, Runtime Error R6034:
http://msdn.microsoft.com/en-us/library/ms235560(VS.80).aspx

And not just my program, I dropped the Mesa DLLs in some other OpenGL apps I have, and they all crash with same runtime error.

I think this Runtime error might be related to these error messages:

------ Build started: Project: gdi, Configuration: Release Win32 ------
Embedding manifest…
Project : error PRJ0003 : Error spawning ‘mt.exe’.
Build log was saved at “file://c:\MesaLib-7.2\windows\VC8\mesa\gdi\Release\BuildLog.htm”
gdi - 1 error(s), 0 warning(s)
------ Build started: Project: glu, Configuration: Release Win32 ------
Embedding manifest…
Project : error PRJ0003 : Error spawning ‘mt.exe’.
Build log was saved at “file://c:\MesaLib-7.2\windows\VC8\mesa\glu\Release\BuildLog.htm”
glu - 1 error(s), 0 warning(s)
------ Build started: Project: osmesa, Configuration: Release Win32 ------
Embedding manifest…
Project : error PRJ0003 : Error spawning ‘mt.exe’.
Build log was saved at “file://c:\MesaLib-7.2\windows\VC8\mesa\osmesa\Release\BuildLog.htm”
osmesa - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 3 failed, 1 up-to-date, 0 skipped ==========

OPENGL32.DLL is built, but perhaps it has no manifest?

mt.exe is in my MSVS 2008 directory, so I don’t know why this Mesa project is complaining it can’t find it.
It runs fine by itself too.

I got it working! No more crashing. Just had to add the path to mt.exe in
“Tools -> Options… -> Projects & Solutions -> VC++ Directories -> Executable Files”

I see it gives me only two pixel formats. No alpha channel either?
And I don’t see any PFD_DRAW_TO_BITMAP support.

I see it gives me FBOs, but I tried it out, and I’m getting white textures.
Probably due to no alpha.

I’m mostly just interested in its offscreen rendering capabilities.

Oh well, thanks anyway!


OpenGL vendor string: Brian Paul
OpenGL renderer string: Mesa Windows GDI Driver
OpenGL version string: 2.1 Mesa 7.2
OpenGL extensions (GL_): 
    GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_fragment_program,
    GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader,
    GL_ARB_half_float_pixel, GL_ARB_imaging, GL_ARB_multisample,
    GL_ARB_multitexture, GL_ARB_occlusion_query, GL_ARB_pixel_buffer_object,
    GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_shader_objects,
    GL_ARB_shading_language_100, GL_ARB_shadow, GL_ARB_shadow_ambient,
    GL_ARB_texture_border_clamp, GL_ARB_texture_compression,
    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_non_power_of_two,
    GL_ARB_texture_rectangle, GL_ARB_transpose_matrix,
    GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader,
    GL_ARB_window_pos, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
    GL_EXT_blend_equation_separate, 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_compiled_vertex_array, GL_EXT_convolution,
    GL_EXT_copy_texture, GL_EXT_depth_bounds_test, GL_EXT_draw_range_elements,
    GL_EXT_framebuffer_object, GL_EXT_framebuffer_blit, GL_EXT_fog_coord,
    GL_EXT_gpu_program_parameters, GL_EXT_histogram, GL_EXT_multi_draw_arrays,
    GL_EXT_packed_depth_stencil, GL_EXT_packed_pixels, GL_EXT_paletted_texture,
    GL_EXT_pixel_buffer_object, 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_shared_texture_palette, 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_mirror_clamp, GL_EXT_texture_object,
    GL_EXT_texture_rectangle, GL_EXT_texture_sRGB, GL_EXT_vertex_array,
    GL_APPLE_packed_pixels, GL_APPLE_vertex_array_object,
    GL_ATI_blend_equation_separate, GL_ATI_texture_env_combine3,
    GL_ATI_texture_mirror_once, GL_ATI_fragment_shader, GL_ATI_separate_stencil,
    GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip,
    GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate,
    GL_MESA_pack_invert, GL_MESA_program_debug, GL_MESA_resize_buffers,
    GL_MESA_texture_array, GL_MESA_ycbcr_texture, GL_MESA_window_pos,
    GL_NV_blend_square, GL_NV_fragment_program, GL_NV_light_max_exponent,
    GL_NV_point_sprite, GL_NV_texture_rectangle, GL_NV_texgen_reflection,
    GL_NV_vertex_program, GL_NV_vertex_program1_1, GL_OES_read_format,
    GL_SGI_color_matrix, GL_SGI_color_table, GL_SGI_texture_color_table,
    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.

maxpf: 2

   visual  x  bf lv rg d st  r  g  b a  ax dp st accum buffs  ms 
 id dep cl sp sz l  ci b ro sz sz sz sz bf th cl  r  g  b  a ns b
-----------------------------------------------------------------
0x01 24 wn  . 24  .  r y  .  8  8  8  .  . 16  8  .  .  .  .  . .
0x02 24 wn  . 24  .  r .  .  8  8  8  .  . 16  8  .  .  .  .  . .
-----------------------------------------------------------------

btw, I also turned off hardware acceleration in my Control Panel to see if it affected the results.
The same results came back.

The ‘os’ in osmesa.dll means ‘off screen’. (But don’t ask me, how to use this.)

It looks like I have to link the mesa lib to my program if I want to use OSMESA.DLL. But I would prefer not to create any dependencies.

When using PFD_DRAW_TO_BITMAP, Windows imposes a max. texture size limit of 1024 x 1024. Does anyone know if Mesa has
the same limit for offscreen rendering?

I’m looking for a way to do offscreen software rendering in OpenGL that allows me to use 4096 x 4096 textures.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.