Lines Matching defs:shared
26 * \file shared.c
35 #include "shared.h"
49 free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared);
52 * Allocate and initialize a shared context state structure.
63 struct gl_shared_state *shared;
66 shared = CALLOC_STRUCT(gl_shared_state);
67 if (!shared)
70 simple_mtx_init(&shared->Mutex, mtx_plain);
72 shared->DisplayList = _mesa_NewHashTable();
73 shared->BitmapAtlas = _mesa_NewHashTable();
74 shared->TexObjects = _mesa_NewHashTable();
75 shared->Programs = _mesa_NewHashTable();
77 shared->DefaultVertexProgram =
79 shared->DefaultFragmentProgram =
82 shared->ATIShaders = _mesa_NewHashTable();
83 shared->DefaultFragmentShader = _mesa_new_ati_fragment_shader(ctx, 0);
85 shared->ShaderObjects = _mesa_NewHashTable();
87 shared->BufferObjects = _mesa_NewHashTable();
88 shared->ZombieBufferObjects = _mesa_set_create(NULL, _mesa_hash_pointer,
92 shared->SamplerObjects = _mesa_NewHashTable();
95 _mesa_init_shared_handles(shared);
98 _mesa_init_shader_includes(shared);
99 simple_mtx_init(&shared->ShaderIncludeMutex, mtx_plain);
119 shared->DefaultTex[i] = ctx->Driver.NewTextureObject(ctx, 0, targets[i]);
124 shared->DefaultTex[i]->TargetIndex = i;
128 assert(shared->DefaultTex[TEXTURE_1D_INDEX]->RefCount == 1);
131 mtx_init(&shared->TexMutex, mtx_recursive);
132 shared->TextureStateStamp = 0;
134 shared->FrameBuffers = _mesa_NewHashTable();
135 shared->RenderBuffers = _mesa_NewHashTable();
137 shared->SyncObjects = _mesa_set_create(NULL, _mesa_hash_pointer,
140 shared->MemoryObjects = _mesa_NewHashTable();
141 shared->SemaphoreObjects = _mesa_NewHashTable();
143 return shared;
331 * Deallocate a shared state object and all children structures.
334 * \param shared shared state pointer.
343 free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared)
349 if (shared->FallbackTex[i])
350 ctx->Driver.DeleteTexture(ctx, shared->FallbackTex[i]);
356 if (shared->DisplayList) {
357 _mesa_HashDeleteAll(shared->DisplayList, delete_displaylist_cb, ctx);
358 _mesa_DeleteHashTable(shared->DisplayList);
359 free(shared->small_dlist_store.ptr);
360 util_idalloc_fini(&shared->small_dlist_store.free_idx);
363 if (shared->BitmapAtlas) {
364 _mesa_HashDeleteAll(shared->BitmapAtlas, delete_bitmap_atlas_cb, ctx);
365 _mesa_DeleteHashTable(shared->BitmapAtlas);
368 if (shared->ShaderObjects) {
369 _mesa_HashWalk(shared->ShaderObjects, free_shader_program_data_cb, ctx);
370 _mesa_HashDeleteAll(shared->ShaderObjects, delete_shader_cb, ctx);
371 _mesa_DeleteHashTable(shared->ShaderObjects);
374 if (shared->Programs) {
375 _mesa_HashDeleteAll(shared->Programs, delete_program_cb, ctx);
376 _mesa_DeleteHashTable(shared->Programs);
379 if (shared->DefaultVertexProgram)
380 _mesa_reference_program(ctx, &shared->DefaultVertexProgram, NULL);
382 if (shared->DefaultFragmentProgram)
383 _mesa_reference_program(ctx, &shared->DefaultFragmentProgram, NULL);
385 if (shared->DefaultFragmentShader)
386 _mesa_delete_ati_fragment_shader(ctx, shared->DefaultFragmentShader);
388 if (shared->ATIShaders) {
389 _mesa_HashDeleteAll(shared->ATIShaders, delete_fragshader_cb, ctx);
390 _mesa_DeleteHashTable(shared->ATIShaders);
393 if (shared->BufferObjects) {
394 _mesa_HashDeleteAll(shared->BufferObjects, delete_bufferobj_cb, ctx);
395 _mesa_DeleteHashTable(shared->BufferObjects);
398 if (shared->ZombieBufferObjects) {
399 set_foreach(shared->ZombieBufferObjects, entry) {
402 _mesa_set_destroy(shared->ZombieBufferObjects, NULL);
405 if (shared->FrameBuffers) {
406 _mesa_HashDeleteAll(shared->FrameBuffers, delete_framebuffer_cb, ctx);
407 _mesa_DeleteHashTable(shared->FrameBuffers);
410 if (shared->RenderBuffers) {
411 _mesa_HashDeleteAll(shared->RenderBuffers, delete_renderbuffer_cb, ctx);
412 _mesa_DeleteHashTable(shared->RenderBuffers);
415 if (shared->SyncObjects) {
416 set_foreach(shared->SyncObjects, entry) {
420 _mesa_set_destroy(shared->SyncObjects, NULL);
423 if (shared->SamplerObjects) {
424 _mesa_HashDeleteAll(shared->SamplerObjects, delete_sampler_object_cb,
426 _mesa_DeleteHashTable(shared->SamplerObjects);
436 if (shared->DefaultTex[i])
437 ctx->Driver.DeleteTexture(ctx, shared->DefaultTex[i]);
441 if (shared->TexObjects) {
442 _mesa_HashDeleteAll(shared->TexObjects, delete_texture_cb, ctx);
443 _mesa_DeleteHashTable(shared->TexObjects);
446 _mesa_free_shared_handles(shared);
449 _mesa_destroy_shader_includes(shared);
450 simple_mtx_destroy(&shared->ShaderIncludeMutex);
452 if (shared->MemoryObjects) {
453 _mesa_HashDeleteAll(shared->MemoryObjects, delete_memory_object_cb, ctx);
454 _mesa_DeleteHashTable(shared->MemoryObjects);
457 if (shared->SemaphoreObjects) {
458 _mesa_HashDeleteAll(shared->SemaphoreObjects, delete_semaphore_object_cb, ctx);
459 _mesa_DeleteHashTable(shared->SemaphoreObjects);
462 simple_mtx_destroy(&shared->Mutex);
463 mtx_destroy(&shared->TexMutex);
465 free(shared);
471 * If ptr's refcount goes to zero, free the shared state.