Mesa (master): llvmpipe: Ensure FTZ/ DAZ flags are set on deferred draw flushes.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Mon Jul 22 17:15:08 UTC 2013


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

Author: Zack Rusin <zackr at vmware.com>
Date:   Mon Jul 22 18:08:48 2013 +0100

llvmpipe: Ensure FTZ/DAZ flags are set on deferred draw flushes.

Tested-by: José Fonseca <jfonseca at vmware.com>

---

 src/gallium/drivers/llvmpipe/lp_rast.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c
index 772c9d7..49cdbfe 100644
--- a/src/gallium/drivers/llvmpipe/lp_rast.c
+++ b/src/gallium/drivers/llvmpipe/lp_rast.c
@@ -697,6 +697,12 @@ lp_rast_queue_scene( struct lp_rasterizer *rast,
 
    if (rast->num_threads == 0) {
       /* no threading */
+      unsigned fpstate = util_fpstate_get();
+
+      /* Make sure that denorms are treated like zeros. This is 
+       * the behavior required by D3D10. OpenGL doesn't care.
+       */
+      util_fpstate_set_denorms_to_zero(fpstate);
 
       lp_rast_begin( rast, scene );
 
@@ -704,6 +710,8 @@ lp_rast_queue_scene( struct lp_rasterizer *rast,
 
       lp_rast_end( rast );
 
+      util_fpstate_set(fpstate);
+
       rast->curr_scene = NULL;
    }
    else {




More information about the mesa-commit mailing list