From 3aa69b39bf9a79f97f1e049e3a8429cdfc4389f4 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Sun, 30 Jan 2005 06:24:30 +0000 Subject: [PATCH] add number of passes count to ati_fragment_shader --- src/mesa/main/mtypes.h | 1 + src/mesa/shader/atifragshader.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index dc3dcbb..416f77d 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -1756,6 +1756,7 @@ struct ati_fragment_shader struct program Base; struct atifs_instruction *Instructions; GLfloat Constants[8][4]; + GLint NumPasses; GLint cur_pass; }; diff --git a/src/mesa/shader/atifragshader.c b/src/mesa/shader/atifragshader.c index 2a8cf90..d8df8f5 100644 --- a/src/mesa/shader/atifragshader.c +++ b/src/mesa/shader/atifragshader.c @@ -231,7 +231,8 @@ _mesa_EndFragmentShaderATI(void) #endif ctx->ATIFragmentShader.Compiling = 0; - + ctx->ATIFragmentShader.Current->NumPasses = ctx->ATIFragmentShader.Current->cur_pass; + ctx->ATIFragmentShader.Current->cur_pass=0; #if MESA_DEBUG_ATI_FS for (i = 0; i < curProg->Base.NumInstructions; i++) { GLuint op0 = curProg->Instructions[i].Opcode[0]; @@ -255,6 +256,9 @@ _mesa_PassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle) GLint ci; struct atifs_instruction *curI; + if (ctx->ATIFragmentShader.Current->cur_pass==1) + ctx->ATIFragmentShader.Current->cur_pass=2; + new_inst(curProg); ci = curProg->Base.NumInstructions - 1; /* some validation @@ -287,6 +291,10 @@ _mesa_SampleMapATI(GLuint dst, GLuint interp, GLenum swizzle) GLint ci; struct atifs_instruction *curI; + if (ctx->ATIFragmentShader.Current->cur_pass==1) + ctx->ATIFragmentShader.Current->cur_pass=2; + + new_inst(curProg); ci = curProg->Base.NumInstructions - 1; @@ -318,6 +326,9 @@ _mesa_FragmentOpXATI(GLint optype, GLuint arg_count, GLenum op, GLuint dst, GLint ci; struct atifs_instruction *curI; + if (ctx->ATIFragmentShader.Current->cur_pass==0) + ctx->ATIFragmentShader.Current->cur_pass=1; + /* decide whether this is a new instruction or not ... all color instructions are new */ if (optype == 0) new_inst(curProg); -- 2.7.4