From c98ada6ad122e218136fa73f3fce9f3430d8a3c8 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Thu, 22 Apr 2021 15:17:37 -0700 Subject: [PATCH] freedreno/drm: Add FD_BO_PREP_FLUSH There are a couple cases where we want to use _NOSYNC, but at the same time we want to ensure that rendering related to a bo is actually flushed. This doesn't do anything yet, but when we start deferring/merging submits we'll need a way to trigger anything deferred to flush. Signed-off-by: Rob Clark Part-of: --- src/freedreno/drm/freedreno_drmif.h | 1 + src/gallium/drivers/freedreno/freedreno_query_acc.c | 2 +- src/gallium/drivers/freedreno/freedreno_query_hw.c | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/freedreno/drm/freedreno_drmif.h b/src/freedreno/drm/freedreno_drmif.h index 41ea98e9d77..9f5058c2a4c 100644 --- a/src/freedreno/drm/freedreno_drmif.h +++ b/src/freedreno/drm/freedreno_drmif.h @@ -72,6 +72,7 @@ enum fd_param_id { #define FD_BO_PREP_READ BITSET_BIT(0) #define FD_BO_PREP_WRITE BITSET_BIT(1) #define FD_BO_PREP_NOSYNC BITSET_BIT(2) +#define FD_BO_PREP_FLUSH BITSET_BIT(3) /* device functions: diff --git a/src/gallium/drivers/freedreno/freedreno_query_acc.c b/src/gallium/drivers/freedreno/freedreno_query_acc.c index c1db0f528d8..77268e6ab7c 100644 --- a/src/gallium/drivers/freedreno/freedreno_query_acc.c +++ b/src/gallium/drivers/freedreno/freedreno_query_acc.c @@ -170,7 +170,7 @@ fd_acc_get_query_result(struct fd_context *ctx, struct fd_query *q, bool wait, } ret = fd_resource_wait( - ctx, rsc, FD_BO_PREP_READ | FD_BO_PREP_NOSYNC); + ctx, rsc, FD_BO_PREP_READ | FD_BO_PREP_NOSYNC | FD_BO_PREP_FLUSH); if (ret) return false; diff --git a/src/gallium/drivers/freedreno/freedreno_query_hw.c b/src/gallium/drivers/freedreno/freedreno_query_hw.c index b70156a6beb..feab589e677 100644 --- a/src/gallium/drivers/freedreno/freedreno_query_hw.c +++ b/src/gallium/drivers/freedreno/freedreno_query_hw.c @@ -229,7 +229,7 @@ fd_hw_get_query_result(struct fd_context *ctx, struct fd_query *q, bool wait, return false; ret = fd_resource_wait( - ctx, rsc, FD_BO_PREP_READ | FD_BO_PREP_NOSYNC); + ctx, rsc, FD_BO_PREP_READ | FD_BO_PREP_NOSYNC | FD_BO_PREP_FLUSH); if (ret) return false;