6 #include "r300_context.h"
7 #include "nvvertprog.h"
9 static void r300BindProgram(GLcontext
*ctx
, GLenum target
, struct program
*prog
)
11 r300ContextPtr rmesa
= R300_CONTEXT(ctx
);
12 struct r300_vertex_program
*vp
=(void *)prog
;
15 case GL_VERTEX_PROGRAM_ARB
:
16 //rmesa->current_vp = vp;
19 WARN_ONCE("Target not supported yet!\n");
24 /* Mesa doesnt seem to have prototype for this */
26 _mesa_init_ati_fragment_shader( GLcontext
*ctx
, struct ati_fragment_shader
*prog
,
27 GLenum target
, GLuint id
);
29 static struct program
*r300NewProgram(GLcontext
*ctx
, GLenum target
, GLuint id
)
31 struct r300_vertex_program
*vp
;
32 struct fragment_program
*fp
;
33 struct ati_fragment_shader
*afs
;
36 case GL_VERTEX_PROGRAM_ARB
:
37 vp
=CALLOC_STRUCT(r300_vertex_program
);
38 return _mesa_init_vertex_program(ctx
, &vp
->mesa_program
, target
, id
);
40 case GL_FRAGMENT_PROGRAM_ARB
:
41 fp
=CALLOC_STRUCT(fragment_program
);
42 return _mesa_init_fragment_program(ctx
, fp
, target
, id
);
44 case GL_FRAGMENT_PROGRAM_NV
:
45 fp
=CALLOC_STRUCT(fragment_program
);
46 return _mesa_init_fragment_program(ctx
, fp
, target
, id
);
48 case GL_FRAGMENT_SHADER_ATI
:
49 afs
=CALLOC_STRUCT(ati_fragment_shader
);
50 return _mesa_init_ati_fragment_shader(ctx
, afs
, target
, id
);
57 static void r300DeleteProgram(GLcontext
*ctx
, struct program
*prog
)
59 r300ContextPtr rmesa
= R300_CONTEXT(ctx
);
60 struct r300_vertex_program
*vp
=(void *)prog
;
62 /*if(rmesa->current_vp == vp)
63 rmesa->current_vp = NULL;*/
65 _mesa_delete_program(ctx
, prog
);
68 void r300ProgramStringNotify(GLcontext
*ctx
, GLenum target
,
71 struct r300_vertex_program
*vp
=(void *)prog
;
74 case GL_VERTEX_PROGRAM_ARB
:
75 vp
->translated
=GL_FALSE
;
76 translate_vertex_shader(vp
);
80 case GL_FRAGMENT_PROGRAM_ARB
:
85 static GLboolean
r300IsProgramNative(GLcontext
*ctx
, GLenum target
, struct program
*prog
)
87 struct r300_vertex_program
*vp
=(void *)prog
;
88 r300ContextPtr rmesa
= R300_CONTEXT(ctx
);
93 void r300InitShaderFuncs(struct dd_function_table
*functions
)
95 functions
->NewProgram
=r300NewProgram
;
96 functions
->BindProgram
=r300BindProgram
;
97 functions
->DeleteProgram
=r300DeleteProgram
;
98 functions
->ProgramStringNotify
=r300ProgramStringNotify
;
99 functions
->IsProgramNative
=r300IsProgramNative
;