summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>2019-02-25 03:31:29 +0000
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>2019-02-27 03:56:38 +0000
commit4c82abb9b603af1d799d8e3864ff7c7e846fa6ee (patch)
tree17b552094a260971cd0c93857148163f9e2b30ff
parent60270c83b5e759e4b5edbe5270fe26d52a3967d0 (diff)
panfrost: Expose perf counters in environment
Previously, we were guarded by an #ifdef, which is generally a bad form. This patch instead guards them behind an environmental variable. Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
-rw-r--r--src/gallium/drivers/panfrost/pan_context.c9
-rw-r--r--src/gallium/drivers/panfrost/pan_screen.c13
-rw-r--r--src/gallium/drivers/panfrost/pan_screen.h2
3 files changed, 11 insertions, 13 deletions
diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index 9c0f0420e2b..0676ef0497a 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -43,9 +43,8 @@
#include "pan_blend_shaders.h"
#include "pan_wallpaper.h"
-#ifdef DUMP_PERFORMANCE_COUNTERS
static int performance_counter_number = 0;
-#endif
+extern const char *pan_counters_base;
/* Do not actually send anything to the GPU; merely generate the cmdstream as fast as possible. Disables framebuffer writes */
//#define DRY_RUN
@@ -1586,17 +1585,15 @@ panfrost_submit_frame(struct panfrost_context *ctx, bool flush_immediate)
if (panfrost_is_scanout(ctx) && flush_immediate)
screen->driver->force_flush_fragment(ctx);
-#ifdef DUMP_PERFORMANCE_COUNTERS
- if (screen->driver->dump_counters) {
+ if (screen->driver->dump_counters && pan_counters_base) {
screen->driver->dump_counters(screen);
char filename[128];
- snprintf(filename, sizeof(filename), "/dev/shm/frame%d.mdgprf", ++performance_counter_number);
+ snprintf(filename, sizeof(filename), "%s/frame%d.mdgprf", pan_counters_base, ++performance_counter_number);
FILE *fp = fopen(filename, "wb");
fwrite(screen->perf_counters.cpu, 4096, sizeof(uint32_t), fp);
fclose(fp);
}
-#endif
#endif
}
diff --git a/src/gallium/drivers/panfrost/pan_screen.c b/src/gallium/drivers/panfrost/pan_screen.c
index f61758d1bb9..b8a119fd343 100644
--- a/src/gallium/drivers/panfrost/pan_screen.c
+++ b/src/gallium/drivers/panfrost/pan_screen.c
@@ -53,6 +53,8 @@
struct panfrost_driver *panfrost_create_drm_driver(int fd);
struct panfrost_driver *panfrost_create_nondrm_driver(int fd);
+const char *pan_counters_base = NULL;
+
static const char *
panfrost_get_name(struct pipe_screen *screen)
{
@@ -551,17 +553,18 @@ panfrost_create_screen(int fd, struct renderonly *ro, bool is_drm)
#endif
}
- /* Enable pantrace iff asked for in the environment */
+ /* Dump memory and/or performance counters iff asked for in the environment */
const char *pantrace_base = getenv("PANTRACE_BASE");
+ pan_counters_base = getenv("PANCOUNTERS_BASE");
if (pantrace_base) {
pantrace_initialize(pantrace_base);
}
-#ifdef DUMP_PERFORMANCE_COUNTERS
- screen->driver->allocate_slab(screen, &screen->perf_counters, 64, true, 0, 0, 0);
- screen->driver->enable_counters(screen);
-#endif
+ if (pan_counters_base) {
+ screen->driver->allocate_slab(screen, &screen->perf_counters, 64, true, 0, 0, 0);
+ screen->driver->enable_counters(screen);
+ }
screen->base.destroy = panfrost_destroy_screen;
diff --git a/src/gallium/drivers/panfrost/pan_screen.h b/src/gallium/drivers/panfrost/pan_screen.h
index e976b78b5a2..0005b2feb15 100644
--- a/src/gallium/drivers/panfrost/pan_screen.h
+++ b/src/gallium/drivers/panfrost/pan_screen.h
@@ -41,8 +41,6 @@ struct panfrost_context;
struct panfrost_resource;
struct panfrost_screen;
-//#define DUMP_PERFORMANCE_COUNTERS
-
/* Flags for allocated memory */
#define PAN_ALLOCATE_EXECUTE (1 << 0)
#define PAN_ALLOCATE_GROWABLE (1 << 1)