PDA

View Full Version : NVIDIA Delivers Beta OpenGL 3.0 Linux Driver


phoronix
10-24-2008, 02:00 PM
Phoronix: NVIDIA Delivers Beta OpenGL 3.0 Linux Driver

The OpenGL 3.0 and GLSL 1.30 specification were released back in August during SIGGRAPH 2008. Just days later NVIDIA had delivered a beta driver for Windows that added OpenGL 3.0 functionality, but Linux, FreeBSD, and Solaris users were left in the dark. Two months later though NVIDIA has now published a beta Linux driver that implements most of the latest GL/GLSL specification.

http://www.phoronix.com/vr.php?view=13009

Xanikseo
10-24-2008, 02:10 PM
Wow, first response!
Quite a fast response from nVidia (for Linux that is).
Does this mean that opengl2.1 will be a little faster with the new exposure of ARB_vertex_array_object, ARB_framebuffer_object, and ARB_half_float_vertex extensions?

EDIT: It seems this still has the old 2D regression (the one affecting lines and circles in gtkperf)

deanjo
10-24-2008, 03:03 PM
Wow, first response!
Quite a fast response from nVidia (for Linux that is).
Does this mean that opengl2.1 will be a little faster with the new exposure of ARB_vertex_array_object, ARB_framebuffer_object, and ARB_half_float_vertex extensions?

EDIT: It seems this still has the old 2D regression (the one affecting lines and circles in gtkperf)

The OpenGL 3 tree branched off of the 177 tree at build 61, as indicated by the 177.61.xx version numbers, so it contains some, but not all of the features and fixes added in the 177.80 drivers.

bulletxt
10-24-2008, 04:00 PM
this is what I call a serious company.

Xanikseo
10-24-2008, 04:07 PM
Yes I did have a suspicion it would be that way.

bash
10-24-2008, 08:38 PM
Nice move by nvidia supporting OpenGL 3 so fast. And mid November we will have OpenGL 3 support in the closed-source ATI fglrx driver. 2010 that is. :D

Nille
10-24-2008, 09:07 PM
Nice move by nvidia supporting OpenGL 3 so fast. And mid November we will have OpenGL 3 support in the closed-source ATI fglrx driver. 2010 that is. :D

no -.- ati Support some OpenGL 3 parts since the Catalyst 8.9/8.10 ( 8.10 definitely because i dont have use 8.9 ). so AMD/ATI was faster.


EDIT: ATI Support some OGL3 Extensions since 8.9 look http://www2.ati.com/relnotes/catalyst_89_release_notes.html

New Features

Catalyst™ 8.9 introduces the following new features:

• Catalyst™ Control Center: New Display mode support

• OverDrive™ support for QUAD CrossFireX configurations

· OpenGL™ 3.0 extension support

TechMage89
10-24-2008, 09:16 PM
From my reading of the ATI driver release notes, apparently only the Windows driver has the OpenGL 3.0 extensions. The Linux driver release notes make no mention of them.

Nille
10-24-2008, 09:47 PM
From my reading of the ATI driver release notes, apparently only the Windows driver has the OpenGL 3.0 extensions. The Linux driver release notes make no mention of them.

The difference between 8.9 and 8.10 glxinfo Output

