Module: Mesa Branch: 8.0 Commit: 29c67f920356553759e79f29e1e4648e4d389adf URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=29c67f920356553759e79f29e1e4648e4d389adf
Author: Brian Paul <[email protected]> Date: Fri Jun 8 14:26:53 2012 -0600 st/mesa: fix glDrawPixels(GL_DEPTH_COMPONENT) color output When drawing a depth image the fragment shader also needs to emit the current raster color. The new piglit drawpix-z test exercises this. NOTE: This is a candiate for the 8.0 branch. (cherry picked from commit f677954e07c6c1fd59b13622a7420c97d68a6029) --- src/mesa/state_tracker/st_cb_drawpixels.c | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c index 04d451b..d4992a7 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -215,7 +215,7 @@ st_make_drawpix_z_stencil_program(struct st_context *st, if (!p) return NULL; - p->NumInstructions = write_depth ? 2 : 1; + p->NumInstructions = write_depth ? 3 : 1; p->NumInstructions += write_stencil ? 1 : 0; p->Instructions = _mesa_alloc_instructions(p->NumInstructions); @@ -236,6 +236,13 @@ st_make_drawpix_z_stencil_program(struct st_context *st, p->Instructions[ic].TexSrcUnit = 0; p->Instructions[ic].TexSrcTarget = TEXTURE_2D_INDEX; ic++; + /* MOV result.color, fragment.color; */ + p->Instructions[ic].Opcode = OPCODE_MOV; + p->Instructions[ic].DstReg.File = PROGRAM_OUTPUT; + p->Instructions[ic].DstReg.Index = FRAG_RESULT_COLOR; + p->Instructions[ic].SrcReg[0].File = PROGRAM_INPUT; + p->Instructions[ic].SrcReg[0].Index = FRAG_ATTRIB_COL0; + ic++; } if (write_stencil) { @@ -258,8 +265,10 @@ st_make_drawpix_z_stencil_program(struct st_context *st, p->InputsRead = FRAG_BIT_TEX0 | FRAG_BIT_COL0; p->OutputsWritten = 0; - if (write_depth) + if (write_depth) { p->OutputsWritten |= BITFIELD64_BIT(FRAG_RESULT_DEPTH); + p->OutputsWritten |= BITFIELD64_BIT(FRAG_RESULT_COLOR); + } if (write_stencil) p->OutputsWritten |= BITFIELD64_BIT(FRAG_RESULT_STENCIL); _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
