Promoting OpenGL Extensions

Promoting an extension refers to moving it from single-vendor to multi-vendor or ARB-approved status, usually by changing the vendor tag attached to the extension name string, enumerants and API entry points. This is sometimes done when an extension is successful and more licensees want to support it. This document describes the steps to follow when promoting an extension.

Is Promotion Required?

Changing the names creates a significant burden for ISVs supporting the existing extension. It should not be done gratuitously; if the existing interface is sufficient, there's no inherent reason an implementation shipped by one vendor cannot advertise and support an extension using another vendor's prefix.

If you do this, make certain that the original vendor agrees to freeze the definition of the extension, and that what you ship is identical in behavior to what the original vendor is shipping. Shipping what appears to be the "same" extension while implementing different behavior on multiple platforms is a great disservice to ISVs trying to use extensions, and to OpenGL in general.

Do not, under any circumstances, ship an extension defined by another vendor without first clearing it with that vendor.

Promoting Without Changes in Behavior

If you nevertheless want to promote an extension from vendor-specific to e.g. EXT status, without changing the behavior or definition of that extension, then advertise and export both the old and the new forms of the extension for maximum backwards compatibility. This means that:

Promoting With Changes in Behavior

If you are promoting an extension while changing its definition or behavior, do not treat it as identical to the old extension. This means that:

None of this should be taken to indicate that code cannot be shared between implementations of the old and new extensions; simply that the implementation must be able to distinguish whether the old or new form is being called, since they are de facto different extensions despite sharing similar purposes.


Last modified April 5, 1999 Jon Leech