Remove ctx field from texenvprog_cache

This commit is contained in:
Brian
2007-10-29 12:25:46 -06:00
parent 9946012949
commit f18d4e058e
2 changed files with 11 additions and 13 deletions

View File

@@ -1566,7 +1566,6 @@ struct texenvprog_cache_item {
struct texenvprog_cache { struct texenvprog_cache {
struct texenvprog_cache_item **items; struct texenvprog_cache_item **items;
GLuint size, n_items; GLuint size, n_items;
GLcontext *ctx;
}; };
/** /**

View File

@@ -399,9 +399,9 @@ static struct ureg get_tex_temp( struct texenv_fragment_program *p )
} }
static void release_temps( struct texenv_fragment_program *p ) static void release_temps(GLcontext *ctx, struct texenv_fragment_program *p )
{ {
GLuint max_temp = p->ctx->Const.FragmentProgram.MaxTemps; GLuint max_temp = ctx->Const.FragmentProgram.MaxTemps;
/* KW: To support tex_env_crossbar, don't release the registers in /* KW: To support tex_env_crossbar, don't release the registers in
* temps_output. * temps_output.
@@ -1037,7 +1037,7 @@ create_new_program(GLcontext *ctx, struct state_key *key,
p.one = undef; p.one = undef;
p.last_tex_stage = 0; p.last_tex_stage = 0;
release_temps(&p); release_temps(ctx, &p);
if (key->enabled_units) { if (key->enabled_units) {
/* First pass - to support texture_env_crossbar, first identify /* First pass - to support texture_env_crossbar, first identify
@@ -1055,7 +1055,7 @@ create_new_program(GLcontext *ctx, struct state_key *key,
for (unit = 0 ; unit < ctx->Const.MaxTextureUnits; unit++) for (unit = 0 ; unit < ctx->Const.MaxTextureUnits; unit++)
if (key->enabled_units & (1<<unit)) { if (key->enabled_units & (1<<unit)) {
p.src_previous = emit_texenv( &p, unit ); p.src_previous = emit_texenv( &p, unit );
release_temps(&p); /* release all temps */ release_temps(ctx, &p); /* release all temps */
} }
} }
@@ -1169,7 +1169,7 @@ static void rehash( struct texenvprog_cache *cache )
cache->size = size; cache->size = size;
} }
static void clear_cache( struct texenvprog_cache *cache ) static void clear_cache( GLcontext *ctx, struct texenvprog_cache *cache )
{ {
struct texenvprog_cache_item *c, *next; struct texenvprog_cache_item *c, *next;
GLuint i; GLuint i;
@@ -1178,8 +1178,7 @@ static void clear_cache( struct texenvprog_cache *cache )
for (c = cache->items[i]; c; c = next) { for (c = cache->items[i]; c; c = next) {
next = c->next; next = c->next;
_mesa_free(c->key); _mesa_free(c->key);
cache->ctx->Driver.DeleteProgram(cache->ctx, ctx->Driver.DeleteProgram(ctx, (struct gl_program *) c->data);
(struct gl_program *) c->data);
_mesa_free(c); _mesa_free(c);
} }
cache->items[i] = NULL; cache->items[i] = NULL;
@@ -1190,7 +1189,8 @@ static void clear_cache( struct texenvprog_cache *cache )
} }
static void cache_item( struct texenvprog_cache *cache, static void cache_item( GLcontext *ctx,
struct texenvprog_cache *cache,
GLuint hash, GLuint hash,
const struct state_key *key, const struct state_key *key,
void *data ) void *data )
@@ -1208,7 +1208,7 @@ static void cache_item( struct texenvprog_cache *cache,
if (cache->size < 1000) if (cache->size < 1000)
rehash(cache); rehash(cache);
else else
clear_cache(cache); clear_cache(ctx, cache);
} }
cache->n_items++; cache->n_items++;
@@ -1259,7 +1259,7 @@ _mesa_get_fixed_func_fragment_program(GLcontext *ctx)
create_new_program(ctx, &key, prog); create_new_program(ctx, &key, prog);
cache_item(&ctx->Texture.env_fp_cache, hash, &key, prog); cache_item(ctx, &ctx->Texture.env_fp_cache, hash, &key, prog);
} }
return prog; return prog;
@@ -1301,7 +1301,6 @@ _mesa_UpdateTexEnvProgram( GLcontext *ctx )
void _mesa_TexEnvProgramCacheInit( GLcontext *ctx ) void _mesa_TexEnvProgramCacheInit( GLcontext *ctx )
{ {
ctx->Texture.env_fp_cache.ctx = ctx;
ctx->Texture.env_fp_cache.size = 17; ctx->Texture.env_fp_cache.size = 17;
ctx->Texture.env_fp_cache.n_items = 0; ctx->Texture.env_fp_cache.n_items = 0;
ctx->Texture.env_fp_cache.items = (struct texenvprog_cache_item **) ctx->Texture.env_fp_cache.items = (struct texenvprog_cache_item **)
@@ -1312,6 +1311,6 @@ void _mesa_TexEnvProgramCacheInit( GLcontext *ctx )
void _mesa_TexEnvProgramCacheDestroy( GLcontext *ctx ) void _mesa_TexEnvProgramCacheDestroy( GLcontext *ctx )
{ {
clear_cache(&ctx->Texture.env_fp_cache); clear_cache(ctx, &ctx->Texture.env_fp_cache);
_mesa_free(ctx->Texture.env_fp_cache.items); _mesa_free(ctx->Texture.env_fp_cache.items);
} }