KhronosGroup / OpenGL-API

OpenGL and OpenGL ES API Issue Tracker
34 stars 5 forks source link

Are query objects container objects? #60

Closed NicolBolas closed 4 years ago

NicolBolas commented 4 years ago

Chapter 5 reads:

Objects which contain references to other objects include framebuffer, program pipeline, query, transform feedback, and vertex array objects. Such objects are called container objects and are not shared.

This is strange for several reasons:

  1. Query objects don't actually contain references to other objects.

  2. Section 2.6.12 does not say that Query objects are container objects. However, the sections in 2.6 that cover the other container objects explicitly declare that they are container objects.

However, section 2.6.12 does specifically state that query objects are not sharable. My guess is that the idea of not being sharable at some point got bound up in the concept of being a container object. That is, if query objects aren't sharable, then someone thought that they must be container objects.

If the intent is for query objects to actually be container objects, then 2.6.12 should explicitly mention this (and the definition of "container object" should be changed, since query objects don't actually store references to other objects). If the intent for query objects is that they are non-sharable objects which are not container objects, then Chapter 5 should be changed to state this explicitly.

pdaniell-nv commented 4 years ago

My guess is that the idea of not being sharable at some point got bound up in the concept of being a container object.

You're probably right this is why the spec has this error. Query objects are not container objects and are not shareable. I think the fix is to remove "query" from the list of container objects in chapter 5.

pdaniell-nv commented 4 years ago

Assigned to @oddhack to pick up the proposed fix above in the next round of API spec updates.

oddhack commented 4 years ago

Fixed in the 2019-10-22 spec updates.