7 #include "r300_context.h"
8 #include "r300_fragprog.h"
11 r300BindProgram(GLcontext
*ctx
, GLenum target
, struct gl_program
*prog
)
14 case GL_VERTEX_PROGRAM_ARB
:
15 //rmesa->curr_vp = (struct gl_vertex_program *)vp;
18 if((vp
->ref_count
% 1500) == 0) {
19 fprintf(stderr
, "id %p, ref_count %d\n", vp
, vp
->ref_count
);
20 _mesa_print_program(&vp
->mesa_program
.Base
);
24 case GL_FRAGMENT_PROGRAM_ARB
:
27 WARN_ONCE("Target not supported yet!\n");
32 static struct gl_program
*
33 r300NewProgram(GLcontext
*ctx
, GLenum target
, GLuint id
)
35 struct r300_vertex_program_cont
*vp
;
36 struct r300_fragment_program
*fp
;
39 case GL_VERTEX_STATE_PROGRAM_NV
:
40 case GL_VERTEX_PROGRAM_ARB
:
41 vp
=CALLOC_STRUCT(r300_vertex_program_cont
);
42 return _mesa_init_vertex_program(ctx
, &vp
->mesa_program
, target
, id
);
43 case GL_FRAGMENT_PROGRAM_ARB
:
44 fp
=CALLOC_STRUCT(r300_fragment_program
);
46 return _mesa_init_fragment_program(ctx
, &fp
->mesa_program
, target
, id
);
47 case GL_FRAGMENT_PROGRAM_NV
:
48 fp
=CALLOC_STRUCT(r300_fragment_program
);
49 return _mesa_init_fragment_program(ctx
, &fp
->mesa_program
, target
, id
);
51 _mesa_problem(ctx
, "Bad target in r300NewProgram");
59 r300DeleteProgram(GLcontext
*ctx
, struct gl_program
*prog
)
62 r300ContextPtr rmesa
= R300_CONTEXT(ctx
);
63 struct r300_vertex_program
*vp
=(void *)prog
;
65 if(rmesa
->curr_vp
== vp
)
66 rmesa
->curr_vp
= NULL
;
69 _mesa_delete_program(ctx
, prog
);
73 r300ProgramStringNotify(GLcontext
*ctx
, GLenum target
, struct gl_program
*prog
)
75 struct r300_vertex_program_cont
*vp
=(void *)prog
;
76 struct r300_fragment_program
*fp
= (struct r300_fragment_program
*) prog
;
79 case GL_VERTEX_PROGRAM_ARB
:
81 /*vp->translated = GL_FALSE;
82 memset(&vp->translated, 0, sizeof(struct r300_vertex_program) - sizeof(struct gl_vertex_program));*/
83 /*r300_translate_vertex_shader(vp);*/
85 case GL_FRAGMENT_PROGRAM_ARB
:
86 fp
->translated
= GL_FALSE
;
89 /* need this for tcl fallbacks */
90 _tnl_program_string(ctx
, target
, prog
);
94 r300IsProgramNative(GLcontext
*ctx
, GLenum target
, struct gl_program
*prog
)
96 //struct r300_vertex_program *vp=(void *)prog;
97 //r300ContextPtr rmesa = R300_CONTEXT(ctx);
102 void r300InitShaderFuncs(struct dd_function_table
*functions
)
104 functions
->NewProgram
=r300NewProgram
;
105 functions
->BindProgram
=r300BindProgram
;
106 functions
->DeleteProgram
=r300DeleteProgram
;
107 functions
->ProgramStringNotify
=r300ProgramStringNotify
;
108 functions
->IsProgramNative
=r300IsProgramNative
;