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
)
14 r300ContextPtr rmesa
= R300_CONTEXT(ctx
);
15 struct r300_vertex_program
*vp
=(void *)prog
;
18 case GL_VERTEX_PROGRAM_ARB
:
20 case GL_FRAGMENT_PROGRAM_ARB
:
22 //rmesa->current_vp = vp;
25 WARN_ONCE("Target not supported yet!\n");
30 static struct program
*r300NewProgram(GLcontext
*ctx
, GLenum target
, GLuint id
)
32 struct r300_vertex_program
*vp
;
34 struct r300_fragment_program
*fp
;
36 struct fragment_program
*fp
;
38 struct ati_fragment_shader
*afs
;
41 case GL_VERTEX_PROGRAM_ARB
:
42 vp
=CALLOC_STRUCT(r300_vertex_program
);
43 return _mesa_init_vertex_program(ctx
, &vp
->mesa_program
, target
, id
);
45 case GL_FRAGMENT_PROGRAM_ARB
:
47 fp
=CALLOC_STRUCT(r300_fragment_program
);
49 return _mesa_init_fragment_program(ctx
, &fp
->mesa_program
, target
, id
);
51 fp
=CALLOC_STRUCT(fragment_program
);
52 return _mesa_init_fragment_program(ctx
, fp
, target
, id
);
54 case GL_FRAGMENT_PROGRAM_NV
:
55 fp
=CALLOC_STRUCT(fragment_program
);
56 return _mesa_init_fragment_program(ctx
, fp
, target
, id
);
58 case GL_FRAGMENT_SHADER_ATI
:
59 afs
=CALLOC_STRUCT(ati_fragment_shader
);
60 return _mesa_init_ati_fragment_shader(ctx
, afs
, target
, id
);
67 static void r300DeleteProgram(GLcontext
*ctx
, struct program
*prog
)
69 //r300ContextPtr rmesa = R300_CONTEXT(ctx);
70 //struct r300_vertex_program *vp=(void *)prog;
72 _mesa_delete_program(ctx
, prog
);
75 void r300ProgramStringNotify(GLcontext
*ctx
, GLenum target
,
78 struct r300_vertex_program
*vp
=(void *)prog
;
80 struct r300_fragment_program
*fp
=(void *)prog
;
84 case GL_VERTEX_PROGRAM_ARB
:
85 /*vp->translated=GL_FALSE;
86 translate_vertex_shader(vp);*/
89 case GL_FRAGMENT_PROGRAM_ARB
:
91 fp
->translated
= GL_FALSE
;
97 static GLboolean
r300IsProgramNative(GLcontext
*ctx
, GLenum target
, struct program
*prog
)
99 //struct r300_vertex_program *vp=(void *)prog;
100 //r300ContextPtr rmesa = R300_CONTEXT(ctx);
105 void r300InitShaderFuncs(struct dd_function_table
*functions
)
107 functions
->NewProgram
=r300NewProgram
;
108 functions
->BindProgram
=r300BindProgram
;
109 functions
->DeleteProgram
=r300DeleteProgram
;
110 functions
->ProgramStringNotify
=r300ProgramStringNotify
;
111 functions
->IsProgramNative
=r300IsProgramNative
;