Lines Matching refs:shared
26 * \file shared.c
35 #include "shared.h"
51 free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared);
54 * Allocate and initialize a shared context state structure.
65 struct gl_shared_state *shared;
68 shared = CALLOC_STRUCT(gl_shared_state);
69 if (!shared)
72 simple_mtx_init(&shared->Mutex, mtx_plain);
74 shared->DisplayList = _mesa_NewHashTable();
75 shared->BitmapAtlas = _mesa_NewHashTable();
76 shared->TexObjects = _mesa_NewHashTable();
77 shared->Programs = _mesa_NewHashTable();
79 shared->DefaultVertexProgram =
81 shared->DefaultFragmentProgram =
84 shared->ATIShaders = _mesa_NewHashTable();
85 shared->DefaultFragmentShader = _mesa_new_ati_fragment_shader(ctx, 0);
87 shared->ShaderObjects = _mesa_NewHashTable();
89 shared->BufferObjects = _mesa_NewHashTable();
90 shared->ZombieBufferObjects = _mesa_set_create(NULL, _mesa_hash_pointer,
94 shared->SamplerObjects = _mesa_NewHashTable();
97 _mesa_init_shared_handles(shared);
100 _mesa_init_shader_includes(shared);
101 simple_mtx_init(&shared->ShaderIncludeMutex, mtx_plain);
121 shared->DefaultTex[i] = _mesa_new_texture_object(ctx, 0, targets[i]);
126 shared->DefaultTex[i]->TargetIndex = i;
130 assert(shared->DefaultTex[TEXTURE_1D_INDEX]->RefCount == 1);
133 simple_mtx_init(&shared->TexMutex, mtx_plain);
134 shared->TextureStateStamp = 0;
136 shared->FrameBuffers = _mesa_NewHashTable();
137 shared->RenderBuffers = _mesa_NewHashTable();
139 shared->SyncObjects = _mesa_set_create(NULL, _mesa_hash_pointer,
142 shared->MemoryObjects = _mesa_NewHashTable();
143 shared->SemaphoreObjects = _mesa_NewHashTable();
145 return shared;
333 * Deallocate a shared state object and all children structures.
336 * \param shared shared state pointer.
345 free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared)
351 if (shared->FallbackTex[i])
352 _mesa_delete_texture_object(ctx, shared->FallbackTex[i]);
358 if (shared->DisplayList) {
359 _mesa_HashDeleteAll(shared->DisplayList, delete_displaylist_cb, ctx);
360 _mesa_DeleteHashTable(shared->DisplayList);
361 free(shared->small_dlist_store.ptr);
362 util_idalloc_fini(&shared->small_dlist_store.free_idx);
365 if (shared->BitmapAtlas) {
366 _mesa_HashDeleteAll(shared->BitmapAtlas, delete_bitmap_atlas_cb, ctx);
367 _mesa_DeleteHashTable(shared->BitmapAtlas);
370 if (shared->ShaderObjects) {
371 _mesa_HashWalk(shared->ShaderObjects, free_shader_program_data_cb, ctx);
372 _mesa_HashDeleteAll(shared->ShaderObjects, delete_shader_cb, ctx);
373 _mesa_DeleteHashTable(shared->ShaderObjects);
376 if (shared->Programs) {
377 _mesa_HashDeleteAll(shared->Programs, delete_program_cb, ctx);
378 _mesa_DeleteHashTable(shared->Programs);
381 if (shared->DefaultVertexProgram)
382 _mesa_reference_program(ctx, &shared->DefaultVertexProgram, NULL);
384 if (shared->DefaultFragmentProgram)
385 _mesa_reference_program(ctx, &shared->DefaultFragmentProgram, NULL);
387 if (shared->DefaultFragmentShader)
388 _mesa_delete_ati_fragment_shader(ctx, shared->DefaultFragmentShader);
390 if (shared->ATIShaders) {
391 _mesa_HashDeleteAll(shared->ATIShaders, delete_fragshader_cb, ctx);
392 _mesa_DeleteHashTable(shared->ATIShaders);
395 if (shared->BufferObjects) {
396 _mesa_HashDeleteAll(shared->BufferObjects, delete_bufferobj_cb, ctx);
397 _mesa_DeleteHashTable(shared->BufferObjects);
400 if (shared->ZombieBufferObjects) {
401 set_foreach(shared->ZombieBufferObjects, entry) {
404 _mesa_set_destroy(shared->ZombieBufferObjects, NULL);
407 if (shared->FrameBuffers) {
408 _mesa_HashDeleteAll(shared->FrameBuffers, delete_framebuffer_cb, ctx);
409 _mesa_DeleteHashTable(shared->FrameBuffers);
412 if (shared->RenderBuffers) {
413 _mesa_HashDeleteAll(shared->RenderBuffers, delete_renderbuffer_cb, ctx);
414 _mesa_DeleteHashTable(shared->RenderBuffers);
417 if (shared->SyncObjects) {
418 set_foreach(shared->SyncObjects, entry) {
422 _mesa_set_destroy(shared->SyncObjects, NULL);
425 if (shared->SamplerObjects) {
426 _mesa_HashDeleteAll(shared->SamplerObjects, delete_sampler_object_cb,
428 _mesa_DeleteHashTable(shared->SamplerObjects);
437 if (shared->DefaultTex[i])
438 _mesa_delete_texture_object(ctx, shared->DefaultTex[i]);
442 if (shared->TexObjects) {
443 _mesa_HashDeleteAll(shared->TexObjects, delete_texture_cb, ctx);
444 _mesa_DeleteHashTable(shared->TexObjects);
447 _mesa_free_shared_handles(shared);
450 _mesa_destroy_shader_includes(shared);
451 simple_mtx_destroy(&shared->ShaderIncludeMutex);
453 if (shared->MemoryObjects) {
454 _mesa_HashDeleteAll(shared->MemoryObjects, delete_memory_object_cb, ctx);
455 _mesa_DeleteHashTable(shared->MemoryObjects);
458 if (shared->SemaphoreObjects) {
459 _mesa_HashDeleteAll(shared->SemaphoreObjects, delete_semaphore_object_cb, ctx);
460 _mesa_DeleteHashTable(shared->SemaphoreObjects);
463 simple_mtx_destroy(&shared->Mutex);
464 simple_mtx_destroy(&shared->TexMutex);
466 FREE(shared);
472 * If ptr's refcount goes to zero, free the shared state.