projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mesa: support for GL_ARB_instanced_arrays
[mesa.git]
/
src
/
mesa
/
main
/
shared.c
diff --git
a/src/mesa/main/shared.c
b/src/mesa/main/shared.c
index e364e24048ff97a83c53fd07f3f9e1a82d7a4fc0..ce9fc4de327474b61e8f5f0b8d5e41b02532670f 100644
(file)
--- a/
src/mesa/main/shared.c
+++ b/
src/mesa/main/shared.c
@@
-30,20
+30,18
@@
#include "imports.h"
#include "imports.h"
+#include "mfeatures.h"
#include "mtypes.h"
#include "hash.h"
#include "mtypes.h"
#include "hash.h"
-#include "arrayobj.h"
+#if FEATURE_ATI_fragment_shader
+#include "atifragshader.h"
+#endif
#include "bufferobj.h"
#include "shared.h"
#include "bufferobj.h"
#include "shared.h"
-#include "shader/program.h"
-#include "shader/shader_api.h"
+#include "program/program.h"
#include "dlist.h"
#include "dlist.h"
-#if FEATURE_ATI_fragment_shader
-#include "shader/atifragshader.h"
-#endif
-#if FEATURE_ARB_sync
+#include "shaderobj.h"
#include "syncobj.h"
#include "syncobj.h"
-#endif
/**
* Allocate and initialize a shared context state structure.
/**
* Allocate and initialize a shared context state structure.
@@
-55,7
+53,7
@@
* failure.
*/
struct gl_shared_state *
* failure.
*/
struct gl_shared_state *
-_mesa_alloc_shared_state(
GL
context *ctx)
+_mesa_alloc_shared_state(
struct gl_
context *ctx)
{
struct gl_shared_state *shared;
GLuint i;
{
struct gl_shared_state *shared;
GLuint i;
@@
-123,9
+121,7
@@
_mesa_alloc_shared_state(GLcontext *ctx)
shared->RenderBuffers = _mesa_NewHashTable();
#endif
shared->RenderBuffers = _mesa_NewHashTable();
#endif
-#if FEATURE_ARB_sync
make_empty_list(& shared->SyncObjects);
make_empty_list(& shared->SyncObjects);
-#endif
return shared;
}
return shared;
}
@@
-138,7
+134,7
@@
static void
delete_displaylist_cb(GLuint id, void *data, void *userData)
{
struct gl_display_list *list = (struct gl_display_list *) data;
delete_displaylist_cb(GLuint id, void *data, void *userData)
{
struct gl_display_list *list = (struct gl_display_list *) data;
-
GLcontext *ctx = (GL
context *) userData;
+
struct gl_context *ctx = (struct gl_
context *) userData;
_mesa_delete_list(ctx, list);
}
_mesa_delete_list(ctx, list);
}
@@
-150,7
+146,7
@@
static void
delete_texture_cb(GLuint id, void *data, void *userData)
{
struct gl_texture_object *texObj = (struct gl_texture_object *) data;
delete_texture_cb(GLuint id, void *data, void *userData)
{
struct gl_texture_object *texObj = (struct gl_texture_object *) data;
-
GLcontext *ctx = (GL
context *) userData;
+
struct gl_context *ctx = (struct gl_
context *) userData;
ctx->Driver.DeleteTexture(ctx, texObj);
}
ctx->Driver.DeleteTexture(ctx, texObj);
}
@@
-162,7
+158,7
@@
static void
delete_program_cb(GLuint id, void *data, void *userData)
{
struct gl_program *prog = (struct gl_program *) data;
delete_program_cb(GLuint id, void *data, void *userData)
{
struct gl_program *prog = (struct gl_program *) data;
-
GLcontext *ctx = (GL
context *) userData;
+
struct gl_context *ctx = (struct gl_
context *) userData;
if(prog != &_mesa_DummyProgram) {
ASSERT(prog->RefCount == 1); /* should only be referenced by hash table */
prog->RefCount = 0; /* now going away */
if(prog != &_mesa_DummyProgram) {
ASSERT(prog->RefCount == 1); /* should only be referenced by hash table */
prog->RefCount = 0; /* now going away */
@@
-180,7
+176,7
@@
static void
delete_fragshader_cb(GLuint id, void *data, void *userData)
{
struct ati_fragment_shader *shader = (struct ati_fragment_shader *) data;
delete_fragshader_cb(GLuint id, void *data, void *userData)
{
struct ati_fragment_shader *shader = (struct ati_fragment_shader *) data;
-
GLcontext *ctx = (GL
context *) userData;
+
struct gl_context *ctx = (struct gl_
context *) userData;
_mesa_delete_ati_fragment_shader(ctx, shader);
}
#endif
_mesa_delete_ati_fragment_shader(ctx, shader);
}
#endif
@@
-193,7
+189,7
@@
static void
delete_bufferobj_cb(GLuint id, void *data, void *userData)
{
struct gl_buffer_object *bufObj = (struct gl_buffer_object *) data;
delete_bufferobj_cb(GLuint id, void *data, void *userData)
{
struct gl_buffer_object *bufObj = (struct gl_buffer_object *) data;
-
GLcontext *ctx = (GL
context *) userData;
+
struct gl_context *ctx = (struct gl_
context *) userData;
if (_mesa_bufferobj_mapped(bufObj)) {
ctx->Driver.UnmapBuffer(ctx, 0, bufObj);
bufObj->Pointer = NULL;
if (_mesa_bufferobj_mapped(bufObj)) {
ctx->Driver.UnmapBuffer(ctx, 0, bufObj);
bufObj->Pointer = NULL;
@@
-209,7
+205,7
@@
delete_bufferobj_cb(GLuint id, void *data, void *userData)
static void
free_shader_program_data_cb(GLuint id, void *data, void *userData)
{
static void
free_shader_program_data_cb(GLuint id, void *data, void *userData)
{
-
GLcontext *ctx = (GL
context *) userData;
+
struct gl_context *ctx = (struct gl_
context *) userData;
struct gl_shader_program *shProg = (struct gl_shader_program *) data;
if (shProg->Type == GL_SHADER_PROGRAM_MESA) {
struct gl_shader_program *shProg = (struct gl_shader_program *) data;
if (shProg->Type == GL_SHADER_PROGRAM_MESA) {
@@
-225,15
+221,15
@@
free_shader_program_data_cb(GLuint id, void *data, void *userData)
static void
delete_shader_cb(GLuint id, void *data, void *userData)
{
static void
delete_shader_cb(GLuint id, void *data, void *userData)
{
-
GLcontext *ctx = (GL
context *) userData;
+
struct gl_context *ctx = (struct gl_
context *) userData;
struct gl_shader *sh = (struct gl_shader *) data;
if (sh->Type == GL_FRAGMENT_SHADER || sh->Type == GL_VERTEX_SHADER) {
struct gl_shader *sh = (struct gl_shader *) data;
if (sh->Type == GL_FRAGMENT_SHADER || sh->Type == GL_VERTEX_SHADER) {
-
_mesa_free_s
hader(ctx, sh);
+
ctx->Driver.DeleteS
hader(ctx, sh);
}
else {
struct gl_shader_program *shProg = (struct gl_shader_program *) data;
ASSERT(shProg->Type == GL_SHADER_PROGRAM_MESA);
}
else {
struct gl_shader_program *shProg = (struct gl_shader_program *) data;
ASSERT(shProg->Type == GL_SHADER_PROGRAM_MESA);
-
_mesa_free_shader_p
rogram(ctx, shProg);
+
ctx->Driver.DeleteShaderP
rogram(ctx, shProg);
}
}
}
}
@@
-285,10
+281,14
@@
delete_renderbuffer_cb(GLuint id, void *data, void *userData)
* \sa alloc_shared_state().
*/
static void
* \sa alloc_shared_state().
*/
static void
-free_shared_state(
GL
context *ctx, struct gl_shared_state *shared)
+free_shared_state(
struct gl_
context *ctx, struct gl_shared_state *shared)
{
GLuint i;
{
GLuint i;
+ /* Free the dummy/fallback texture object */
+ if (shared->FallbackTex)
+ ctx->Driver.DeleteTexture(ctx, shared->FallbackTex);
+
/*
* Free display lists
*/
/*
* Free display lists
*/
@@
-334,7
+334,6
@@
free_shared_state(GLcontext *ctx, struct gl_shared_state *shared)
_mesa_reference_buffer_object(ctx, &shared->NullBufferObj, NULL);
#endif
_mesa_reference_buffer_object(ctx, &shared->NullBufferObj, NULL);
#endif
-#if FEATURE_ARB_sync
{
struct simple_node *node;
struct simple_node *temp;
{
struct simple_node *node;
struct simple_node *temp;
@@
-343,7
+342,6
@@
free_shared_state(GLcontext *ctx, struct gl_shared_state *shared)
_mesa_unref_sync_object(ctx, (struct gl_sync_object *) node);
}
}
_mesa_unref_sync_object(ctx, (struct gl_sync_object *) node);
}
}
-#endif
/*
* Free texture objects (after FBOs since some textures might have
/*
* Free texture objects (after FBOs since some textures might have
@@
-376,7
+374,7
@@
free_shared_state(GLcontext *ctx, struct gl_shared_state *shared)
* \sa free_shared_state().
*/
void
* \sa free_shared_state().
*/
void
-_mesa_release_shared_state(
GL
context *ctx, struct gl_shared_state *shared)
+_mesa_release_shared_state(
struct gl_
context *ctx, struct gl_shared_state *shared)
{
GLint RefCount;
{
GLint RefCount;