From f4092abdf94af6a99aff944d6264bc1284e8bdd4 Mon Sep 17 00:00:00 2001 From: Reinhard Tartler Date: Mon, 10 Oct 2011 17:43:39 +0200 Subject: Imported nx-X11-3.1.0-1.tar.gz Summary: Imported nx-X11-3.1.0-1.tar.gz Keywords: Imported nx-X11-3.1.0-1.tar.gz into Git repository --- .../Mesa/src/mesa/drivers/dri/r300/r300_shader.c | 112 +++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 nx-X11/extras/Mesa/src/mesa/drivers/dri/r300/r300_shader.c (limited to 'nx-X11/extras/Mesa/src/mesa/drivers/dri/r300/r300_shader.c') diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/r300/r300_shader.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/r300/r300_shader.c new file mode 100644 index 000000000..9c6788ec3 --- /dev/null +++ b/nx-X11/extras/Mesa/src/mesa/drivers/dri/r300/r300_shader.c @@ -0,0 +1,112 @@ +#include "glheader.h" +#include "macros.h" +#include "enums.h" + +#include "program.h" +#include "r300_context.h" +#include "nvvertprog.h" +#if USE_ARB_F_P == 1 +#include "r300_fragprog.h" +#endif + +static void r300BindProgram(GLcontext *ctx, GLenum target, struct program *prog) +{ + r300ContextPtr rmesa = R300_CONTEXT(ctx); + struct r300_vertex_program *vp=(void *)prog; + + switch(target){ + case GL_VERTEX_PROGRAM_ARB: +#if USE_ARB_F_P == 1 + case GL_FRAGMENT_PROGRAM_ARB: +#endif + //rmesa->current_vp = vp; + break; + default: + WARN_ONCE("Target not supported yet!\n"); + break; + } +} + +static struct program *r300NewProgram(GLcontext *ctx, GLenum target, GLuint id) +{ + struct r300_vertex_program *vp; +#if USE_ARB_F_P == 1 + struct r300_fragment_program *fp; +#else + struct fragment_program *fp; +#endif + 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: +#if USE_ARB_F_P == 1 + fp=CALLOC_STRUCT(r300_fragment_program); + fp->ctx = ctx; + return _mesa_init_fragment_program(ctx, &fp->mesa_program, target, id); +#else + fp=CALLOC_STRUCT(fragment_program); + return _mesa_init_fragment_program(ctx, fp, target, id); +#endif + 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); + } + + return NULL; +} + + +static void r300DeleteProgram(GLcontext *ctx, struct program *prog) +{ + //r300ContextPtr rmesa = R300_CONTEXT(ctx); + //struct r300_vertex_program *vp=(void *)prog; + + _mesa_delete_program(ctx, prog); +} + +static void r300ProgramStringNotify(GLcontext *ctx, GLenum target, + struct program *prog) +{ + struct r300_vertex_program *vp=(void *)prog; +#if USE_ARB_F_P == 1 + struct r300_fragment_program *fp=(void *)prog; +#endif + + switch(target) { + case GL_VERTEX_PROGRAM_ARB: + /*vp->translated=GL_FALSE; + translate_vertex_shader(vp);*/ + //debug_vp(ctx, vp); + break; + case GL_FRAGMENT_PROGRAM_ARB: +#if USE_ARB_F_P == 1 + fp->translated = GL_FALSE; +#endif + break; + } +} + +static GLboolean r300IsProgramNative(GLcontext *ctx, GLenum target, struct program *prog) +{ + //struct r300_vertex_program *vp=(void *)prog; + //r300ContextPtr rmesa = R300_CONTEXT(ctx); + + return 1; +} + +void r300InitShaderFuncs(struct dd_function_table *functions) +{ + functions->NewProgram=r300NewProgram; + functions->BindProgram=r300BindProgram; + functions->DeleteProgram=r300DeleteProgram; + functions->ProgramStringNotify=r300ProgramStringNotify; + functions->IsProgramNative=r300IsProgramNative; +} -- cgit v1.2.3