PDA

View Full Version : NVIDIA releases OpenGL 4.1 drivers



Khronos_webmaster
07-27-2010, 01:25 PM
NVIDIA is proud to announce the immediate availability of OpenGL 4.1 drivers for Linux as well as OpenGL 4.1 WHQL-certified drivers for Windows.

You will need any one of the following Fermi based GPU to get access to the OpenGL 4.1 and GLSL 4.10 functionality:
Quadro Plex 7000, Quadro 6000, Quadro 5000, Quadro 5000M, Quadro 4000 GeForce GTX 480, GeForce GTX 470, GeForce GTX 465, GeForce GTX 460
For OpenGL 2 capable hardware, these new extensions are provided:
ARB_debug_output ARB_ES2_compatibility (also in core OpenGL 4.1) ARB_separate_shader_objects (also in core OpenGL 4.1)
For OpenGL 3 capable hardware, these new extensions are provided:
ARB_get_program_binary (also in core OpenGL 4.1) ARB_robustness ARB_viewport_array (also in core OpenGL 4.1) GLX_EXT_create_context_ES2_profile WGL_EXT_create_context_ES2_profile GLX_ARB_create_context_robust_access WGL_ARB_create_context_robust_access
For OpenGL 4 capable hardware, these new extensions are provided:
ARB_shader_precision (also in core OpenGL 4.1) ARB_vertex_attrib_64bit (also in core OpenGL 4.1)
The drivers and extension documentation can be downloaded from http://developer.nvidia.com/object/opengl_driver.html

Alfonse Reinheart
07-27-2010, 11:12 PM
WGL_EXT_create_context_ES2_profile

... What is this? This doesn't appear to be in the registry.

ruysch
07-28-2010, 12:29 AM
nor is GL_NVX_gpu_memory_info in the registry, I for one use

http://developer.nvidia.com/object/nvidia_opengl_specs.html

This might not be the official channel, but an incomplete/untrustworthy registry is pointless in my opinion.

Aleksandar
07-28-2010, 06:03 AM
WGL_EXT_create_context_es2_profile enables creating an OpenGL ES 2.0 context using a desktop OpenGL implementation. The current state of the spec can be found here:
http://developer.download.nvidia.com/opengl/specs/wgl_create_context_es2_profile.txt

Aleksandar
07-28-2010, 06:30 AM
By the way, these drivers (259.09) support 8 (out of 11) extensions introduced into core GL 4.1 specification. Currently only the following is not supported:
- GL_ARB_cl_event
- GL_ARB_debug_output
- GL_ARB_shader_stencil_export

I haven't tried all the extensions, but it looks nice so far...
Great job!
Thanks NVIDIA! ;)

Sockerdrickan
07-28-2010, 06:46 AM
Great work

Chris Lux
07-28-2010, 08:39 AM
By the way, these drivers (259.09) support 8 (out of 11) extensions introduced into core GL 4.1 specification. Currently only the following is not supported:
- GL_ARB_cl_event
- GL_ARB_debug_output
- GL_ARB_shader_stencil_exportThese are extensions introduced _with_ OpenGL 4.1 not _into_.

There is still one extension missing especially, introduced with OpenGL 4.0:
- GL_ARB_shading_language_include

Aleksandar
07-28-2010, 09:10 AM
Totally agree! Sorry, it was a semantic error made in the rush.

Ian Stewart
07-28-2010, 10:08 AM
Currently only the following is not supported:
- GL_ARB_debug_output


GL_ARB_debug_output is supported by the 259.09 drivers, but you must request a debug context for it to be available.

Aleksandar
07-28-2010, 11:35 AM
Thank you very much, Ian!

I'll fix out my extension viewer. Well, it becomes more complicated to write good extension viewer. Now we should iterate through differently created contexts to find out what is supported in each one.

Not only the list of supported extensions differs, but also a pointer to functions cannot be retrieved if the proper GL context is not created.

So, yes, GL_ARB_debug_output extension is supported!
Ian, thanks again.

Tom Flynn
07-28-2010, 02:50 PM
http://developer.download.nvidia.com/opengl/specs/wgl_create_context_es2_profile.txt

Now that's a nice extension! Will there be a GLX version of it?

WhiteDwarf
07-28-2010, 08:36 PM
There is a GLX version of it (in the NVIDIA OpenGL 4.1 driver):

http://developer.download.nvidia.com/opengl/specs/glx_create_context_es2_profile.txt

Tom Flynn
07-29-2010, 11:02 AM
whoo-hoo!

