st/mesa: fix st_CopyPixels without support for stencil exports
authorKarol Herbst <kherbst@redhat.com>
Thu, 16 Jul 2020 18:22:58 +0000 (20:22 +0200)
committerMarge Bot <eric+marge@anholt.net>
Fri, 17 Jul 2020 00:44:36 +0000 (00:44 +0000)
Fixes: f611af35948e ("st/mesa: use fragment shader to copy stencil buffer")
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5940>

src/mesa/state_tracker/st_cb_drawpixels.c

index 0537c6d24c8e3bcbb7427f9b184a8db15102cf89..366c324800f32608ce0d40a0596adc52e9eda587 100644 (file)
@@ -1724,6 +1724,13 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy,
       return;
    }
 
+   /* fallback if the driver can't do stencil exports */
+   if (type == GL_STENCIL &&
+       !pipe->screen->get_param(pipe->screen, PIPE_CAP_SHADER_STENCIL_EXPORT)) {
+      copy_stencil_pixels(ctx, srcx, srcy, width, height, dstx, dsty);
+      return;
+   }
+
    /*
     * The subsequent code implements glCopyPixels by copying the source
     * pixels into a temporary texture that's then applied to a textured quad.