30 likes | 164 Views
Orphan Object (Bill). Current texture object behavior: Bind ID in context 1 Bind same ID in context 2 and start rendering against it Delete object in context 1. Object un-bound from all texture stages ONLY in context 1. Object is deleted once no longer bound in any context.
E N D
Orphan Object (Bill) Current texture object behavior: • Bind ID in context 1 • Bind same ID in context 2 and start rendering against it • Delete object in context 1. • Object un-bound from all texture stages ONLY in context 1. • Object is deleted once no longer bound in any context. • After deletion name will be marked as available. • In single context case, delete will un-bind, refcount goes to zero, therefore is deleted.
Orphan Object (Pat) Current texture object behavior: • Bind ID in context 1 • Bind same ID in context 2 and start rendering against it • Delete object in context 1. • Object un-bound from all texture stages ONLY in context 1. • Object ID no longer exists. Therefore same ID is available to create a new object. • Old object is deleted once no longer bound in any context. (But cannot be referenced by ID anymore) • In single context case, delete will un-bind, refcount goes to zero, therefore is deleted.
GLX 1.3 spec • The results of changing a texture object while another context is using it are undefined. • All modifications to shared context state as a result of executing glBindTexture are atomic. Also, a texture object will not be deleted until it is no longer bound to any rendering context. • In general, OpenGL commands are not guaranteed to be atomic. The operation of glEndList and glDeleteLists are exceptions: modifications to the shared context state as a result of executing glEndList or glDeleteLists are atomic.