@@ -24,24 +24,26 @@
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_visual_select_group
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: ATI Radeon HD 3850
-OpenGL version string: 2.1.7979 Release
+OpenGL version string: 2.1.8087 Release
OpenGL extensions:
GL_AMDX_vertex_shader_tessellator, GL_AMD_performance_monitor,
- GL_AMD_texture_texture4, GL_ARB_depth_texture, GL_ARB_draw_buffers,
- GL_ARB_fragment_program, GL_ARB_fragment_shader, GL_ARB_multisample,
- GL_ARB_multitexture, GL_ARB_occlusion_query, GL_ARB_pixel_buffer_object,
+ GL_AMD_texture_texture4, GL_ARB_color_buffer_float, GL_ARB_depth_texture,
+ GL_ARB_draw_buffers, GL_ARB_draw_instanced, GL_ARB_fragment_program,
+ GL_ARB_fragment_shader, GL_ARB_half_float_pixel, GL_ARB_half_float_vertex,
+ GL_ARB_instanced_arrays, 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_float,
- 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_ATI_draw_buffers, GL_ATI_envmap_bumpmap,
- GL_ATI_fragment_shader, GL_ATI_meminfo, GL_ATI_separate_stencil,
- GL_ATI_shader_texture_lod, GL_ATI_texture_compression_3dc,
+ GL_ARB_shader_texture_lod, 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_float, 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_ATI_draw_buffers, GL_ATI_envmap_bumpmap, GL_ATI_fragment_shader,
+ GL_ATI_meminfo, GL_ATI_separate_stencil, GL_ATI_texture_compression_3dc,
GL_ATI_texture_env_combine3, GL_ATI_texture_float, GL_EXT_abgr,
GL_EXT_bgra, GL_EXT_blend_color, GL_EXT_blend_equation_separate,
GL_EXT_blend_func_separate, GL_EXT_blend_minmax, GL_EXT_blend_subtract,
@@ -49,11 +51,12 @@
GL_EXT_depth_buffer_float, GL_EXT_draw_range_elements, GL_EXT_fog_coord,
GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample,
GL_EXT_framebuffer_object, GL_EXT_gpu_program_parameters,
- GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,
+ GL_EXT_gpu_shader4, GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,
GL_EXT_packed_float, GL_EXT_packed_pixels, GL_EXT_point_parameters,
GL_EXT_rescale_normal, GL_EXT_secondary_color,
GL_EXT_separate_specular_color, GL_EXT_shadow_funcs, GL_EXT_stencil_wrap,
GL_EXT_subtexture, GL_EXT_texgen_reflection, GL_EXT_texture3D,
+ GL_EXT_texture_compression_latc, GL_EXT_texture_compression_rgtc,
GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map,
GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,


Note: The openGL version from ATI is on both Systems Windows and Linux the same so if ATI Support OGL3 on windows they Provide also Support for Linux.

Extreme Coder
10-25-2008, 12:06 AM
So you're saying the Linux one has partial GL 3 support?

WhiteDwarf
10-25-2008, 01:00 AM
That ATI driver doesn't appear to have any OpenGL 3.0 support as it is missing the extension required to create an OpenGL 3.0 context, GLX_ARB_create_context. Of course, I wouldn't expect it to be there as the specification was only completed on October 22, the day before NVIDIA released their OpenGL 3.0 driver.

bash
10-25-2008, 07:00 AM
no -.- ati Support some OpenGL 3 parts since the Catalyst 8.9/8.10 ( 8.10 definitely because i dont have use 8.9 ). so AMD/ATI was faster.


EDIT: ATI Support some OGL3 Extensions since 8.9 look http://www2.ati.com/relnotes/catalyst_89_release_notes.html

I knew the Windows driver had gotten partial OpenGL 3 support. But I thought that didn't apply to the Linux driver as well.

Licaon
10-25-2008, 11:11 AM
strange, 177.61.02 does not want to install as it detects that i have a Xen kernel, but 177.80 says i do not have one and installs

Kano
10-25-2008, 01:36 PM
Did you try

export IGNORE_XEN_PRESENCE=1

Yfrwlf
10-25-2008, 04:45 PM
Awesome, now provide a driver that can be installed on any kernel and won't break with a switch between kernels, a true Linux kernel module that's actually modular, so normal users who don't understand the risk of installing the binary from Nvidia who then do a system update only to find their system totally hosed after it installed a newer kernel for them won't get fXXXed. Maybe the kernel module API needs some stabilization for that to happen, but regardless something needs to happen because it's a problem for many users.

Kano
10-25-2008, 06:29 PM
Well Xserver 1.5 support for GeForce 5 and newer exits since end of may (173.14.xx) - ATI has a beta version since mid of october for Ubuntu. That's in best case 4 month after NV. That change was really more important. Smaller kernel ABI changes can be fixed manually, for bigger ones you need new drivers. For 2.6.28 take a look there:

http://www.nvnews.net/vbulletin/showthread.php?t=121790

3vi1
10-25-2008, 06:31 PM
Awesome, now provide a driver that can be installed on any kernel and won't break with a switch between kernels.

