0
$\begingroup$

My GPU supports OpenGL 4.4 but looking at the OpenGL extensions viewer the only part of 4.5 that it does not support is the GLSL version.

I am able to use all DSA functions without specifying any sort of Extension Prefix.

Similarly, I have been able to run code that uses DSA on GPUs that only support OpenGL 4.2

How is this possible?

I thought that, if my GPU does not support a version of OpenGL I have to use extension prefixes to use those features.

$\endgroup$
2
$\begingroup$

How is this possible?

Because ARB_direct_state_access is an extension. Note that the function/enumerator names in that extension lack the ARB suffix. There are dozens of ARB extensions that work like that. Suffix-less extensions were introduced in OpenGL 3.0 for compatibility purposes. You could write code that could work on OpenGL 3.0 or extensions that expose 3.0 functionality, without having to write different function calls.

The same goes here. You're not using OpenGL 4.5; you're using OpenGL 4.4+some extensions.

$\endgroup$
  • $\begingroup$ "You could write code that could work on OpenGL 3.0 or extensions" so why are suffixes ever added to extensions? $\endgroup$ – Startec May 8 '18 at 18:14
  • 1
    $\begingroup$ 1) Not all extensions represent core OpenGL functionality of any OpenGL version. However nice ARB_bindless_texture may be, it's not part of any core OpenGL version. 2) Not all extensions were/are released contemporaneously with the core equivalent. $\endgroup$ – Nicol Bolas May 8 '18 at 18:27
1
$\begingroup$

Your GPU does support OpenGL 4.5, basically. Mine shows exactly the same result, all features supported except the GLSL version. This seems to be fairly common, I'm not sure what the delay is in updating the shader language support, or what GLSL 4.5 brings to the table.

In order to say a GPU fully supports a GL version, it has to support all the features specified by the ARB for that version number, which is why your driver and mine show up as only supporting 4.4 despite having the full 4.5 feature set on the CPU side. In practice, vendors can add part of a feature level to their driver without fully supporting the version number. It's all pretty messy, which is why we need things like GL3W or GLAD in the first place.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.