Mesa (main): freedreno/blitter: Flush before self-blits
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Jun 17 19:52:06 UTC 2021
Module: Mesa
Branch: main
Commit: 70d571e558cb6e32e8631ca51f98920d4dfaeeba
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=70d571e558cb6e32e8631ca51f98920d4dfaeeba
Author: Rob Clark <robdclark at chromium.org>
Date: Wed Jun 16 10:05:45 2021 -0700
freedreno/blitter: Flush before self-blits
In paths where we are handling blits on the 3d pipe, if src==dst we need
to flush to ensure what gets sampled by the blit shader reflects the
results of any previous blits.
Signed-off-by: Rob Clark <robdclark at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11402>
---
.../freedreno/ci/piglit-freedreno-a630-fails.txt | 112 ---------------------
src/gallium/drivers/freedreno/freedreno_blitter.c | 8 ++
2 files changed, 8 insertions(+), 112 deletions(-)
diff --git a/src/gallium/drivers/freedreno/ci/piglit-freedreno-a630-fails.txt b/src/gallium/drivers/freedreno/ci/piglit-freedreno-a630-fails.txt
index 62b342b55c8..b9f53eb752e 100644
--- a/src/gallium/drivers/freedreno/ci/piglit-freedreno-a630-fails.txt
+++ b/src/gallium/drivers/freedreno/ci/piglit-freedreno-a630-fails.txt
@@ -1,6 +1,5 @@
glx at glx_arb_create_context_es2_profile@invalid opengl es version,Fail
glx at glx_arb_create_context_robustness@invalid reset notification strategy,Fail
-glx at glx-copy-sub-buffer samples=2,Fail
glx at glx_ext_import_context@free context,Fail
glx at glx_ext_import_context@get context id,Fail
glx at glx_ext_import_context@get current display,Fail
@@ -594,117 +593,6 @@ spec at nv_copy_depth_to_color@nv_copy_depth_to_color 0 0x76356278,Crash
spec at nv_copy_depth_to_color@nv_copy_depth_to_color 1 0x223344ff,Crash
spec at nv_copy_depth_to_color@nv_copy_depth_to_color 1 0x76356278,Crash
spec at nv_copy_depth_to_color@nv_copy_depth_to_color,Crash
-spec at nv_copy_image@nv_copy_image-formats,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_ALPHA8/Destination: GL_ALPHA8,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_ALPHA/Destination: GL_ALPHA,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_LUMINANCE8_ALPHA8/Destination: GL_LUMINANCE8_ALPHA8,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_LUMINANCE8/Destination: GL_LUMINANCE8,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_LUMINANCE_ALPHA/Destination: GL_LUMINANCE_ALPHA,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_LUMINANCE/Destination: GL_LUMINANCE,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_R16/Destination: GL_R16,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_R16I/Destination: GL_R16I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_R16_SNORM/Destination: GL_R16_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_R16UI/Destination: GL_R16UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_R32F/Destination: GL_R32F,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_R8/Destination: GL_R8,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_R8I/Destination: GL_R8I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_R8_SNORM/Destination: GL_R8_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_R8UI/Destination: GL_R8UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RED/Destination: GL_RED,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RG16/Destination: GL_RG16,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RG16I/Destination: GL_RG16I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RG16_SNORM/Destination: GL_RG16_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RG16UI/Destination: GL_RG16UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RG32F/Destination: GL_RG32F,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RG32I/Destination: GL_RG32I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RG32UI/Destination: GL_RG32UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RG8/Destination: GL_RG8,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RG8I/Destination: GL_RG8I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RG8_SNORM/Destination: GL_RG8_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RG8UI/Destination: GL_RG8UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGB16/Destination: GL_RGB16,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGB16I/Destination: GL_RGB16I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGB16_SNORM/Destination: GL_RGB16_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGB16UI/Destination: GL_RGB16UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGB32F/Destination: GL_RGB32F,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGB32I/Destination: GL_RGB32I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGB32UI/Destination: GL_RGB32UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGB8/Destination: GL_RGB8,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGB8I/Destination: GL_RGB8I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGB8_SNORM/Destination: GL_RGB8_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGB8UI/Destination: GL_RGB8UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGBA16/Destination: GL_RGBA16,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGBA16I/Destination: GL_RGBA16I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGBA16_SNORM/Destination: GL_RGBA16_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGBA16UI/Destination: GL_RGBA16UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGBA32F/Destination: GL_RGBA32F,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGBA32I/Destination: GL_RGBA32I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGBA32UI/Destination: GL_RGBA32UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGBA8/Destination: GL_RGBA8,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGBA8I/Destination: GL_RGBA8I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGBA8_SNORM/Destination: GL_RGBA8_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGBA8UI/Destination: GL_RGBA8UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGBA/Destination: GL_RGBA,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RGB/Destination: GL_RGB,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=2 at Source: GL_RG/Destination: GL_RG,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_ALPHA8/Destination: GL_ALPHA8,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_ALPHA/Destination: GL_ALPHA,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_LUMINANCE8_ALPHA8/Destination: GL_LUMINANCE8_ALPHA8,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_LUMINANCE8/Destination: GL_LUMINANCE8,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_LUMINANCE_ALPHA/Destination: GL_LUMINANCE_ALPHA,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_LUMINANCE/Destination: GL_LUMINANCE,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_R16/Destination: GL_R16,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_R16I/Destination: GL_R16I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_R16_SNORM/Destination: GL_R16_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_R16UI/Destination: GL_R16UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_R32F/Destination: GL_R32F,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_R8/Destination: GL_R8,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_R8I/Destination: GL_R8I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_R8_SNORM/Destination: GL_R8_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_R8UI/Destination: GL_R8UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RED/Destination: GL_RED,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RG16/Destination: GL_RG16,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RG16I/Destination: GL_RG16I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RG16_SNORM/Destination: GL_RG16_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RG16UI/Destination: GL_RG16UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RG32F/Destination: GL_RG32F,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RG32I/Destination: GL_RG32I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RG32UI/Destination: GL_RG32UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RG8/Destination: GL_RG8,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RG8I/Destination: GL_RG8I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RG8_SNORM/Destination: GL_RG8_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RG8UI/Destination: GL_RG8UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGB16/Destination: GL_RGB16,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGB16I/Destination: GL_RGB16I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGB16_SNORM/Destination: GL_RGB16_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGB16UI/Destination: GL_RGB16UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGB32F/Destination: GL_RGB32F,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGB32I/Destination: GL_RGB32I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGB32UI/Destination: GL_RGB32UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGB8/Destination: GL_RGB8,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGB8I/Destination: GL_RGB8I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGB8_SNORM/Destination: GL_RGB8_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGB8UI/Destination: GL_RGB8UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGBA16/Destination: GL_RGBA16,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGBA16I/Destination: GL_RGBA16I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGBA16_SNORM/Destination: GL_RGBA16_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGBA16UI/Destination: GL_RGBA16UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGBA32F/Destination: GL_RGBA32F,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGBA32I/Destination: GL_RGBA32I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGBA32UI/Destination: GL_RGBA32UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGBA8/Destination: GL_RGBA8,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGBA8I/Destination: GL_RGBA8I,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGBA8_SNORM/Destination: GL_RGBA8_SNORM,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGBA8UI/Destination: GL_RGBA8UI,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGBA/Destination: GL_RGBA,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RGB/Destination: GL_RGB,Fail
-spec at nv_copy_image@nv_copy_image-formats --samples=4 at Source: GL_RG/Destination: GL_RG,Fail
-spec at nv_copy_image@nv_copy_image-formats at Source: GL_DEPTH_COMPONENT24/Destination: GL_DEPTH_COMPONENT24,Fail
-spec at nv_copy_image@nv_copy_image-formats at Source: GL_DEPTH_COMPONENT32/Destination: GL_DEPTH_COMPONENT32,Fail
-spec at nv_copy_image@nv_copy_image-formats at Source: GL_DEPTH_STENCIL/Destination: GL_DEPTH_STENCIL,Fail
-spec at nv_copy_image@nv_copy_image-formats at Source: GL_STENCIL_INDEX8/Destination: GL_STENCIL_INDEX8,Fail
spec at nv_primitive_restart@primitive-restart-draw-mode-polygon,Fail
spec at nv_primitive_restart@primitive-restart-draw-mode-quads,Fail
spec at nv_primitive_restart@primitive-restart-draw-mode-quad_strip,Fail
diff --git a/src/gallium/drivers/freedreno/freedreno_blitter.c b/src/gallium/drivers/freedreno/freedreno_blitter.c
index f9271e7fa45..e1eb343864a 100644
--- a/src/gallium/drivers/freedreno/freedreno_blitter.c
+++ b/src/gallium/drivers/freedreno/freedreno_blitter.c
@@ -142,6 +142,9 @@ fd_blitter_blit(struct fd_context *ctx, const struct pipe_blit_info *info)
ctx->validate_format(ctx, fd_resource(src), info->src.format);
}
+ if (src == dst)
+ pipe->flush(pipe, NULL, 0);
+
if (!info->scissor_enable && !info->alpha_blend) {
discard = util_texrange_covers_whole_level(
info->dst.resource, info->dst.level, info->dst.box.x, info->dst.box.y,
@@ -320,6 +323,11 @@ fd_blitter_pipe_copy_region(struct fd_context *ctx, struct pipe_resource *dst,
if (!util_blitter_is_copy_supported(ctx->blitter, dst, src))
return false;
+ if (src == dst) {
+ struct pipe_context *pctx = &ctx->base;
+ pctx->flush(pctx, NULL, 0);
+ }
+
/* TODO we could discard if dst box covers dst level fully.. */
fd_blitter_pipe_begin(ctx, false, false);
util_blitter_copy_texture(ctx->blitter, dst, dst_level, dstx, dsty, dstz,
More information about the mesa-commit
mailing list