Home | History | Annotate | Download | only in main

Lines Matching refs:shared

26  * \file shared.c
27 * Shared-context state
35 #include "shared.h"
47 * Allocate and initialize a shared context state structure.
58 struct gl_shared_state *shared;
61 shared = CALLOC_STRUCT(gl_shared_state);
62 if (!shared)
65 mtx_init(&shared->Mutex, mtx_plain);
67 shared->DisplayList = _mesa_NewHashTable();
68 shared->BitmapAtlas = _mesa_NewHashTable();
69 shared->TexObjects = _mesa_NewHashTable();
70 shared->Programs = _mesa_NewHashTable();
72 shared->DefaultVertexProgram =
74 shared->DefaultFragmentProgram =
77 shared->ATIShaders = _mesa_NewHashTable();
78 shared->DefaultFragmentShader = _mesa_new_ati_fragment_shader(ctx, 0);
80 shared->ShaderObjects = _mesa_NewHashTable();
82 shared->BufferObjects = _mesa_NewHashTable();
85 shared->SamplerObjects = _mesa_NewHashTable();
88 shared->NullBufferObj = ctx->Driver.NewBufferObject(ctx, 0);
108 shared->DefaultTex[i] = ctx->Driver.NewTextureObject(ctx, 0, targets[i]);
113 shared->DefaultTex[i]->TargetIndex = i;
117 assert(shared->DefaultTex[TEXTURE_1D_INDEX]->RefCount == 1);
120 mtx_init(&shared->TexMutex, mtx_recursive);
121 shared->TextureStateStamp = 0;
123 shared->FrameBuffers = _mesa_NewHashTable();
124 shared->RenderBuffers = _mesa_NewHashTable();
126 shared->SyncObjects = _mesa_set_create(NULL, _mesa_hash_pointer,
129 return shared;
296 * Deallocate a shared state object and all children structures.
299 * \param shared shared state pointer.
308 free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared)
314 if (shared->FallbackTex[i])
315 ctx->Driver.DeleteTexture(ctx, shared->FallbackTex[i]);
321 _mesa_HashDeleteAll(shared->DisplayList, delete_displaylist_cb, ctx);
322 _mesa_DeleteHashTable(shared->DisplayList);
323 _mesa_HashDeleteAll(shared->BitmapAtlas, delete_bitmap_atlas_cb, ctx);
324 _mesa_DeleteHashTable(shared->BitmapAtlas);
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);
330 _mesa_HashDeleteAll(shared->Programs, delete_program_cb, ctx);
331 _mesa_DeleteHashTable(shared->Programs);
333 _mesa_reference_program(ctx, &shared->DefaultVertexProgram, NULL);
334 _mesa_reference_program(ctx, &shared->DefaultFragmentProgram, NULL);
336 _mesa_HashDeleteAll(shared->ATIShaders, delete_fragshader_cb, ctx);
337 _mesa_DeleteHashTable(shared->ATIShaders);
338 _mesa_delete_ati_fragment_shader(ctx, shared->DefaultFragmentShader);
340 _mesa_HashDeleteAll(shared->BufferObjects, delete_bufferobj_cb, ctx);
341 _mesa_DeleteHashTable(shared->BufferObjects);
343 _mesa_HashDeleteAll(shared->FrameBuffers, delete_framebuffer_cb, ctx);
344 _mesa_DeleteHashTable(shared->FrameBuffers);
345 _mesa_HashDeleteAll(shared->RenderBuffers, delete_renderbuffer_cb, ctx);
346 _mesa_DeleteHashTable(shared->RenderBuffers);
348 _mesa_reference_buffer_object(ctx, &shared->NullBufferObj, NULL);
353 set_foreach(shared->SyncObjects, entry) {
357 _mesa_set_destroy(shared->SyncObjects, NULL);
359 _mesa_HashDeleteAll(shared->SamplerObjects, delete_sampler_object_cb, ctx);
360 _mesa_DeleteHashTable(shared->SamplerObjects);
369 ctx->Driver.DeleteTexture(ctx, shared->DefaultTex[i]);
373 _mesa_HashDeleteAll(shared->TexObjects, delete_texture_cb, ctx);
374 _mesa_DeleteHashTable(shared->TexObjects);
376 mtx_destroy(&shared->Mutex);
377 mtx_destroy(&shared->TexMutex);
379 free(shared);
385 * If ptr's refcount goes to zero, free the shared state.