summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/llvmpipe/lp_state_surface.c
diff options
context:
space:
mode:
authorMatthew McClure <mcclurem@vmware.com>2013-10-22 15:48:00 -0700
committerJosé Fonseca <jfonseca@vmware.com>2013-10-29 15:53:48 +0000
commitbe0b67a1436eb2b899f9874725b2a68eb26f9f3f (patch)
tree0520a19b3579cc98ec2e61fef69934782625602e /src/gallium/drivers/llvmpipe/lp_state_surface.c
parentd0eaf6752d6faa8a17e3270b9e64b7c09ef705c2 (diff)
downloadexternal_mesa3d-be0b67a1436eb2b899f9874725b2a68eb26f9f3f.zip
external_mesa3d-be0b67a1436eb2b899f9874725b2a68eb26f9f3f.tar.gz
external_mesa3d-be0b67a1436eb2b899f9874725b2a68eb26f9f3f.tar.bz2
util,llvmpipe: correctly set the minimum representable depth value
Reviewed-by: Roland Scheidegger <sroland@vmware.com> Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_state_surface.c')
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_surface.c31
1 files changed, 12 insertions, 19 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_state_surface.c b/src/gallium/drivers/llvmpipe/lp_state_surface.c
index e6aac31..8909841 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_surface.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_surface.c
@@ -57,31 +57,24 @@ llvmpipe_set_framebuffer_state(struct pipe_context *pipe,
assert(fb->height <= LP_MAX_HEIGHT);
if (changed) {
-
util_copy_framebuffer_state(&lp->framebuffer, fb);
if (LP_PERF & PERF_NO_DEPTH) {
pipe_surface_reference(&lp->framebuffer.zsbuf, NULL);
}
- /* Tell draw module how deep the Z/depth buffer is */
- /* FIXME: mrd constant isn't right should use a value derived from
- * current primitive not a constant (for float depth buffers) */
- if (lp->framebuffer.zsbuf) {
- int depth_bits;
- double mrd;
- depth_bits = util_format_get_component_bits(lp->framebuffer.zsbuf->format,
- UTIL_FORMAT_COLORSPACE_ZS,
- 0);
- if (depth_bits > 16) {
- mrd = 0.0000001;
- }
- else {
- mrd = 0.00002;
- }
- lp->mrd = mrd;
- draw_set_mrd(lp->draw, mrd);
- }
+ /* Tell draw module how deep the Z/depth buffer is.
+ *
+ * If no depth buffer is bound, send the utility function the default
+ * format for no bound depth (PIPE_FORMAT_NONE).
+ *
+ * FIXME: mrd constant isn't right should use a value derived from
+ * current primitive not a constant (for float depth buffers)
+ */
+ lp->mrd = util_get_depth_format_mrd((lp->framebuffer.zsbuf) ?
+ lp->framebuffer.zsbuf->format : PIPE_FORMAT_NONE);
+
+ draw_set_mrd(lp->draw, lp->mrd);
lp_setup_bind_framebuffer( lp->setup, &lp->framebuffer );