[Bf-committers] EGL_CONTEXT_LOST and GL_ARB_create_context_robustness

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Jul 31 15:33:01 CEST 2013


On Wed, Jul 31, 2013 at 10:09 AM, Antony Riakiotakis <kalast at gmail.com> wrote:
> I think a good example of that is GPU_free_images that takes care of
> centrally deallocating all resources and zeroing their identifiers. The
> design here is that the data structure (image) is the owner (holds the ID
> resource) of the GPU data so it is easy to invalidate the GPU data for all
> owners. For shared resources this would not work if the identifier was
> shared, we need to share an owner that will hold the ID and that owner can
> be centrally notified for deallocation/zeroing. That means keeping a list
> of owners of course.
> I think GPU buffers also have an encapsulating inteface though, possibly
> shaders too?

There are GPUTexture, GPUShader, GPUDrawObject, .. wrappers. There's a
few places that hold OpenGL ids directly but these could be changed.

I guess in general the issue is more having a way to clear all of them
which the current wrappers don't help with. You could have these
wrappers store a pointer to a pointer so that they can be
automatically set to NULL in the owner (like a weak reference). And
then put them in some global array so that you can loop over all of
them.

I'm not sure if that makes the code more clear, I don't really have a
strong opinion here, having a function that loops over all of them
isn't so terrible either.

> Note, GPU_free_images also deletes the resources besides zeroing the IDs,
> I'm not sure if on context loss this is already done, so possibly a version
> that only zeroes the IDs may need to be written.

I imagine this might give an OpenGL error but not actually cause any
problems, not sure. But might as well check for it and only delete
when needed.

Brecht.


More information about the Bf-committers mailing list