Mesa (master): i965/gen6+: Work around GPU hangs with logic ops on integer textures.

Eric Anholt anholt at kemper.freedesktop.org
Wed Jan 25 00:54:57 UTC 2012


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

Author: Eric Anholt <eric at anholt.net>
Date:   Fri Jan 20 13:19:10 2012 -0800

i965/gen6+: Work around GPU hangs with logic ops on integer textures.

This doesn't result in correct rendering -- GL requires that logic ops
work, while the hardware specs say it doesn't do them.  I'm not sure
how we would want to handle this.

NOTE: This is a candidate for the 8.0 branch.

---

 src/mesa/drivers/dri/i965/gen6_cc.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/gen6_cc.c b/src/mesa/drivers/dri/i965/gen6_cc.c
index dada09c..8a805fa 100644
--- a/src/mesa/drivers/dri/i965/gen6_cc.c
+++ b/src/mesa/drivers/dri/i965/gen6_cc.c
@@ -79,9 +79,14 @@ gen6_upload_blend_state(struct brw_context *brw)
       /* _NEW_COLOR */
       if (ctx->Color.ColorLogicOpEnabled) {
 	 /* Floating point RTs should have no effect from LogicOp,
-	  * except for disabling of blending
+	  * except for disabling of blending.
+	  *
+	  * From the Sandy Bridge PRM, Vol 2 Par 1, Section 8.1.11, "Logic Ops",
+	  *
+	  *     "Logic Ops are only supported on *_UNORM surfaces (excluding
+	  *      _SRGB variants), otherwise Logic Ops must be DISABLED."
 	  */
-	 if (rb_type != GL_FLOAT) {
+	 if (rb_type == GL_UNSIGNED_NORMALIZED) {
 	    blend[b].blend1.logic_op_enable = 1;
 	    blend[b].blend1.logic_op_func =
 	       intel_translate_logic_op(ctx->Color.LogicOp);




More information about the mesa-commit mailing list