No New OGL Extensions. Waiting for DX9?

I just got my shiny new ATI 9700 Pro and contacted ATI about where I can get the info regarding new extensions that the 9700 exposes in OpenGL. (I don’t care about drivers right now. Just the docs would be fine.)

Well, they won’t be ready until maybe the end of this month.

It’s curious ain’t it. Could it be due to the fact that DX9 is delayed and by exposing new OGL extension now would be giving early insight to those not in the DX9 beta?

Does Microsoft control OpenGL too (all be it indirectly)? Just curious.

Originally posted by IT:
[b]I just got my shiny new ATI 9700 Pro and contacted ATI about where I can get the info regarding new extensions that the 9700 exposes in OpenGL. (I don’t care about drivers right now. Just the docs would be fine.)

Well, they won’t be ready until maybe the end of this month.

It’s curious ain’t it. Could it be due to the fact that DX9 is delayed and by exposing new OGL extension now would be giving early insight to those not in the DX9 beta?

Does Microsoft control OpenGL too (all be it indirectly)? Just curious.[/b]

I don’t think it has anything to do with DX9 (I could be wrong though).

You could try emailing devrel@ati.com and ask for the ATI_fragment_program spec… As of right now, the extension string isn’t even exposed.

They basically said the OpenGL specs haven’t been release yet for the 9700. So I’m sure this comment includes ATI_fragment_program… I could be wrong though. :slight_smile:

Well, you could take wordpad to the OpenGL driver and see if you can find any function entry points that you think might be part of ATI_fragment_program. That’ll atleast tell you if they’ve been working on it, or if they are still using it for internal testing only. Doesn’t do you much good if you don’t have the specs because you don’t know what the functions are looking for, or what they return. The latest Catalyst (2.2) contains the hooks for the ARB_vertex_program extension, although the extension isn’t listed in GL_EXTENSIONS. But you can still call wglGetProcAddress(_SOME_ARB_VERTEX_PROGRAM_FUNCTION_STRING_HERE) and it will work, but haven’t really tried it out yet.

Edit->
Oh, and I have an 8500, not a 9k series
<-Edit

Dan

[This message has been edited by Dan82181 (edited 09-04-2002).]

I’ve tried that too and got all the entry points, however, it doesn’t seam to work. I haven’t tried any deep test, I just HexEdited NitroGL’s ARB_vertex_program demo to see if it would run if I let it skip past the extension check. It ran, but didn’t produce any output except for the framerate counter. So I guess it just isn’t implemented yet.

Expect more extensions to be made available soon. Fragment program, the one people are probably are most interested in, has been in the driver for some time. It has just not been exported as the ARB working group on the subject is submitting it for a vote on approval this month. It was not exposed to prevent creating two slightly incompatible extensions and add to the tower of Babel problem many developers complain about in OpenGL. We have been working in good faith with the other vendors to get this done on this and other extensions. The reason no entrypoints show up in the driveris that it uses the program framework created by ARB_vertex_program.

Another reason that some of the capabilities are not yet exposed is that ATI does understand that it has a reputation for drivers, and we intend to change that. New functionality that has not received ample testing in the GL driver is not yet exposed.

Finally, I will see what I can do about getting specs out before a driver is available, but I don’t think it will be possible due to the confusion it would create. Also, feel free to mail me or the devrel alias if there are certain features you would like to see demos on in the SDK.

-Evan

eHart,

Can you say whether ARB_fragment_program is compatible with “older” hardware like the 8500 and GeForce3 ? And how are scales and bias’ handled ? I hope it isn’t like D3D’s _bx style modifiers .

Originally posted by ehart:

Fragment program, the one people are probably are most interested in, has been in the driver for some time. It has just not been exported as the ARB working group on the subject is submitting it for a vote on approval this month. It was not exposed to prevent creating two slightly incompatible extensions and add to the tower of Babel problem many developers complain about in OpenGL. We have been working in good faith with the other vendors to get this done on this and other extensions.

It is good to hear that.

Yes, thanks ehart!

I had assumed that the 9700 would still support the older ATI_fragment_shader extension. Granted, it would allow for more textures, operations, and probably more passes, but it should still support that API (which, to be honest, is still very functional).

Now of course I am speculating quite a bit here but looking at how the ARB_vertex_program extension is supported by the Radeon 8500 and GeForce 3 level of hardware, I’m betting ARB_fragment_program will be supported by the same level of hardware too, at least for the first version, just like ARB_vertex_program. I could be way off but that is my guess anyway.

-SirKnight

Before this speculation gets out of hand…

No, fragment program will not support previous generation parts. There is just so little commonality there that it is really hard to create a meaningful extension.

-Evan

This isn’t talk of an ARB_fragment_program, is it?

Knack,
Yes. The reason I asked was because of what was in the June ARB meeting notes. I was just wondering what they had decided. I’m looking forward to seeing the spec and I/we promise not to get confused .

Originally posted by ehart:
[b]

No, fragment program will not support previous generation parts. There is just so little commonality there that it is really hard to create a meaningful extension.

-Evan[/b]

Good. A clean start. BTW, this 9700 smokes (not on fire, I mean fast). Good job ATI!

I obviously can’t post the ARB spec before it is approved. This spec has additional issues since there could be a minor change or 2 between now and approval.

I can say that it looks very much like ARB_vertex_program.

-Evan

Of course. You were talking about the possibility of getting ATI specific extensions out before drivers ? Well, I’m in no hurry regarding the specs but I would definitely like to know more about the 9700.
We don’t have a lot of details regarding its capabilities. For example, we don’t know how flexible floating point buffers/textures are ( the NV30 seems to have certain restrictions ). Anything unusual ( that you can talk about ) ?

Since ATI support the ARB_vertex_program extension, how does that work with VAO ? Do you have a new extension or is an updated VAO spec enough ?

Originally posted by ehart:
No, fragment program will not support previous generation parts. There is just so little commonality there that it is really hard to create a meaningful extension.

No one needs any commonality for previous generation.
Really, you don’t even have to invent anything new for previous generation.
Just make use of “OPTION ps_1_4” and adopt DX8 PS syntax.
This could coexist with language for new generation you are working on.
I can’t understand what makes it impossible.

Funny you should ask about the VAO and vertex program, we caught that just a couple weeks ago. The plumbing was all there, just not an entrypoint to make it work since the old ones were just slightly incompatible. It is scheduled be available when the SDK is rolled out shortly.

So, I’ll give you guys the breakdown on the 9700 capabilities to expect with the SDK. Floating point textures and render targets are supported. Floating point textures are limited to nearest filtering other than that they are regular textures. (1D, 2D, 3D, cubemap, etc) When rendering to floating point buffers you cannot perform color operations after color sum in the OpenGL pipeline.

If there are other questions, I will try to answer them if I can.

-Evan

That’s good news, thanks. Does ‘regular textures’ include EXT_texture_rectangle ? I mentioned the incompatability of VAO and vertex program in a previous thread ( my suggestion was something like glAttributeArrayObjectATI ). I guess you ATI guys don’t read all threads .

I have one more question:

Since the 9700 is a DX9 part, how are multiple outputs from a fragment program done ? Will this be with some form of pack/unpack instructions ? You probably can’t answer that right now if it’s part of the fragment program spec.