summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/svga/svga_swtnl_state.c
diff options
context:
space:
mode:
authorMatthew McClure <[email protected]>2013-10-29 13:36:41 -0700
committerJosé Fonseca <[email protected]>2013-11-07 18:32:54 +0000
commitf9e2c24326869542c9b43220f63dd9841c6de38f (patch)
treebd208be0c8a880c0665c6672138083e00eeef680 /src/gallium/drivers/svga/svga_swtnl_state.c
parent185b5a54c94ce11487146042c8eec24909187ed6 (diff)
draw,llvmpipe,util: add depth bias calculation for arb_depth_buffer_float
With this patch, the llvmpipe and draw modules will calculate the depth bias according to floating point depth buffer semantics described in the arb_depth_buffer_float specification, when the driver has a z buffer bound with a format type of UTIL_FORMAT_TYPE_FLOAT. By default, the driver will use the existing UNORM calculation for depth bias. A new function, draw_set_zs_format, was added to calculate the Minimum Resolvable Depth value and floating point depth sense for the draw module. Reviewed-by: Jose Fonseca <[email protected]> Reviewed-by: Roland Scheidegger <[email protected]>
Diffstat (limited to 'src/gallium/drivers/svga/svga_swtnl_state.c')
-rw-r--r--src/gallium/drivers/svga/svga_swtnl_state.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/gallium/drivers/svga/svga_swtnl_state.c b/src/gallium/drivers/svga/svga_swtnl_state.c
index d66f1a1515a..e62698e11f4 100644
--- a/src/gallium/drivers/svga/svga_swtnl_state.c
+++ b/src/gallium/drivers/svga/svga_swtnl_state.c
@@ -121,9 +121,15 @@ update_swtnl_draw( struct svga_context *svga,
&svga->curr.rast->templ,
(void *) svga->curr.rast);
+ /* Tell the draw module how deep the Z/depth buffer is.
+ *
+ * If no depth buffer is bound, send the utility function the
+ * format for no bound depth (PIPE_FORMAT_NONE).
+ */
if (dirty & SVGA_NEW_FRAME_BUFFER)
- draw_set_mrd(svga->swtnl.draw,
- svga->curr.depthscale);
+ draw_set_zs_format(svga->swtnl.draw,
+ (svga->curr.framebuffer.zsbuf) ?
+ svga->curr.framebuffer.zsbuf->format : PIPE_FORMAT_NONE);
return PIPE_OK;
}