Added _mesa_lookup_program() and _mesa_lookup_bufferobj() functions to avoid
authorBrian Paul <brian.paul@tungstengraphics.com>
Wed, 23 Aug 2006 23:10:14 +0000 (23:10 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Wed, 23 Aug 2006 23:10:14 +0000 (23:10 +0000)
a lot of casting elsewhere.
Use _mesa_lookup_texture() in tdfx driver, use _mesa_lookup_bufferobj() in r300
driver.

src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c
src/mesa/drivers/dri/tdfx/tdfx_context.c
src/mesa/drivers/dri/tdfx/tdfx_texman.c
src/mesa/main/bufferobj.c
src/mesa/main/bufferobj.h
src/mesa/shader/nvprogram.c
src/mesa/shader/program.c
src/mesa/shader/program.h

index a7db8dae63bf3e6d7cce160f644b44519402b9b0..d3a4bfcd2f5d780d3ee543f17e3fdeb60681f8e8 100644 (file)
@@ -749,13 +749,13 @@ void r300_evict_vbos(GLcontext *ctx, int amount)
        r300ContextPtr rmesa = R300_CONTEXT(ctx);
        struct _mesa_HashTable *hash = ctx->Shared->BufferObjects;
        GLuint k = _mesa_HashFirstEntry(hash);
-       struct gl_buffer_object *obj;
        struct r300_buffer_object *r300_obj;
        GLvoid *data;
        
        while (amount > 0 && k) {
-               obj = (struct gl_buffer_object *) _mesa_HashLookup(hash, k);
-               r300_obj = (struct r300_buffer_object *) obj;
+               struct gl_buffer_object *obj = _mesa_lookup_bufferobj(ctx, k);
+               struct r300_buffer_object *r300_obj
+                       = (struct r300_buffer_object *) obj;
                
                if (obj->OnCard && obj->Size) {
                        obj->Data = _mesa_malloc(obj->Size);
index 826a9f71dfe278abbb5fb59a2e780a889b85456d..8d8a629474c10b14fc580e24a68e8909a918e3be 100644 (file)
@@ -602,7 +602,7 @@ tdfxDestroyContext( __DRIcontextPrivate *driContextPriv )
               id;
               id = _mesa_HashNextEntry(textures, id)) {
             struct gl_texture_object *tObj
-               = (struct gl_texture_object *) _mesa_HashLookup(textures, id);
+               = _mesa_lookup_texture(fxMesa->glCtx, id);
             tdfxTMFreeTexture(fxMesa, tObj);
          }
       }
index 63cae17e4e9d96769eb242463f2d448cfa5d06ee..6f782f687f3e9a52ecd3f8f47a34c833f4b2bc79 100644 (file)
@@ -38,6 +38,7 @@
 #include "tdfx_context.h"
 #include "tdfx_tex.h"
 #include "tdfx_texman.h"
+#include "texobj.h"
 #include "hash.h"
 
 
@@ -82,8 +83,8 @@ VerifyFreeList(tdfxContextPtr fxMesa, FxU32 tmu)
        for (id = _mesa_HashFirstEntry(textures);
             id;
             id = _mesa_HashNextEntry(textures, id)) {
-          struct gl_texture_object *tObj;
-          tObj = (struct gl_texture_object *) _mesa_HashLookup(textures, id);
+          struct gl_texture_object *tObj
+             = _mesa_lookup_texture(fxMesa->glCtx, id);
           tdfxTexInfo *ti = TDFX_TEXTURE_DATA(tObj);
           if (ti) {
              if (ti->isInTM) {
@@ -122,7 +123,7 @@ dump_texmem(tdfxContextPtr fxMesa)
          id;
          id = _mesa_HashNextEntry(textures, id)) {
         struct gl_texture_object *obj
-            = (struct gl_texture_object *) _mesa_HashLookup(textures, id);
+           = _mesa_lookup_texture(fxMesa->glCtx, id);
         tdfxTexInfo *info = TDFX_TEXTURE_DATA(obj);
 
         if (info && info->isInTM) {
@@ -404,7 +405,7 @@ FindOldestObject(tdfxContextPtr fxMesa, FxU32 tmu)
          id;
          id = _mesa_HashNextEntry(textures, id)) {
         struct gl_texture_object *obj
-            = (struct gl_texture_object *) _mesa_HashLookup(textures, id);
+           = _mesa_lookup_texture(fxMesa->glCtx, id);
         tdfxTexInfo *info = TDFX_TEXTURE_DATA(obj);
 
         if (info && info->isInTM &&
@@ -460,7 +461,7 @@ FlushTexMemory(tdfxContextPtr fxMesa)
          id;
          id = _mesa_HashNextEntry(textures, id)) {
        struct gl_texture_object *obj
-          = (struct gl_texture_object *) _mesa_HashLookup(textures, id);
+          = _mesa_lookup_texture(fxMesa->glCtx, id);
        if (obj->RefCount < 2) {
           /* don't flush currently bound textures */
           tdfxTMMoveOutTM_NoLock(fxMesa, obj);
@@ -972,7 +973,7 @@ void tdfxTMRestoreTextures_NoLock( tdfxContextPtr fxMesa )
         id;
         id = _mesa_HashNextEntry(textures, id)) {
       struct gl_texture_object *tObj
-         = (struct gl_texture_object *) _mesa_HashLookup(textures, id);
+         = _mesa_lookup_texture(fxMesa->glCtx, id);
       tdfxTexInfo *ti = TDFX_TEXTURE_DATA( tObj );
       if ( ti && ti->isInTM ) {
          int i;
index 366ffbb30ef0ca8704622d0c931a9bd61accff9b..1d0f4b40679654efbe668ed62e30df5c249794ff 100644 (file)
@@ -469,8 +469,8 @@ _mesa_validate_pbo_access(GLuint dimensions,
  * Return the gl_buffer_object for the given ID.
  * Always return NULL for ID 0.
  */
-static INLINE struct gl_buffer_object *
-lookup_bufferobj(GLcontext *ctx, GLuint buffer)
+struct gl_buffer_object *
+_mesa_lookup_bufferobj(GLcontext *ctx, GLuint buffer)
 {
    if (buffer == 0)
       return NULL;
@@ -508,7 +508,7 @@ _mesa_BindBufferARB(GLenum target, GLuint buffer)
    }
    else {
       /* non-default buffer object */
-      newBufObj = lookup_bufferobj(ctx, buffer);
+      newBufObj = _mesa_lookup_bufferobj(ctx, buffer);
       if (!newBufObj) {
          /* if this is a new buffer object id, allocate a buffer object now */
          ASSERT(ctx->Driver.NewBufferObject);
@@ -577,7 +577,7 @@ _mesa_DeleteBuffersARB(GLsizei n, const GLuint *ids)
    _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
 
    for (i = 0; i < n; i++) {
-      struct gl_buffer_object *bufObj = lookup_bufferobj(ctx, ids[i]);
+      struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, ids[i]);
       if (bufObj) {
          /* unbind any vertex pointers bound to this buffer */
          GLuint j;
@@ -722,7 +722,7 @@ _mesa_IsBufferARB(GLuint id)
    ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);
 
    _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
-   bufObj = lookup_bufferobj(ctx, id);
+   bufObj = _mesa_lookup_bufferobj(ctx, id);
    _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
 
    return bufObj ? GL_TRUE : GL_FALSE;
index 05e27c984ea993eb0c770270e78804fb35261ad4..f54f9e9ff00c1b228819eb8d8131fdcdac376af5 100644 (file)
@@ -44,6 +44,9 @@ _mesa_new_buffer_object( GLcontext *ctx, GLuint name, GLenum target );
 extern void
 _mesa_delete_buffer_object( GLcontext *ctx, struct gl_buffer_object *bufObj );
 
+extern struct gl_buffer_object *
+_mesa_lookup_bufferobj(GLcontext *ctx, GLuint buffer);
+
 extern void
 _mesa_initialize_buffer_object( struct gl_buffer_object *obj,
                                GLuint name, GLenum target );
index 46bc5b35f82aba7e6c64c056a105f77826aaa700..4e29e0b3f88a849d6587b4d0ca08424e67e35a0c 100644 (file)
@@ -70,8 +70,7 @@ _mesa_ExecuteProgramNV(GLenum target, GLuint id, const GLfloat *params)
 
    FLUSH_VERTICES(ctx, _NEW_PROGRAM);
 
-   vprog = (struct gl_vertex_program *)
-      _mesa_HashLookup(ctx->Shared->Programs, id);
+   vprog = (struct gl_vertex_program *) _mesa_lookup_program(ctx, id);
 
    if (!vprog || vprog->Base.Target != GL_VERTEX_STATE_PROGRAM_NV) {
       _mesa_error(ctx, GL_INVALID_OPERATION, "glExecuteProgramNV");
@@ -109,8 +108,7 @@ GLboolean GLAPIENTRY _mesa_AreProgramsResidentNV(GLsizei n, const GLuint *ids,
          _mesa_error(ctx, GL_INVALID_VALUE, "glAreProgramsResidentNV");
          return GL_FALSE;
       }
-      prog = (const struct gl_program *)
-         _mesa_HashLookup(ctx->Shared->Programs, ids[i]);
+      prog = _mesa_lookup_program(ctx, ids[i]);
       if (!prog) {
          _mesa_error(ctx, GL_INVALID_VALUE, "glAreProgramsResidentNV");
          return GL_FALSE;
@@ -158,7 +156,7 @@ _mesa_RequestResidentProgramsNV(GLsizei n, const GLuint *ids)
          return;
       }
 
-      prog = (struct gl_program *) _mesa_HashLookup(ctx->Shared->Programs, ids[i]);
+      prog = _mesa_lookup_program(ctx, ids[i]);
       if (!prog) {
          _mesa_error(ctx, GL_INVALID_VALUE, "glRequestResidentProgramsNV(id)");
          return;
@@ -254,7 +252,7 @@ _mesa_GetProgramivNV(GLuint id, GLenum pname, GLint *params)
    if (!ctx->_CurrentProgram)
       ASSERT_OUTSIDE_BEGIN_END(ctx);
 
-   prog = (struct gl_program *) _mesa_HashLookup(ctx->Shared->Programs, id);
+   prog = _mesa_lookup_program(ctx, id);
    if (!prog) {
       _mesa_error(ctx, GL_INVALID_OPERATION, "glGetProgramivNV");
       return;
@@ -296,7 +294,7 @@ _mesa_GetProgramStringNV(GLuint id, GLenum pname, GLubyte *program)
       return;
    }
 
-   prog = (struct gl_program *) _mesa_HashLookup(ctx->Shared->Programs, id);
+   prog = _mesa_lookup_program(ctx, id);
    if (!prog) {
       _mesa_error(ctx, GL_INVALID_OPERATION, "glGetProgramStringNV");
       return;
@@ -522,7 +520,7 @@ _mesa_LoadProgramNV(GLenum target, GLuint id, GLsizei len,
 
    FLUSH_VERTICES(ctx, _NEW_PROGRAM);
 
-   prog = (struct gl_program *) _mesa_HashLookup(ctx->Shared->Programs, id);
+   prog = _mesa_lookup_program(ctx, id);
 
    if (prog && prog->Target != 0 && prog->Target != target) {
       _mesa_error(ctx, GL_INVALID_OPERATION, "glLoadProgramNV(target)");
@@ -773,7 +771,7 @@ _mesa_ProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte *name,
 
    FLUSH_VERTICES(ctx, _NEW_PROGRAM);
 
-   prog = (struct gl_program *) _mesa_HashLookup(ctx->Shared->Programs, id);
+   prog = _mesa_lookup_program(ctx, id);
    if (!prog || prog->Target != GL_FRAGMENT_PROGRAM_NV) {
       _mesa_error(ctx, GL_INVALID_OPERATION, "glProgramNamedParameterNV");
       return;
@@ -839,7 +837,7 @@ _mesa_GetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte *name,
    if (!ctx->_CurrentProgram)
       ASSERT_OUTSIDE_BEGIN_END(ctx);
 
-   prog = (struct gl_program *) _mesa_HashLookup(ctx->Shared->Programs, id);
+   prog = _mesa_lookup_program(ctx, id);
    if (!prog || prog->Target != GL_FRAGMENT_PROGRAM_NV) {
       _mesa_error(ctx, GL_INVALID_OPERATION, "glGetProgramNamedParameterNV");
       return;
index 352ed93465e7a07d92904fe90148fbf3c41eb3dd..371500304f4d76176cd9f2d0513e931d0c7ecb67 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.5
+ * Version:  6.5.1
  *
  * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
  *
@@ -304,6 +304,20 @@ _mesa_delete_program(GLcontext *ctx, struct gl_program *prog)
 }
 
 
+/**
+ * Return the gl_program object for a given ID.
+ * Basically just a wrapper for _mesa_HashLookup() to avoid a lot of
+ * casts elsewhere.
+ */
+struct gl_program *
+_mesa_lookup_program(GLcontext *ctx, GLuint id)
+{
+   if (id)
+      return (struct gl_program *) _mesa_HashLookup(ctx->Shared->Programs, id);
+   else
+      return NULL;
+}
+
 
 /**********************************************************************/
 /* Program parameter functions                                        */
@@ -1753,7 +1767,7 @@ _mesa_BindProgram(GLenum target, GLuint id)
    }
    else {
       /* Bind user program */
-      prog = (struct gl_program *) _mesa_HashLookup(ctx->Shared->Programs, id);
+      prog = _mesa_lookup_program(ctx, id);
       if (!prog || prog == &_mesa_DummyProgram) {
          /* allocate a new program now */
          prog = ctx->Driver.NewProgram(ctx, target, id);
@@ -1809,8 +1823,7 @@ _mesa_DeletePrograms(GLsizei n, const GLuint *ids)
 
    for (i = 0; i < n; i++) {
       if (ids[i] != 0) {
-         struct gl_program *prog = (struct gl_program *)
-            _mesa_HashLookup(ctx->Shared->Programs, ids[i]);
+         struct gl_program *prog = _mesa_lookup_program(ctx, ids[i]);
          if (prog == &_mesa_DummyProgram) {
             _mesa_HashRemove(ctx->Shared->Programs, ids[i]);
          }
@@ -1899,7 +1912,7 @@ _mesa_IsProgram(GLuint id)
    if (id == 0)
       return GL_FALSE;
 
-   if (_mesa_HashLookup(ctx->Shared->Programs, id))
+   if (_mesa_lookup_program(ctx, id))
       return GL_TRUE;
    else
       return GL_FALSE;
index 3d50c23b4ed2e40e53e2683faa4dd6214ec8464e..1d91e63af501c60abf8b4dd703e7de2aeb9efeb8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.5
+ * Version:  6.5.1
  *
  * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
  *
@@ -111,6 +111,8 @@ _mesa_new_program(GLcontext *ctx, GLenum target, GLuint id);
 extern void
 _mesa_delete_program(GLcontext *ctx, struct gl_program *prog);
 
+extern struct gl_program *
+_mesa_lookup_program(GLcontext *ctx, GLuint id);
 
 
 /**