iris: Use converted depth in clear_depth_stencil
authorNanley Chery <nanley.g.chery@intel.com>
Wed, 14 Oct 2020 17:45:57 +0000 (10:45 -0700)
committerMarge Bot <eric+marge@anholt.net>
Fri, 13 Nov 2020 18:41:53 +0000 (18:41 +0000)
Until recently, the depth value from glClearBufferfv wasn't clamped.

Before then, this patch enabled the driver to fail the clearbuffer-depth
piglit test with INTEL_DEBUG=nofc. This is because convert_depth_value
relies on the assumption that the depth value is clamped.

Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7410>

src/gallium/drivers/iris/iris_clear.c

index dbb808d..eaffcb8 100644 (file)
@@ -464,11 +464,8 @@ fast_clear_depth(struct iris_context *ice,
                  const struct pipe_box *box,
                  float depth)
 {
-   struct pipe_resource *p_res = (void *) res;
    struct iris_batch *batch = &ice->batches[IRIS_BATCH_RENDER];
 
-   depth = convert_depth_value(p_res->format, depth);
-
    bool update_clear_depth = false;
 
    /* If we're clearing to a new clear value, then we need to resolve any clear
@@ -690,7 +687,7 @@ iris_clear(struct pipe_context *ctx,
       clear_depth_stencil(ice, psurf->texture, psurf->u.tex.level, &box, true,
                           buffers & PIPE_CLEAR_DEPTH,
                           buffers & PIPE_CLEAR_STENCIL,
-                          depth, stencil);
+                          convert_depth_value(psurf->format, depth), stencil);
    }
 
    if (buffers & PIPE_CLEAR_COLOR) {
@@ -837,7 +834,7 @@ iris_clear_depth_stencil(struct pipe_context *ctx,
    clear_depth_stencil(ice, psurf->texture, psurf->u.tex.level, &box,
                        render_condition_enabled,
                        flags & PIPE_CLEAR_DEPTH, flags & PIPE_CLEAR_STENCIL,
-                       depth, stencil);
+                       convert_depth_value(psurf->format, depth), stencil);
 }
 
 void