<blockquote>
  <p>How is this possible?</p>
</blockquote>

<p>Because <a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_direct_state_access.txt" rel="nofollow noreferrer">ARB_direct_state_access</a> 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. <a href="https://www.khronos.org/opengl/wiki/Core_Extension" rel="nofollow noreferrer">Suffix-less extensions</a> were introduced in OpenGL 3.0 for compatibility purposes. You could write code that could work on OpenGL 3.0 <em>or</em> extensions that expose 3.0 functionality, without having to write different function calls.</p>

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

CC BY-SA 4.0
2018-05-08T18:14:47.810Z
"You could write code that could work on OpenGL 3.0 or extensions" so why are suffixes ever added to extensions?
Startec
CC BY-SA 4.0
2018-05-08T18:27:31.067Z
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.
Nicol Bolas
CC BY-SA 4.0
2018-05-08T16:46:47.147Z
2018-05-08T16:46:47.147Z
Nicol Bolas
<p>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. </p>

<p>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.</p>

CC BY-SA 4.0
2018-05-08T05:34:35.757Z
2018-05-08T05:34:35.757Z
russ
<p>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.</p>

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

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

<p>How is this possible?</p>

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

<opengl>
How can DSA functions be used without extension names on lower versions of OpenGL?
Startec
# How can DSA functions be used without extension names on lower versions of OpenGL?

(Asked by: username_0 on 2018-05-08)

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.

**Tags:** opengl


---

## 2 answers

### Answer by username_1 on 2018-05-08. Score: 2 | Accepted answer

> How is this possible?

Because [ARB\_direct\_state\_access](https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_direct_state_access.txt) 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](https://www.khronos.org/opengl/wiki/Core_Extension) 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.

> **Comments:**
> **username_0**: "You could write code that could work on OpenGL 3.0 or extensions" so why are suffixes ever added to extensions?  
> **username_1**: 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.  

---

### Answer by username_2 on 2018-05-08. Score: 1

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.


---

