[r300] Add more struct names for r300_hw_state
[mesa.git] / src / mesa / drivers / dri / r300 / r300_shader.c
index c1f5914aad180d027aeec29bd98aa160f9cecf67..77abf86a8eee8a4b458e0d5156e75a530a4c44db 100644 (file)
@@ -1,95 +1,73 @@
-#include "glheader.h"
-#include "macros.h"
-#include "enums.h"
 
-#include "program.h"
+#include "main/glheader.h"
+
+#include "shader/program.h"
+#include "tnl/tnl.h"
 #include "r300_context.h"
-#include "nvvertprog.h"
+#include "r300_fragprog.h"
 
-static void r300BindProgram(GLcontext *ctx, GLenum target, struct program *prog)
+static struct gl_program *r300NewProgram(GLcontext * ctx, GLenum target,
+                                        GLuint id)
 {
-       r300ContextPtr rmesa = R300_CONTEXT(ctx);
-       struct r300_vertex_program *vp=(void *)prog;
-       
-       switch(target){
-               case GL_VERTEX_PROGRAM_ARB:
-                       //rmesa->current_vp = vp;
-               break;
-               default:
-                       WARN_ONCE("Target not supported yet!\n");
-               break;
-       }
-}
+       struct r300_vertex_program_cont *vp;
+       struct r300_fragment_program *fp;
 
-static struct program *r300NewProgram(GLcontext *ctx, GLenum target, GLuint id)
-{
-       struct r300_vertex_program *vp;
-       struct fragment_program *fp;
-       struct ati_fragment_shader *afs;
-       
-       switch(target){
-               case GL_VERTEX_PROGRAM_ARB:
-                       vp=CALLOC_STRUCT(r300_vertex_program);
-               return _mesa_init_vertex_program(ctx, &vp->mesa_program, target, id);
-               
-               case GL_FRAGMENT_PROGRAM_ARB:
-                       fp=CALLOC_STRUCT(fragment_program);
-               return _mesa_init_fragment_program(ctx, fp, target, id);
-               
-               case GL_FRAGMENT_PROGRAM_NV:
-                       fp=CALLOC_STRUCT(fragment_program);
-               return _mesa_init_fragment_program(ctx, fp, target, id);
-               
-               case GL_FRAGMENT_SHADER_ATI:
-                       afs=CALLOC_STRUCT(ati_fragment_shader);
-               return _mesa_init_ati_fragment_shader(ctx, afs, target, id);
+       switch (target) {
+       case GL_VERTEX_STATE_PROGRAM_NV:
+       case GL_VERTEX_PROGRAM_ARB:
+               vp = CALLOC_STRUCT(r300_vertex_program_cont);
+               return _mesa_init_vertex_program(ctx, &vp->mesa_program,
+                                                target, id);
+       case GL_FRAGMENT_PROGRAM_ARB:
+               fp = CALLOC_STRUCT(r300_fragment_program);
+               fp->ctx = ctx;
+               return _mesa_init_fragment_program(ctx, &fp->mesa_program,
+                                                  target, id);
+       case GL_FRAGMENT_PROGRAM_NV:
+               fp = CALLOC_STRUCT(r300_fragment_program);
+               return _mesa_init_fragment_program(ctx, &fp->mesa_program,
+                                                  target, id);
+       default:
+               _mesa_problem(ctx, "Bad target in r300NewProgram");
        }
-       
-       return NULL;    
-}
 
+       return NULL;
+}
 
-static void r300DeleteProgram(GLcontext *ctx, struct program *prog)
+static void r300DeleteProgram(GLcontext * ctx, struct gl_program *prog)
 {
-       r300ContextPtr rmesa = R300_CONTEXT(ctx);
-       struct r300_vertex_program *vp=(void *)prog;
-       
-       /*if(rmesa->current_vp == vp)
-               rmesa->current_vp = NULL;*/
-       
        _mesa_delete_program(ctx, prog);
 }
-     
-void r300ProgramStringNotify(GLcontext *ctx, GLenum target, 
-                               struct program *prog)
+
+static void
+r300ProgramStringNotify(GLcontext * ctx, GLenum target, struct gl_program *prog)
 {
-       struct r300_vertex_program *vp=(void *)prog;
-               
-       switch(target) {
+       struct r300_vertex_program_cont *vp = (void *)prog;
+       struct r300_fragment_program *fp = (struct r300_fragment_program *)prog;
+
+       switch (target) {
        case GL_VERTEX_PROGRAM_ARB:
-               /*vp->translated=GL_FALSE;
-               translate_vertex_shader(vp);*/
-               //debug_vp(ctx, vp);
-       break;
-       
+               vp->progs = NULL;
+               break;
        case GL_FRAGMENT_PROGRAM_ARB:
-       break;
+               fp->translated = GL_FALSE;
+               break;
        }
+
+       /* need this for tcl fallbacks */
+       _tnl_program_string(ctx, target, prog);
 }
 
-static GLboolean r300IsProgramNative(GLcontext *ctx, GLenum target, struct program *prog)
+static GLboolean
+r300IsProgramNative(GLcontext * ctx, GLenum target, struct gl_program *prog)
 {
-       struct r300_vertex_program *vp=(void *)prog;
-       r300ContextPtr rmesa = R300_CONTEXT(ctx);
-
-       return 1;
+       return GL_TRUE;
 }
 
 void r300InitShaderFuncs(struct dd_function_table *functions)
 {
-       functions->NewProgram=r300NewProgram;
-       functions->BindProgram=r300BindProgram;
-       functions->DeleteProgram=r300DeleteProgram;
-       functions->ProgramStringNotify=r300ProgramStringNotify;
-       functions->IsProgramNative=r300IsProgramNative;
+       functions->NewProgram = r300NewProgram;
+       functions->DeleteProgram = r300DeleteProgram;
+       functions->ProgramStringNotify = r300ProgramStringNotify;
+       functions->IsProgramNative = r300IsProgramNative;
 }