about extensions, again

So, I think it’s my last question about extensions.

On the registry, there is for example ARB_geometry_shader4. So, I suppose there had any ARB_geometry_shader{1,2,3} previously.

My question is, for such extensions with 1,2,3,4… suffix (like ARB/EXTgpu_shader{4,5}), do all graphic cards supporting the first version will support all the other versions ?
For example, do cards that supported the ARB_geometry_shader first version, all support now ARB_geometry_shader4 ? and will support ARB_geometry_shader5 if any will come ?

I understood well I should target a GL version. From my last topics, this became clear for me. I’m just a bit curious…

On the registry, there is for example ARB_geometry_shader4. So, I suppose there had any ARB_geometry_shader{1,2,3} previously.

The Registry is the official listing of all (non-experimental) extensions that have ever been produced. You will not find a geometry_shader3, 2, or 1 on that list.

There’s a reason for that.

The “4” in this case references D3D’s Shader Model 4, where GS’s first appeared. Just as ARB_gpu_shader_5 refers to SM5 (it’s basically a collection of miscellaneous shading language updates that are too small for their own extensions).

This is not universal. The transform feedback extensions have a more conventional versioning scheme. However, these extensions also explicitly state what they require: transform_feedback_2 says that it requires transform_feedback.

In general, you should just take extensions as they come. If you want to use an extension’s functionality, find out what hardware implements it (the OpenGL Viewer’s database is a good indication. So is the equivalent D3D functionality) and see if that is within your target requirements. If so, check the extension string for its presence and use it where appropriate.