Module: Mesa
Branch: master
Commit: 2697480c923e4c811d9b9f11169de6be55ae38da
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2697480c923e4c811d9b9f11169de6be55ae38da

Author: Rob Clark <robdcl...@gmail.com>
Date:   Tue Nov 21 13:20:53 2017 -0500

freedreno: track staging and shadow perf ctrs for the HUD

Signed-off-by: Rob Clark <robdcl...@gmail.com>

---

 src/gallium/drivers/freedreno/freedreno_context.h  | 1 +
 src/gallium/drivers/freedreno/freedreno_query.c    | 2 ++
 src/gallium/drivers/freedreno/freedreno_query.h    | 2 ++
 src/gallium/drivers/freedreno/freedreno_query_sw.c | 8 ++++++++
 src/gallium/drivers/freedreno/freedreno_resource.c | 3 +++
 5 files changed, 16 insertions(+)

diff --git a/src/gallium/drivers/freedreno/freedreno_context.h 
b/src/gallium/drivers/freedreno/freedreno_context.h
index 2f501cf815..d8d23ad853 100644
--- a/src/gallium/drivers/freedreno/freedreno_context.h
+++ b/src/gallium/drivers/freedreno/freedreno_context.h
@@ -216,6 +216,7 @@ struct fd_context {
                uint64_t prims_generated;
                uint64_t draw_calls;
                uint64_t batch_total, batch_sysmem, batch_gmem, batch_restore;
+               uint64_t staging_uploads, shadow_uploads;
        } stats;
 
        /* Current batch.. the rule here is that you can deref ctx->batch
diff --git a/src/gallium/drivers/freedreno/freedreno_query.c 
b/src/gallium/drivers/freedreno/freedreno_query.c
index 0d7bc9f205..d76994e5d9 100644
--- a/src/gallium/drivers/freedreno/freedreno_query.c
+++ b/src/gallium/drivers/freedreno/freedreno_query.c
@@ -129,6 +129,8 @@ fd_get_driver_query_info(struct pipe_screen *pscreen,
                        {"batches-gmem", FD_QUERY_BATCH_GMEM, {0}},
                        {"restores", FD_QUERY_BATCH_RESTORE, {0}},
                        {"prims-emitted", PIPE_QUERY_PRIMITIVES_EMITTED, {0}},
+                       {"staging", FD_QUERY_STAGING_UPLOADS, {0}},
+                       {"shadow", FD_QUERY_SHADOW_UPLOADS, {0}},
        };
 
        if (!info)
diff --git a/src/gallium/drivers/freedreno/freedreno_query.h 
b/src/gallium/drivers/freedreno/freedreno_query.h
index a391a7a0ff..78717c6870 100644
--- a/src/gallium/drivers/freedreno/freedreno_query.h
+++ b/src/gallium/drivers/freedreno/freedreno_query.h
@@ -61,6 +61,8 @@ fd_query(struct pipe_query *pq)
 #define FD_QUERY_BATCH_SYSMEM    (PIPE_QUERY_DRIVER_SPECIFIC + 2)  /* batches 
using system memory (GMEM bypass) */
 #define FD_QUERY_BATCH_GMEM      (PIPE_QUERY_DRIVER_SPECIFIC + 3)  /* batches 
using GMEM */
 #define FD_QUERY_BATCH_RESTORE   (PIPE_QUERY_DRIVER_SPECIFIC + 4)  /* batches 
requiring GMEM restore */
+#define FD_QUERY_STAGING_UPLOADS (PIPE_QUERY_DRIVER_SPECIFIC + 5)  /* 
texture/buffer uploads using staging blit */
+#define FD_QUERY_SHADOW_UPLOADS  (PIPE_QUERY_DRIVER_SPECIFIC + 6)  /* 
texture/buffer uploads that shadowed rsc */
 
 void fd_query_screen_init(struct pipe_screen *pscreen);
 void fd_query_context_init(struct pipe_context *pctx);
diff --git a/src/gallium/drivers/freedreno/freedreno_query_sw.c 
b/src/gallium/drivers/freedreno/freedreno_query_sw.c
index 5096516114..93da2dc08e 100644
--- a/src/gallium/drivers/freedreno/freedreno_query_sw.c
+++ b/src/gallium/drivers/freedreno/freedreno_query_sw.c
@@ -67,6 +67,10 @@ read_counter(struct fd_context *ctx, int type)
                return ctx->stats.batch_gmem;
        case FD_QUERY_BATCH_RESTORE:
                return ctx->stats.batch_restore;
+       case FD_QUERY_STAGING_UPLOADS:
+               return ctx->stats.staging_uploads;
+       case FD_QUERY_SHADOW_UPLOADS:
+               return ctx->stats.shadow_uploads;
        }
        return 0;
 }
@@ -79,6 +83,8 @@ is_rate_query(struct fd_query *q)
        case FD_QUERY_BATCH_SYSMEM:
        case FD_QUERY_BATCH_GMEM:
        case FD_QUERY_BATCH_RESTORE:
+       case FD_QUERY_STAGING_UPLOADS:
+       case FD_QUERY_SHADOW_UPLOADS:
                return true;
        default:
                return false;
@@ -142,6 +148,8 @@ fd_sw_create_query(struct fd_context *ctx, unsigned 
query_type)
        case FD_QUERY_BATCH_SYSMEM:
        case FD_QUERY_BATCH_GMEM:
        case FD_QUERY_BATCH_RESTORE:
+       case FD_QUERY_STAGING_UPLOADS:
+       case FD_QUERY_SHADOW_UPLOADS:
                break;
        default:
                return NULL;
diff --git a/src/gallium/drivers/freedreno/freedreno_resource.c 
b/src/gallium/drivers/freedreno/freedreno_resource.c
index e1375d2483..a04c49b709 100644
--- a/src/gallium/drivers/freedreno/freedreno_resource.c
+++ b/src/gallium/drivers/freedreno/freedreno_resource.c
@@ -500,6 +500,7 @@ fd_resource_transfer_map(struct pipe_context *pctx,
                        if (needs_flush && fd_try_shadow_resource(ctx, rsc, 
level, box)) {
                                needs_flush = busy = false;
                                rebind_resource(ctx, prsc);
+                               ctx->stats.shadow_uploads++;
                        } else {
                                struct fd_resource *staging_rsc;
 
@@ -531,6 +532,8 @@ fd_resource_transfer_map(struct pipe_context *pctx,
 
                                        fd_batch_reference(&write_batch, NULL);
 
+                                       ctx->stats.staging_uploads++;
+
                                        return buf;
                                }
                        }

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to