Mesa (master): r600: A shader is bound that exports Z as a float into Red channel

Cooper Yuan cooperyuan at kemper.freedesktop.org
Wed Aug 12 09:40:19 UTC 2009


Module: Mesa
Branch: master
Commit: 1e52b8b4e02c887cb493e5e2bde902b54e9c72fd
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1e52b8b4e02c887cb493e5e2bde902b54e9c72fd

Author: Cooper Yuan <cooperyuan at gmail.com>
Date:   Wed Aug 12 17:39:18 2009 +0800

r600: A shader is bound that exports Z as a float into Red channel

---

 src/mesa/drivers/dri/r600/r700_assembler.c |    3 +++
 src/mesa/drivers/dri/r600/r700_fragprog.c  |    1 +
 2 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r600/r700_assembler.c b/src/mesa/drivers/dri/r600/r700_assembler.c
index 0abf112..eaacd06 100644
--- a/src/mesa/drivers/dri/r600/r700_assembler.c
+++ b/src/mesa/drivers/dri/r600/r700_assembler.c
@@ -3839,6 +3839,9 @@ GLboolean Process_Export(r700_AssemblerBase* pAsm,
     if (export_count == 1) 
     {
         ucWriteMask = pAsm->pucOutMask[starting_register_number - pAsm->starting_export_register_number];
+	/* exports Z as a float into Red channel */
+	if (GL_TRUE == is_depth_export)
+	    ucWriteMask = 0x1;
 
         if( (ucWriteMask & 0x1) != 0)
         {
diff --git a/src/mesa/drivers/dri/r600/r700_fragprog.c b/src/mesa/drivers/dri/r600/r700_fragprog.c
index efeea90..6249bde 100644
--- a/src/mesa/drivers/dri/r600/r700_fragprog.c
+++ b/src/mesa/drivers/dri/r600/r700_fragprog.c
@@ -118,6 +118,7 @@ void Map_Fragment_Program(r700_AssemblerBase         *pAsm,
 		pAsm->uiFP_OutputMap[FRAG_RESULT_DEPTH] = pAsm->number_used_registers++;
 		pAsm->number_of_exports++;
 		pAsm->number_of_colorandz_exports++;
+		pAsm->pR700Shader->depthIsExported = 1;
 	}
 
     pAsm->pucOutMask = (unsigned char*) MALLOC(pAsm->number_of_exports);    




More information about the mesa-commit mailing list