ScottManDeath
07-30-2010, 05:05 PM
I got GL_ARB_debug_output to work. It triggers when I provoke a glGetError and when I am calling glDebugMessageInsertARB. :)

Calling glGetIntegerv with GL_MAX_DEBUG_MESSAGE_LENGTH_ARB and GL_MAX_DEBUG_LOGGED_MESSAGES_ARB fails however.

Also, when I create a debug context, I get the GL_ARB_debug_output extensions and the GL_ARB_robustness extension. Creating a context with both the debug and the robustness WGL flags set, gives me only the GL_ARB_robustness extensions. Is that expected?

System is Win7x64, GPUs are 2x8800 GTX with the 259.09 driver.

Friktion
07-31-2010, 03:51 AM
hey that sounds awesome, could you provide me the source code for this ? ;D

ScottManDeath
08-02-2010, 04:09 PM
I now get both a robust, and a debug context, reason was that WGL_CONTEXT_FLAGS_ARB was twice in the attribute list,thus only the last one was taken. Binaryly "oring" the flags and having it only once in the attribute list did the trick :)

glGetIntegerv with GL_MAX_DEBUG_MESSAGE_LENGTH_ARB and GL_MAX_DEBUG_LOGGED_MESSAGES_ARB still triggers the callback though.

Ian Stewart
08-02-2010, 04:46 PM
Calling glGetIntegerv with GL_MAX_DEBUG_MESSAGE_LENGTH_ARB and GL_MAX_DEBUG_LOGGED_MESSAGES_ARB fails however.

Thanks for reporting this, Scott! We've found the problem and it will be fixed in a future release.

ScottManDeath
08-03-2010, 12:48 PM
Glad to be of service. :)

So I was wondering what type of debug messages I am going to get?

I only got API/SEVERE calls so far, but what about feedback similar to the GLEXPERT driver?

Piers Daniell
08-10-2010, 11:24 AM
The drivers have been updated to version 259.31, which includes a fix for the glGetIntegerv(GL_MAX_DEBUG_MESSAGE_LENGTH, etc) issue.
http://developer.nvidia.com/object/opengl_driver.html

ScottManDeath
08-11-2010, 12:21 PM
The drivers have been updated to version 259.31, which includes a fix for the glGetIntegerv(GL_MAX_DEBUG_MESSAGE_LENGTH, etc) issue.
http://developer.nvidia.com/object/opengl_driver.html


I can confirm that it works :)

Groovounet
08-20-2010, 01:38 PM
Hi,

Here is a series bugs I encounter:
1 - nVidia drivers doesn't support precision qualifier for input and output varyings.

2 - gl_ViewportIndex isn't supported.

3 - nVidia drivers behave weirdly with precision qualifiers. On one side there are more of less discard, on other side there are interpreted as int8_t or int16_t which are defined in GL_NV_vertex_attrib_integer_64bit but I don't use it.

4 - I have a misleading warning with the following simple shader:
0(21) : warning C7050: "GeomColor" might be used before being initialized


#version 400 core

layout(triangles, invocations = 6) in;

in vec3 VertColor[];
layout(stream = 0) out vec3 GeomColor;

uniform mat4 MVP;

void main()
{
for(int i = 0; i < gl_in.length(); ++i)
{
gl_Position = MVP * (gl_in[i].gl_Position + vec4(vec2(0.0), - 0.3 + float(0.1) * float(gl_InvocationID), 0.0));
GeomColor = (vec3(gl_InvocationID + 1) / 6.0 + VertColor[i]) / 2.0;
EmitVertex();
}
EndPrimitive();
}

It is followed by a invalid operation error at draw call.

5 - More misleading errors with a simple control shader:

#version 400 core

layout(vertices = 4) out;

in vert
{
vec4 Color;
} Vert[];

out cont
{
vec4 Color;
} Cont[];

void main()
{
gl_TessLevelInner[0] = 16.0;
gl_TessLevelInner[1] = 16.0;
gl_TessLevelOuter[0] = 8.0;
gl_TessLevelOuter[1] = 8.0;
gl_TessLevelOuter[2] = 8.0;
gl_TessLevelOuter[3] = 8.0;
gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
Cont[gl_InvocationID].Color = Vert[gl_InvocationID].Color;
}

0(14) : error C5121: multiple bindings to output semantics
"ATTR0"
0(14) : error C5121: multiple bindings to output semantics "ATTR0"
0(14) : error C5121: multiple bindings to output semantics "ATTR0"

Yes, I have it 3 times...

6 - More geometry shader issue:

#version 410 core

