Sometime ago I had a discussion with a friend about what really means that a video card has OpenGL support. I noticed that I really dont underestand what is it. When a card supports opengl, that means that it implements the *high level* opengl functions? I mean, the GPU can draw a polygon, apply a texture to it, and such things? Or merely it is a matter of drivers and such operations are done by the driver and the GPU supports basic operations like drawing pixels or lines?

baldurk
—
2003-07-30T17:49:08Z —
#2

it is a driver thing. It means that their drivers do indeed perform everything that is expected .

rogerdv
—
2003-07-30T19:03:46Z —
#3

Then, what operations are performed by the hardware? Maybe complex matrix operations and simple polygon draw/filling? So, that means that I can have a last generation gePower 20 Xi10k, but if the drivers doesnt support all GL extensions it is wasted money?

baldurk
—
2003-07-30T20:37:21Z —
#4

just because the drivers support it, doesn't mean it's done in software . e.g., on most post GF2 cards, transformation and lighting are both done in hardware. Of course, so are many many many other things. The drivers just convert the OpenGL commands into commands for the GPU.

donBerto
—
2003-07-31T20:42:58Z —
#5

the above replies should be sufficient. but if not...

When a card supports opengl, that means that it implements the *high level* opengl functions?

no. it means that the card has hardware [Graphics Processing Unit] that is compliant to the OpenGL specifications. if you call any gl function, the board will support it and use hardware to do it.

I don't mean to discredit the replies above and forgive me if this is overkill.

no. it means that the card has hardware [Graphics Processing Unit] that is compliant to the OpenGL specifications. if you call any gl function, the board will support it and use hardware to do it.

hmm. So that means, that if you call a fragment program function, and the GPU doesn't use hardware to do it, the graphics card doesn't support opengl? interesting. I always thought my GeForce 4 did....

donBerto
—
2003-08-02T18:54:55Z —
#7

if you call a fragment program function, and the GPU doesn't use hardware to do it, the graphics card doesn't support opengl?

exactly - opengl does _NOT_ have an emulation layer unlike DirectX. but that's why card makers release updated drivers so that new features [like extensions and fragments] can be used.

[in DirectX, if a feature isn't supported by the HAL (hardware abstraction layer), it is sent to the HEL (hardware emulation layer)].

:yes:

Jesse_M
—
2003-08-03T17:30:30Z —
#8

Even though OpenGL doesn't have any layers for hardware/software, it's a simple enough task for any implementor to make software extensions where their hardware is lacking. Using hardware does not exclude the use of software.

When you buy a new card it's not just a matter of whether is supports OpenGL or not. It may have 90% support on it's card, and have the rest emulated in the driver by software processing. This is especially true when vendors want to support a feature/extension but don't have hardware support for it yet (and will in the future)

donBerto
—
2003-08-03T17:48:14Z —
#9

...true

*enlightened* :yes:

davepermen
—
2003-08-03T19:52:00Z —
#10

straight from some opengl specification discussions on opengl.org:

if a driver returns a certain extension in the extension string, say ARB_TEXTURE_3D, then it supports it in hardware (for example, this ext is not on gf2).

a driver CAN implement certain tasks in software, and for support of a modern opengl version it even HAS to. saying that, you CAN gather the glTexImage3D function pointer on a gf2, and you CAN use 3d textures on a gf2. but they are only in software.

all extensions reported in the extensionstring(-s) should be implemented in hardware. an opengl version that gets reported doesn't have to.

when you have opengl 1.4, it means the driver can support EVERYTHING required to render an opengl1.4 scene. it doesn't mean it does everything in hardware.. (like the lovely statement of, i use glMultMatrix to do matrix multiplications, now its in hardware, why does it use 100% cpu power?!)