Lines Matching refs:shared

26  * \file shared.c
38 #include "shared.h"
49 * Allocate and initialize a shared context state structure.
60 struct gl_shared_state *shared;
63 shared = CALLOC_STRUCT(gl_shared_state);
64 if (!shared)
67 _glthread_INIT_MUTEX(shared->Mutex);
69 shared->DisplayList = _mesa_NewHashTable();
70 shared->TexObjects = _mesa_NewHashTable();
71 shared->Programs = _mesa_NewHashTable();
74 shared->DefaultVertexProgram =
80 shared->DefaultFragmentProgram =
86 shared->ATIShaders = _mesa_NewHashTable();
87 shared->DefaultFragmentShader = _mesa_new_ati_fragment_shader(ctx, 0);
91 shared->ShaderObjects = _mesa_NewHashTable();
94 shared->BufferObjects = _mesa_NewHashTable();
98 shared->SamplerObjects = _mesa_NewHashTable();
102 shared->NullBufferObj = ctx->Driver.NewBufferObject(ctx, 0, 0);
119 shared->DefaultTex[i] = ctx->Driver.NewTextureObject(ctx, 0, targets[i]);
123 assert(shared->DefaultTex[TEXTURE_1D_INDEX]->RefCount == 1);
126 _glthread_INIT_MUTEX(shared->TexMutex);
127 shared->TextureStateStamp = 0;
130 shared->FrameBuffers = _mesa_NewHashTable();
131 shared->RenderBuffers = _mesa_NewHashTable();
134 make_empty_list(& shared->SyncObjects);
136 return shared;
297 * Deallocate a shared state object and all children structures.
300 * \param shared shared state pointer.
309 free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared)
315 if (shared->FallbackTex[i])
316 ctx->Driver.DeleteTexture(ctx, shared->FallbackTex[i]);
322 _mesa_HashDeleteAll(shared->DisplayList, delete_displaylist_cb, ctx);
323 _mesa_DeleteHashTable(shared->DisplayList);
326 _mesa_HashWalk(shared->ShaderObjects, free_shader_program_data_cb, ctx);
327 _mesa_HashDeleteAll(shared->ShaderObjects, delete_shader_cb, ctx);
328 _mesa_DeleteHashTable(shared->ShaderObjects);
331 _mesa_HashDeleteAll(shared->Programs, delete_program_cb, ctx);
332 _mesa_DeleteHashTable(shared->Programs);
335 _mesa_reference_vertprog(ctx, &shared->DefaultVertexProgram, NULL);
339 _mesa_reference_fragprog(ctx, &shared->DefaultFragmentProgram, NULL);
343 _mesa_HashDeleteAll(shared->ATIShaders, delete_fragshader_cb, ctx);
344 _mesa_DeleteHashTable(shared->ATIShaders);
345 _mesa_delete_ati_fragment_shader(ctx, shared->DefaultFragmentShader);
348 _mesa_HashDeleteAll(shared->BufferObjects, delete_bufferobj_cb, ctx);
349 _mesa_DeleteHashTable(shared->BufferObjects);
352 _mesa_HashDeleteAll(shared->FrameBuffers, delete_framebuffer_cb, ctx);
353 _mesa_DeleteHashTable(shared->FrameBuffers);
354 _mesa_HashDeleteAll(shared->RenderBuffers, delete_renderbuffer_cb, ctx);
355 _mesa_DeleteHashTable(shared->RenderBuffers);
358 _mesa_reference_buffer_object(ctx, &shared->NullBufferObj, NULL);
364 foreach_s(node, temp, & shared->SyncObjects) {
370 _mesa_HashDeleteAll(shared->SamplerObjects, delete_sampler_object_cb, ctx);
371 _mesa_DeleteHashTable(shared->SamplerObjects);
381 ctx->Driver.DeleteTexture(ctx, shared->DefaultTex[i]);
385 _mesa_HashDeleteAll(shared->TexObjects, delete_texture_cb, ctx);
386 _mesa_DeleteHashTable(shared->TexObjects);
388 _glthread_DESTROY_MUTEX(shared->Mutex);
389 _glthread_DESTROY_MUTEX(shared->TexMutex);
391 free(shared);
397 * If ptr's refcount goes to zero, free the shared state.