summaryrefslogtreecommitdiff
path: root/src/mesa/state_tracker/st_cb_drawpixels.c
diff options
context:
space:
mode:
authorBrian <brian.paul@tungstengraphics.com>2007-09-18 19:37:36 -0600
committerBrian <brian.paul@tungstengraphics.com>2007-09-18 19:38:35 -0600
commitbb611c5f1f6aec7ac51d4fa3301422b47f6de795 (patch)
treea50b77cdfd0b62b4872465bd1a346ba0fbab1a38 /src/mesa/state_tracker/st_cb_drawpixels.c
parent63be96bdc7e9f388a5c49295bd7e150462fd003a (diff)
Checkpoint: rework shader input/output register mapping.
This is a step toward removing TGSI_ATTRIB_ tokens. Basically, when translating Mesa programs to TGSI programs, pass in input and output register re-maps, plus interpolation info. There's some known breakage (cubemap.c) so more to be done...
Diffstat (limited to 'src/mesa/state_tracker/st_cb_drawpixels.c')
-rw-r--r--src/mesa/state_tracker/st_cb_drawpixels.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index 37e40636f6..731c060c11 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -56,10 +56,17 @@
static struct st_fragment_program *
make_fragment_shader(struct st_context *st)
{
+ static const GLuint outputMapping[2] = { 1, 0 };
GLcontext *ctx = st->ctx;
struct st_fragment_program *stfp;
struct gl_program *p;
GLboolean b;
+ GLuint interpMode[16];
+ GLuint i;
+
+ /* XXX temporary */
+ for (i = 0; i < 16; i++)
+ interpMode[i] = TGSI_INTERPOLATE_LINEAR;
p = ctx->Driver.NewProgram(ctx, GL_FRAGMENT_PROGRAM_ARB, 0);
if (!p)
@@ -88,7 +95,8 @@ make_fragment_shader(struct st_context *st)
stfp = (struct st_fragment_program *) p;
/* compile into tgsi format */
- b = tgsi_mesa_compile_fp_program(&stfp->Base,
+ b = tgsi_mesa_compile_fp_program(&stfp->Base, NULL, interpMode,
+ outputMapping,
stfp->tokens, ST_FP_MAX_TOKENS);
assert(b);
@@ -103,6 +111,8 @@ make_fragment_shader(struct st_context *st)
static struct st_vertex_program *
make_vertex_shader(struct st_context *st)
{
+ /* Map VERT_RESULT_HPOS to 0, VERT_RESULT_TEX0 to 1 */
+ static const GLuint outputMapping[] = { 0, 0, 0, 0, 1 };
GLcontext *ctx = st->ctx;
struct st_vertex_program *stvp;
struct gl_program *p;
@@ -140,7 +150,8 @@ make_vertex_shader(struct st_context *st)
stvp = (struct st_vertex_program *) p;
/* compile into tgsi format */
- b = tgsi_mesa_compile_vp_program(&stvp->Base,
+ b = tgsi_mesa_compile_vp_program(&stvp->Base, NULL,
+ outputMapping,
stvp->tokens, ST_FP_MAX_TOKENS);
assert(b);