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>
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user