diff options
author | Henri Verbeet <hverbeet@gmail.com> | 2010-06-08 15:27:44 -0400 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2010-06-08 15:40:25 -0400 |
commit | 1f7bc87391bc42eb9003020b7654e985494c6e61 (patch) | |
tree | 979c6d9c013c0627f939c358d4afc79bffeef452 /src/mesa/drivers | |
parent | e3c6d4108c278d4818920113cc3daecb8a0e5b59 (diff) |
r600: Fill uiFP_OutputMap for all written fragment outputs.
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r-- | src/mesa/drivers/dri/r600/r700_fragprog.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/src/mesa/drivers/dri/r600/r700_fragprog.c b/src/mesa/drivers/dri/r600/r700_fragprog.c index ee4d2828cf..80fab71cf8 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; ui<pAsm->number_of_exports; ui++) |