diff options
author | Brian Paul <[email protected]> | 2011-04-10 12:47:00 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2011-04-10 13:12:49 -0600 |
commit | 6bb4d807f7e80eaf899fd5c34c2c9ff0474eb80e (patch) | |
tree | b2053efeedfcecbd61de506a84705dccdbb516c0 /src/mesa/main | |
parent | 0308beebc2ac27a51ea5ec7d6d0d748f8e9f8b4d (diff) |
mesa: alloc/free shared sampler objects
Diffstat (limited to 'src/mesa/main')
-rw-r--r-- | src/mesa/main/shared.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/mesa/main/shared.c b/src/mesa/main/shared.c index 6604ed07d53..e470d873f70 100644 --- a/src/mesa/main/shared.c +++ b/src/mesa/main/shared.c @@ -40,6 +40,9 @@ #include "shared.h" #include "program/program.h" #include "dlist.h" +#if FEATURE_ARB_sampler_objects +#include "samplerobj.h" +#endif #include "shaderobj.h" #include "syncobj.h" @@ -91,6 +94,11 @@ _mesa_alloc_shared_state(struct gl_context *ctx) shared->BufferObjects = _mesa_NewHashTable(); #endif +#if FEATURE_ARB_sampler_objects + /* GL_ARB_sampler_objects */ + shared->SamplerObjects = _mesa_NewHashTable(); +#endif + /* Allocate the default buffer object */ shared->NullBufferObj = ctx->Driver.NewBufferObject(ctx, 0, 0); @@ -270,6 +278,20 @@ delete_renderbuffer_cb(GLuint id, void *data, void *userData) } +#if FEATURE_ARB_sampler_objects +/** + * Callback for deleting a sampler object. Called by _mesa_HashDeleteAll() + */ +static void +delete_sampler_object_cb(GLuint id, void *data, void *userData) +{ + struct gl_context *ctx = (struct gl_context *) userData; + struct gl_sampler_object *sampObj = (struct gl_sampler_object *) data; + _mesa_reference_sampler_object(ctx, &sampObj, NULL); +} +#endif + + /** * Deallocate a shared state object and all children structures. * @@ -345,6 +367,11 @@ free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared) } } +#if FEATURE_ARB_sampler_objects + _mesa_HashDeleteAll(shared->SamplerObjects, delete_sampler_object_cb, ctx); + _mesa_DeleteHashTable(shared->SamplerObjects); +#endif + /* * Free texture objects (after FBOs since some textures might have * been bound to FBOs). |