mesa: alloc/free shared sampler objects
This commit is contained in:
@@ -40,6 +40,9 @@
|
|||||||
#include "shared.h"
|
#include "shared.h"
|
||||||
#include "program/program.h"
|
#include "program/program.h"
|
||||||
#include "dlist.h"
|
#include "dlist.h"
|
||||||
|
#if FEATURE_ARB_sampler_objects
|
||||||
|
#include "samplerobj.h"
|
||||||
|
#endif
|
||||||
#include "shaderobj.h"
|
#include "shaderobj.h"
|
||||||
#include "syncobj.h"
|
#include "syncobj.h"
|
||||||
|
|
||||||
@@ -91,6 +94,11 @@ _mesa_alloc_shared_state(struct gl_context *ctx)
|
|||||||
shared->BufferObjects = _mesa_NewHashTable();
|
shared->BufferObjects = _mesa_NewHashTable();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if FEATURE_ARB_sampler_objects
|
||||||
|
/* GL_ARB_sampler_objects */
|
||||||
|
shared->SamplerObjects = _mesa_NewHashTable();
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Allocate the default buffer object */
|
/* Allocate the default buffer object */
|
||||||
shared->NullBufferObj = ctx->Driver.NewBufferObject(ctx, 0, 0);
|
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.
|
* 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
|
* Free texture objects (after FBOs since some textures might have
|
||||||
* been bound to FBOs).
|
* been bound to FBOs).
|
||||||
|
Reference in New Issue
Block a user