PDA

View Full Version : ARB Multisampling on Linux/GeForce FX



Torgeir
03-30-2004, 09:13 AM
I need to enable multisampling for my offscreen pbuffers, and for that I need to use multisampling as supported by GLX_ARB_multisample extension.

However I'm not seeing any visuals capable of multisampling!

I have tried various systems with various drivers (4363 and 5336), but I typically get output from glxinfo -t like this:

name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: NVIDIA Corporation
server glx version string: 1.3
server glx extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGI_video_sync, GLX_SGI_swap_control,
GLX_ARB_multisample, GLX_NV_float_buffer
client glx vendor string: NVIDIA Corporation
client glx version string: 1.3
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_EXT_import_context, GLX_SGI_video_sync,
GLX_NV_swap_group, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGI_swap_control, GLX_NV_float_buffer
GLX extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGI_video_sync, GLX_SGI_swap_control,
GLX_ARB_multisample, GLX_NV_float_buffer, GLX_ARB_get_proc_address
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: Quadro FX 500/AGP/SSE/3DNOW!
OpenGL version string: 1.4.1 NVIDIA 53.36
OpenGL extensions:
GL_ARB_depth_texture, GL_ARB_fragment_program, GL_ARB_imaging,
GL_ARB_multisample, GL_ARB_multitexture, GL_ARB_occlusion_query,
GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_shadow,
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_dot3,
GL_ARB_texture_mirrored_repeat, GL_ARB_transpose_matrix,
GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_window_pos,
GL_S3_s3tc, GL_EXT_texture_env_add, GL_EXT_abgr, GL_EXT_bgra,
GL_EXT_blend_color, GL_EXT_blend_func_separate, GL_EXT_blend_minmax,
GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,
GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_multi_draw_arrays,
GL_EXT_packed_pixels, GL_EXT_paletted_texture, GL_EXT_point_parameters,
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_two_side,
GL_EXT_stencil_wrap, GL_EXT_texture3D, GL_EXT_texture_compression_s3tc,
GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod,
GL_EXT_texture_lod_bias, GL_EXT_texture_object, GL_EXT_vertex_array,
GL_HP_occlusion_test, GL_IBM_rasterpos_clip,
GL_IBM_texture_mirrored_repeat, GL_KTX_buffer_region, GL_NV_blend_square,
GL_NV_copy_depth_to_color, GL_NV_depth_clamp, GL_NV_fence,
GL_NV_float_buffer, GL_NV_fog_distance, GL_NV_fragment_program,
GL_NV_half_float, GL_NV_light_max_exponent, GL_NV_multisample_filter_hint,
GL_NV_occlusion_query, GL_NV_packed_depth_stencil, GL_NV_pixel_data_range,
GL_NV_point_sprite, GL_NV_primitive_restart, GL_NV_register_combiners,
GL_NV_register_combiners2, GL_NV_texgen_reflection,
GL_NV_texture_compression_vtc, GL_NV_texture_env_combine4,
GL_NV_texture_expand_normal, GL_NV_texture_rectangle,
GL_NV_texture_shader, GL_NV_texture_shader2, GL_NV_texture_shader3,
GL_NV_vertex_array_range, GL_NV_vertex_array_range2, GL_NV_vertex_program,
GL_NV_vertex_program1_1, GL_NV_vertex_program2, GL_NVX_ycrcb,
GL_SGIS_generate_mipmap, GL_SGIS_texture_lod, GL_SGIX_depth_texture,
GL_SGIX_shadow, GL_SUN_slice_accum
glu version: 1.3
glu extensions:
GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess

