i965: Fix fast depth clear values on Broadwell.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 7 Feb 2014 21:56:27 +0000 (13:56 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 8 Feb 2014 03:36:14 +0000 (19:36 -0800)
Broadwell's 3DSTATE_CLEAR_PARAMS packet expects a floating point value
regardless of format.  This means we need to stop converting it to
UNORM.

Storing the value as float would make sense, but since we already have a
uint32_t field, this patch continues shoehorning it into that.  In a
sense, this makes mt->depth_clear_value the DWord you emit in the
packet, rather than the clear value itself.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_clear.c

index 953e9bae14ecf566eb13f34cdc1bd0ec2c0de6da..523fca2c1e81d6adcf7148b356d36aaabefae7c6 100644 (file)
@@ -160,7 +160,10 @@ brw_fast_clear_depth(struct gl_context *ctx)
       /* FALLTHROUGH */
 
    default:
-      depth_clear_value = fb->_DepthMax * ctx->Depth.Clear;
+      if (brw->gen >= 8)
+         depth_clear_value = float_as_int(ctx->Depth.Clear);
+      else
+         depth_clear_value = fb->_DepthMax * ctx->Depth.Clear;
       break;
    }