6 #include "r300_context.h"
7 #include "nvvertprog.h"
9 #include "r300_fragprog.h"
12 static void r300BindProgram(GLcontext
*ctx
, GLenum target
, struct program
*prog
)
15 r300ContextPtr rmesa = R300_CONTEXT(ctx);
16 struct r300_vertex_program *vp=(void *)prog;
20 case GL_VERTEX_PROGRAM_ARB
:
22 case GL_FRAGMENT_PROGRAM_ARB
:
24 //rmesa->current_vp = vp;
27 WARN_ONCE("Target not supported yet!\n");
32 static struct program
*r300NewProgram(GLcontext
*ctx
, GLenum target
, GLuint id
)
34 struct r300_vertex_program
*vp
;
36 struct r300_fragment_program
*fp
;
38 struct fragment_program
*fp
;
40 struct ati_fragment_shader
*afs
;
43 case GL_VERTEX_PROGRAM_ARB
:
44 vp
=CALLOC_STRUCT(r300_vertex_program
);
45 return _mesa_init_vertex_program(ctx
, &vp
->mesa_program
, target
, id
);
46 case GL_FRAGMENT_PROGRAM_ARB
:
48 fp
=CALLOC_STRUCT(r300_fragment_program
);
50 return _mesa_init_fragment_program(ctx
, &fp
->mesa_program
, target
, id
);
52 fp
=CALLOC_STRUCT(fragment_program
);
53 return _mesa_init_fragment_program(ctx
, fp
, target
, id
);
55 case GL_FRAGMENT_PROGRAM_NV
:
57 fp
=CALLOC_STRUCT(r300_fragment_program
);
58 return _mesa_init_fragment_program(ctx
, &fp
->mesa_program
, target
, id
);
60 fp
=CALLOC_STRUCT(fragment_program
);
61 return _mesa_init_fragment_program(ctx
, fp
, target
, id
);
63 case GL_FRAGMENT_SHADER_ATI
:
64 afs
=CALLOC_STRUCT(ati_fragment_shader
);
65 return _mesa_init_ati_fragment_shader(ctx
, afs
, target
, id
);
67 _mesa_problem(ctx
, "Bad target in r300NewProgram");
74 static void r300DeleteProgram(GLcontext
*ctx
, struct program
*prog
)
76 //r300ContextPtr rmesa = R300_CONTEXT(ctx);
77 //struct r300_vertex_program *vp=(void *)prog;
79 _mesa_delete_program(ctx
, prog
);
82 static void r300ProgramStringNotify(GLcontext
*ctx
, GLenum target
,
85 /*struct r300_vertex_program *vp=(void *)prog;*/
87 struct r300_fragment_program
*fp
= (struct r300_fragment_program
*) prog
;
91 case GL_VERTEX_PROGRAM_ARB
:
92 /*vp->translated=GL_FALSE;
93 translate_vertex_shader(vp);*/
96 case GL_FRAGMENT_PROGRAM_ARB
:
98 fp
->translated
= GL_FALSE
;
104 static GLboolean
r300IsProgramNative(GLcontext
*ctx
, GLenum target
, struct program
*prog
)
106 //struct r300_vertex_program *vp=(void *)prog;
107 //r300ContextPtr rmesa = R300_CONTEXT(ctx);
112 void r300InitShaderFuncs(struct dd_function_table
*functions
)
114 functions
->NewProgram
=r300NewProgram
;
115 functions
->BindProgram
=r300BindProgram
;
116 functions
->DeleteProgram
=r300DeleteProgram
;
117 functions
->ProgramStringNotify
=r300ProgramStringNotify
;
118 functions
->IsProgramNative
=r300IsProgramNative
;