Re: [Mesa-dev] [PATCH] radeon: ensure that timing/profiling queries are suspended on flush

2015-11-19 Thread Marek Olšák
Reviewed-by: Marek Olšák 

Marek

On Wed, Nov 18, 2015 at 6:45 PM, Nicolai Hähnle  wrote:
> The queries_suspended_for_flush flag is redundant because suspended queries
> are not removed from their respective linked list.
> ---
>  src/gallium/drivers/radeon/r600_pipe_common.c | 13 ++---
>  src/gallium/drivers/radeon/r600_pipe_common.h |  2 --
>  2 files changed, 6 insertions(+), 9 deletions(-)
>
> diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c 
> b/src/gallium/drivers/radeon/r600_pipe_common.c
> index 60be412..f03dcd9 100644
> --- a/src/gallium/drivers/radeon/r600_pipe_common.c
> +++ b/src/gallium/drivers/radeon/r600_pipe_common.c
> @@ -27,6 +27,7 @@
>  #include "r600_pipe_common.h"
>  #include "r600_cs.h"
>  #include "tgsi/tgsi_parse.h"
> +#include "util/list.h"
>  #include "util/u_draw_quad.h"
>  #include "util/u_memory.h"
>  #include "util/u_format_s3tc.h"
> @@ -135,12 +136,10 @@ static void r600_memory_barrier(struct pipe_context 
> *ctx, unsigned flags)
>  void r600_preflush_suspend_features(struct r600_common_context *ctx)
>  {
> /* suspend queries */
> -   ctx->queries_suspended_for_flush = false;
> -   if (ctx->num_cs_dw_nontimer_queries_suspend) {
> +   if (!LIST_IS_EMPTY(>active_nontimer_queries))
> r600_suspend_nontimer_queries(ctx);
> +   if (!LIST_IS_EMPTY(>active_timer_queries))
> r600_suspend_timer_queries(ctx);
> -   ctx->queries_suspended_for_flush = true;
> -   }
>
> ctx->streamout.suspended = false;
> if (ctx->streamout.begin_emitted) {
> @@ -157,10 +156,10 @@ void r600_postflush_resume_features(struct 
> r600_common_context *ctx)
> }
>
> /* resume queries */
> -   if (ctx->queries_suspended_for_flush) {
> -   r600_resume_nontimer_queries(ctx);
> +   if (!LIST_IS_EMPTY(>active_timer_queries))
> r600_resume_timer_queries(ctx);
> -   }
> +   if (!LIST_IS_EMPTY(>active_nontimer_queries))
> +   r600_resume_nontimer_queries(ctx);
>  }
>
>  static void r600_flush_from_st(struct pipe_context *ctx,
> diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h 
> b/src/gallium/drivers/radeon/r600_pipe_common.h
> index f9fecdf..253d657 100644
> --- a/src/gallium/drivers/radeon/r600_pipe_common.h
> +++ b/src/gallium/drivers/radeon/r600_pipe_common.h
> @@ -397,8 +397,6 @@ struct r600_common_context {
> struct list_headactive_timer_queries;
> unsignednum_cs_dw_nontimer_queries_suspend;
> unsignednum_cs_dw_timer_queries_suspend;
> -   /* If queries have been suspended. */
> -   boolqueries_suspended_for_flush;
> /* Additional hardware info. */
> unsignedbackend_mask;
> unsignedmax_db; /* for OQ */
> --
> 2.5.0
>
> ___
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH] radeon: ensure that timing/profiling queries are suspended on flush

2015-11-18 Thread Nicolai Hähnle
The queries_suspended_for_flush flag is redundant because suspended queries
are not removed from their respective linked list.
---
 src/gallium/drivers/radeon/r600_pipe_common.c | 13 ++---
 src/gallium/drivers/radeon/r600_pipe_common.h |  2 --
 2 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c 
b/src/gallium/drivers/radeon/r600_pipe_common.c
index 60be412..f03dcd9 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.c
+++ b/src/gallium/drivers/radeon/r600_pipe_common.c
@@ -27,6 +27,7 @@
 #include "r600_pipe_common.h"
 #include "r600_cs.h"
 #include "tgsi/tgsi_parse.h"
+#include "util/list.h"
 #include "util/u_draw_quad.h"
 #include "util/u_memory.h"
 #include "util/u_format_s3tc.h"
@@ -135,12 +136,10 @@ static void r600_memory_barrier(struct pipe_context *ctx, 
unsigned flags)
 void r600_preflush_suspend_features(struct r600_common_context *ctx)
 {
/* suspend queries */
-   ctx->queries_suspended_for_flush = false;
-   if (ctx->num_cs_dw_nontimer_queries_suspend) {
+   if (!LIST_IS_EMPTY(>active_nontimer_queries))
r600_suspend_nontimer_queries(ctx);
+   if (!LIST_IS_EMPTY(>active_timer_queries))
r600_suspend_timer_queries(ctx);
-   ctx->queries_suspended_for_flush = true;
-   }
 
ctx->streamout.suspended = false;
if (ctx->streamout.begin_emitted) {
@@ -157,10 +156,10 @@ void r600_postflush_resume_features(struct 
r600_common_context *ctx)
}
 
/* resume queries */
-   if (ctx->queries_suspended_for_flush) {
-   r600_resume_nontimer_queries(ctx);
+   if (!LIST_IS_EMPTY(>active_timer_queries))
r600_resume_timer_queries(ctx);
-   }
+   if (!LIST_IS_EMPTY(>active_nontimer_queries))
+   r600_resume_nontimer_queries(ctx);
 }
 
 static void r600_flush_from_st(struct pipe_context *ctx,
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h 
b/src/gallium/drivers/radeon/r600_pipe_common.h
index f9fecdf..253d657 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.h
+++ b/src/gallium/drivers/radeon/r600_pipe_common.h
@@ -397,8 +397,6 @@ struct r600_common_context {
struct list_headactive_timer_queries;
unsignednum_cs_dw_nontimer_queries_suspend;
unsignednum_cs_dw_timer_queries_suspend;
-   /* If queries have been suspended. */
-   boolqueries_suspended_for_flush;
/* Additional hardware info. */
unsignedbackend_mask;
unsignedmax_db; /* for OQ */
-- 
2.5.0

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev