From 1f7bc87391bc42eb9003020b7654e985494c6e61 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Tue, 8 Jun 2010 15:27:44 -0400 Subject: r600: Fill uiFP_OutputMap for all written fragment outputs. --- src/mesa/drivers/dri/r600/r700_fragprog.c | 33 ++++++++++++++++--------------- 1 file changed, 17 insertions(+), 16 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r600/r700_fragprog.c b/src/mesa/drivers/dri/r600/r700_fragprog.c index ee4d2828cff..80fab71cf8a 100644 --- a/src/mesa/drivers/dri/r600/r700_fragprog.c +++ b/src/mesa/drivers/dri/r600/r700_fragprog.c @@ -226,22 +226,23 @@ void Map_Fragment_Program(r700_AssemblerBase *pAsm, pAsm->number_of_exports = 0; pAsm->number_of_colorandz_exports = 0; /* don't include stencil and mask out. */ pAsm->starting_export_register_number = pAsm->number_used_registers; - unBit = 1 << FRAG_RESULT_COLOR; - if(mesa_fp->Base.OutputsWritten & unBit) - { - pAsm->uiFP_OutputMap[FRAG_RESULT_COLOR] = pAsm->number_used_registers++; - pAsm->number_of_exports++; - pAsm->number_of_colorandz_exports++; - } - unBit = 1 << FRAG_RESULT_DEPTH; - if(mesa_fp->Base.OutputsWritten & unBit) - { - pAsm->depth_export_register_number = pAsm->number_used_registers; - pAsm->uiFP_OutputMap[FRAG_RESULT_DEPTH] = pAsm->number_used_registers++; - pAsm->number_of_exports++; - pAsm->number_of_colorandz_exports++; - pAsm->pR700Shader->depthIsExported = 1; - } + + for (i = 0; i < FRAG_RESULT_MAX; ++i) + { + unBit = 1 << i; + if (mesa_fp->Base.OutputsWritten & unBit) + { + if (i == FRAG_RESULT_DEPTH) + { + pAsm->depth_export_register_number = pAsm->number_used_registers; + pAsm->pR700Shader->depthIsExported = 1; + } + + pAsm->uiFP_OutputMap[i] = pAsm->number_used_registers++; + ++pAsm->number_of_exports; + ++pAsm->number_of_colorandz_exports; + } + } pAsm->pucOutMask = (unsigned char*) MALLOC(pAsm->number_of_exports); for(ui=0; uinumber_of_exports; ui++) -- cgit v1.2.3