Vis Vis Visual Trans buff lev render DB ste r g b a aux dep ste accum buffers MS MS
ID Depth Type parent size el type reo sz sz sz sz buf th ncl r g b a num bufs
----------------------------------------------------------------------------------------------------
0x21 24 TrueColor 0 32 0 rgba 1 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x22 24 DirectColor 0 32 0 rgba 1 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x23 24 TrueColor 0 32 0 rgba 1 0 8 8 8 8 0 24 8 16 16 16 16 0 0
0x24 24 TrueColor 0 32 0 rgba 0 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x25 24 TrueColor 0 32 0 rgba 0 0 8 8 8 8 0 24 8 16 16 16 16 0 0
0x26 24 TrueColor 0 32 0 rgba 1 0 8 8 8 0 0 0 0 16 16 16 16 0 0
0x27 24 TrueColor 0 32 0 rgba 1 0 8 8 8 8 0 0 0 16 16 16 16 0 0
0x28 24 TrueColor 0 32 0 rgba 0 0 8 8 8 0 0 0 0 16 16 16 16 0 0
0x29 24 TrueColor 0 32 0 rgba 0 0 8 8 8 8 0 0 0 16 16 16 16 0 0
0x2a 24 TrueColor 0 32 0 rgba 1 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x2b 24 TrueColor 0 32 0 rgba 1 0 8 8 8 8 0 24 8 16 16 16 16 0 0
0x2c 24 TrueColor 0 32 0 rgba 1 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x2d 24 TrueColor 0 32 0 rgba 1 0 8 8 8 8 0 24 8 16 16 16 16 0 0
0x2e 24 TrueColor 0 32 0 rgba 1 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x2f 24 TrueColor 0 32 0 rgba 1 0 8 8 8 8 0 24 8 16 16 16 16 0 0
0x30 24 TrueColor 0 32 0 rgba 1 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x31 24 TrueColor 0 32 0 rgba 1 0 8 8 8 8 0 24 8 16 16 16 16 0 0
0x32 24 DirectColor 0 32 0 rgba 1 0 8 8 8 8 0 24 8 16 16 16 16 0 0
0x33 24 DirectColor 0 32 0 rgba 0 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x34 24 DirectColor 0 32 0 rgba 0 0 8 8 8 8 0 24 8 16 16 16 16 0 0
0x35 24 DirectColor 0 32 0 rgba 1 0 8 8 8 0 0 0 0 16 16 16 16 0 0
0x36 24 DirectColor 0 32 0 rgba 1 0 8 8 8 8 0 0 0 16 16 16 16 0 0
0x37 24 DirectColor 0 32 0 rgba 0 0 8 8 8 0 0 0 0 16 16 16 16 0 0
0x38 24 DirectColor 0 32 0 rgba 0 0 8 8 8 8 0 0 0 16 16 16 16 0 0
0x39 24 DirectColor 0 32 0 rgba 1 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x3a 24 DirectColor 0 32 0 rgba 1 0 8 8 8 8 0 24 8 16 16 16 16 0 0
0x3b 24 DirectColor 0 32 0 rgba 1 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x3c 24 DirectColor 0 32 0 rgba 1 0 8 8 8 8 0 24 8 16 16 16 16 0 0
0x3d 24 DirectColor 0 32 0 rgba 1 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x3e 24 DirectColor 0 32 0 rgba 1 0 8 8 8 8 0 24 8 16 16 16 16 0 0
0x3f 24 DirectColor 0 32 0 rgba 1 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x40 24 DirectColor 0 32 0 rgba 1 0 8 8 8 8 0 24 8 16 16 16 16 0 0

Can anyone tell me why the QuadroFX 500 is not supporting any multisample buffers? I also get the same result with GeForceFX 5600 cards.

However, I have seen posts on the net of glxinfo from people that have similar cards, and they _do_
have visuals with multisample buffers.

Does anyone know what is going on?

Thanks for any help,

- Torgeir

brcain
04-07-2004, 05:05 AM
You need to set the environment variable, __GL_FSAA_MODE. Below are the possible settings:

setenv __GL_FSAA_MODE 4
#__GL_FSAA_MODE sets multi-sampling mode.
# 0 FSAA disabled
# 1 2x Bilinear Multisampling
# 2 2x Quincunx Multisampling
# 3 FSAA disabled
# 4 4x Bilinear Multisampling
# 5 4x Gaussian Multisampling
# 6 2x Bilinear Multisampling by 4x Supersampling
# 7 4x Bilinear Multisampling by 4x Supersampling

Here are some other environment variables you may be interested in.

setenv __GL_NV30_EMULATE 1
setenv __GL_SYNC_TO_VBLANK 1

Just add the environment variables to your .tcshrc, .cshrc, etc.

Regards,
Ben