alloc caches for fixed-func vertex/fragment progs
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 44587ae..b435c29 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -123,6 +123,7 @@
/*@{*/
struct _mesa_HashTable;
struct gl_pixelstore_attrib;
+struct gl_program_cache;
struct gl_texture_format;
struct gl_texture_image;
struct gl_texture_object;
@@ -2000,6 +2001,9 @@
/** Program to emulate fixed-function T&L (see above) */
struct gl_vertex_program *_TnlProgram;
+ /** Cache of fixed-function programs */
+ struct gl_program_cache *Cache;
+
#if FEATURE_MESA_program_debug
GLprogramcallbackMESA Callback;
GLvoid *CallbackData;
@@ -2033,6 +2037,9 @@
/** Program to emulate fixed-function texture env/combine (see above) */
struct gl_fragment_program *_TexEnvProgram;
+ /** Cache of fixed-function programs */
+ struct gl_program_cache *Cache;
+
#if FEATURE_MESA_program_debug
GLprogramcallbackMESA Callback;
GLvoid *CallbackData;
diff --git a/src/mesa/shader/program.c b/src/mesa/shader/program.c
index ed1aacd..f13aa18 100644
--- a/src/mesa/shader/program.c
+++ b/src/mesa/shader/program.c
@@ -33,6 +33,7 @@
#include "context.h"
#include "hash.h"
#include "program.h"
+#include "prog_cache.h"
#include "prog_parameter.h"
#include "prog_instruction.h"
@@ -66,6 +67,7 @@
ctx->VertexProgram.TrackMatrix[i] = GL_NONE;
ctx->VertexProgram.TrackMatrixTransform[i] = GL_IDENTITY_NV;
}
+ ctx->VertexProgram.Cache = _mesa_new_program_cache();
#endif
#if FEATURE_NV_fragment_program || FEATURE_ARB_fragment_program
@@ -73,8 +75,10 @@
ctx->FragmentProgram.Current = (struct gl_fragment_program *) ctx->Shared->DefaultFragmentProgram;
assert(ctx->FragmentProgram.Current);
ctx->FragmentProgram.Current->Base.RefCount++;
+ ctx->FragmentProgram.Cache = _mesa_new_program_cache();
#endif
+
/* XXX probably move this stuff */
#if FEATURE_ATI_fragment_shader
ctx->ATIFragmentShader.Enabled = GL_FALSE;