// Declare all the semantics
#define ATTR_POSITION 0
#define ATTR_COLOR 3
#define ATTR_TEXCOORD 4

#define VERT_POSITION 0
#define VERT_COLOR 3
#define VERT_TEXCOORD 4
#define VERT_INSTANCE 7

#define GEOM_COLOR 3

#define FRAG_COLOR 0
#define FRAG_RED 0
#define FRAG_GREEN 1
#define FRAG_BLUE 2
#define FRAG_ALPHA 3

layout(triangles, invocations = 6) in;

layout(location = VERT_COLOR) in vec3 Color[];
layout(location = GEOM_COLOR, stream = 0) out vec3 GeomColor;

uniform mat4 MVP;

void main()
{
for(int i = 0; i < gl_in.length(); ++i)
{
gl_Position = MVP * (gl_in[i].gl_Position + vec4(vec2(0.0), - 0.3 + float(0.1) * float(gl_InvocationID), 0.0));
GeomColor = (vec3(gl_InvocationID + 1) / 6.0 + Color[i]) / 2.0;
EmitVertex();
}
EndPrimitive();
}

which generates the message: (0) fatal error C9999: *** exception during compilation ***

Actually, I didn't manage to run any gemetry shader code...

***Outch***

Groovounet
08-22-2010, 06:13 PM
Shared uniform buffer across a block array isn't supported:
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&amp;Number=281984#Post2819 84

Tom Flynn
08-31-2010, 03:18 PM
what hardware and driver version do I need to be able to use the es2 profile extension (http://developer.download.nvidia.com/opengl/specs/glx_create_context_es2_profile.txt).

So far, I've tried downloading the latest driver available for my linux laptop (I have a 9400M, when downloading off the nvidia site, it reported 256.53 as the latest driver for that chip) and I'm not seeing the extension reported via glxinfo.

what hw / driver version do I need?
thanks

Tom Flynn
08-31-2010, 04:21 PM
what hardware and driver version do I need to be able to use the es2 profile extension (http://developer.download.nvidia.com/opengl/specs/glx_create_context_es2_profile.txt).

So far, I've tried downloading the latest driver available for my linux laptop (I have a 9400M, when downloading off the nvidia site, it reported 256.53 as the latest driver for that chip) and I'm not seeing the extension reported via glxinfo.

what hw / driver version do I need?
thanks

nevermind, posted too soon. Had to grab the driver from here: http://developer.nvidia.com/object/opengl_driver.html

with this driver installed, I now see the extension reported on my 9400M. Time to use it :)...

Tom Flynn
09-01-2010, 11:03 AM
Ok, I was able to create an ES2 context. I verified that if I use an OpenGL call not legal in ES2, that I get an OpenGL error (the same call with a GL3 context does not report an error). Good. That solves half the problem. Thank you :)

However, it does seem as though getting an ES2 context is not enough to enforce that GLSL compilation is restricted to the GLSL that is valid for ES2. (I was able to use roundEven() and other calls that aren't in the ES2 GLSL spec). Is there a way to enforce restricting the compiler to only compile GLSL that is valid for ES2?

Alfonse Reinheart
09-01-2010, 05:56 PM
I was able to use roundEven() and other calls that aren't in the ES2 GLSL spec

Then that would be a driver bug. The EXT_create_context_ES2_profile extension is very clear on this:



2) May an OpenGL ES 2.0 "profile" include OpenGL functionality
introduced by OpenGL 2.1 and later versions?

PROPOSED: NO, except in the form of extensions that are themselves
defined relative to OpenGL ES 2.0. This restriction is intended to
make it difficult to create ill-defined conglomerations of OpenGL ES
and OpenGL features and to eliminate subjective interpretations of
what it means to subset a GL extension for implementation against
OpenGL ES.

Chris Lux
09-06-2010, 11:48 PM
hi,
are there any news when a new OpenGL 4.1 beta or release driver will be released which addresses some of the more serious reported issues? ([1] gives a nice overview)

I hit a brick wall on my current project when trying to use viewport arrays due to the missing gl_ViewportIndex variable.

[1] http://www.g-truc.net/post-0321.html

Chris Lux
09-14-2010, 05:07 AM
hi,
are there any news when a new OpenGL 4.1 beta or release driver will be released which addresses some of the more serious reported issues? ([1] gives a nice overview)

I hit a brick wall on my current project when trying to use viewport arrays due to the missing gl_ViewportIndex variable.

[1] http://www.g-truc.net/post-0321.html
FYI, the latest official beta driver (260.63) exposes OpenGL 4.1 but also has these problems (so it is not really a OpenGL 4.1 driver).