Ubuntu Intrepid, and other distros, use DKMS (http://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support) to achieve this effect with the current nVidia drivers.

thacrazze
10-26-2008, 05:58 AM
Catalyst 8.10 supports already a lot of OpenGL 3.0.

Dragoran
10-26-2008, 08:31 AM
Catalyst 8.10 supports already a lot of OpenGL 3.0.

no, without GLX_create_context it has NO opengl 3 support at all.

thacrazze
10-26-2008, 02:11 PM
Catalyst 8.10 supports already a lot of parts of OpenGL 3.0.

Chris
10-26-2008, 11:51 PM
Catalyst 8.10 supports already a lot of parts of OpenGL 3.0.
Without GLX_ARB_create_context, there is no OpenGL 3, at all. Saying that they have support for parts of GL 3 because they have some extensions that 3.0 has in core isn't a fair comparison, otherwise I can say nVidia's had parts of GL 3 for years, because they supported GL_ARB_texture_float (made core in GL3).

Yfrwlf
10-27-2008, 05:30 PM
Ubuntu Intrepid, and other distros, use DKMS (http://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support) to achieve this effect with the current nVidia drivers.

And that's wonderful, but it's a patch over the real problem, which is a stable kernel module API, or some kind of stable API somewhere to allow a driver to be installed on a system easily. You can have a stable API and still have feature improvement via forwards compatibility, and even if you switch APIs or have an unstable API, at least make it so all the APIs can be easily installed and used so that users with older drivers won't be left in the dark.

Users don't want to wait around for a driver or some headers to recompile itself whenever they want to use it, nor should they have to and wouldn't if more planning went into the architecture of the system. It looks like they tried to with kernel modules and there are these PPD driver files for printers, but even those aren't using a standard it seems and need recompilation for use on whatever CUPS version is installed.

Any way, it can be a pain, so I hope smarter ways of doing things take hold.

_txf_
10-28-2008, 06:55 AM
And that's wonderful, but it's a patch over the real problem, which is a stable kernel module API, or some kind of stable API somewhere to allow a driver to be installed on a system easily. You can have a stable API and still have feature improvement via forwards compatibility, and even if you switch APIs or have an unstable API, at least make it so all the APIs can be easily installed and used so that users with older drivers won't be left in the dark.

Users don't want to wait around for a driver or some headers to recompile itself whenever they want to use it, nor should they have to and wouldn't if more planning went into the architecture of the system. It looks like they tried to with kernel modules and there are these PPD driver files for printers, but even those aren't using a standard it seems and need recompilation for use on whatever CUPS version is installed.

Any way, it can be a pain, so I hope smarter ways of doing things take hold.

You might end up waiting a long time. Linux never has and never will have an internal stable abi or api. Much of the problems are reduced when the drivers are in the kernel tree (which is what the devs encourage). if you're interested about the reasons for this you can read here:
http://www.mjmwired.net/kernel/Documentation/stable_api_nonsense.txt

Yfrwlf
10-28-2008, 07:08 PM
You might end up waiting a long time. Linux never has and never will have an internal stable abi or api. Much of the problems are reduced when the drivers are in the kernel tree (which is what the devs encourage). if you're interested about the reasons for this you can read here:
http://www.mjmwired.net/kernel/Documentation/stable_api_nonsense.txt

Yep thanks and I read it, and that's a really POS article. Any article that starts out with "you don't need to worry about it" and "only weirdos want to make kernel drivers any way" is stupid. There's no reason for not having stability in the inter-kernel API/ABI, it's entirely possible. It's stable between the kernel and programs, and it can be stable between drivers and the kernel too. Having a stable API does not mean not being able to improve the kernel and all it requires is documentation and communication. The reason they push for it is because they want all drivers to be open source and to be able to control them, so they want to give any drivers outside of the kernel a hard time. Also by screwing over everyone else repeatedly they can stay in control and have everyone dependent on them. Well, guess what, you just ended up giving Linux users a hard time instead, because now they don't have the freedom to install any standalone driver on any kernel without being required to know how to compile. Thanks a lot. I hope someone makes a kernel module which allows kernel modules to be attached to *it* instead, then it will add on a stable API, and we can have true modularity.