mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2026-08-20 21:02:59 +00:00
lib: consolidate pipe crc exit handler
No need to sprinkle this all over: - exit handlers will only be registered once - they're always called when exiting, so no need to explictly call them. This allows us to hide all the pipe crc cleanup in the library. Cc: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
+30
-26
@@ -177,6 +177,34 @@ static bool igt_pipe_crc_do_start(igt_pipe_crc_t *pipe_crc)
|
||||
return true;
|
||||
}
|
||||
|
||||
static void igt_pipe_crc_pipe_off(int fd, enum pipe pipe)
|
||||
{
|
||||
char buf[32];
|
||||
|
||||
sprintf(buf, "pipe %c none", pipe_name(pipe));
|
||||
write(fd, buf, strlen(buf));
|
||||
}
|
||||
|
||||
static void igt_pipe_crc_reset(void)
|
||||
{
|
||||
igt_debugfs_t debugfs;
|
||||
int fd;
|
||||
|
||||
igt_debugfs_init(&debugfs);
|
||||
fd = igt_debugfs_open(&debugfs, "i915_display_crc_ctl", O_WRONLY);
|
||||
|
||||
igt_pipe_crc_pipe_off(fd, PIPE_A);
|
||||
igt_pipe_crc_pipe_off(fd, PIPE_B);
|
||||
igt_pipe_crc_pipe_off(fd, PIPE_C);
|
||||
|
||||
close(fd);
|
||||
}
|
||||
|
||||
static void pipe_crc_exit_handler(int sig)
|
||||
{
|
||||
igt_pipe_crc_reset();
|
||||
}
|
||||
|
||||
igt_pipe_crc_t *
|
||||
igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
|
||||
enum intel_pipe_crc_source source)
|
||||
@@ -184,6 +212,8 @@ igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
|
||||
igt_pipe_crc_t *pipe_crc;
|
||||
char buf[128];
|
||||
|
||||
do_or_die(igt_install_exit_handler(pipe_crc_exit_handler));
|
||||
|
||||
pipe_crc = calloc(1, sizeof(struct _igt_pipe_crc));
|
||||
|
||||
pipe_crc->ctl_fd = igt_debugfs_open(debugfs,
|
||||
@@ -211,32 +241,6 @@ igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
|
||||
return pipe_crc;
|
||||
}
|
||||
|
||||
static void igt_pipe_crc_pipe_off(int fd, enum pipe pipe)
|
||||
{
|
||||
char buf[32];
|
||||
|
||||
sprintf(buf, "pipe %c none", pipe_name(pipe));
|
||||
write(fd, buf, strlen(buf));
|
||||
}
|
||||
|
||||
/*
|
||||
* Turn off everything
|
||||
*/
|
||||
void igt_pipe_crc_reset(void)
|
||||
{
|
||||
igt_debugfs_t debugfs;
|
||||
int fd;
|
||||
|
||||
igt_debugfs_init(&debugfs);
|
||||
fd = igt_debugfs_open(&debugfs, "i915_display_crc_ctl", O_WRONLY);
|
||||
|
||||
igt_pipe_crc_pipe_off(fd, PIPE_A);
|
||||
igt_pipe_crc_pipe_off(fd, PIPE_B);
|
||||
igt_pipe_crc_pipe_off(fd, PIPE_C);
|
||||
|
||||
close(fd);
|
||||
}
|
||||
|
||||
void igt_pipe_crc_free(igt_pipe_crc_t *pipe_crc)
|
||||
{
|
||||
if (!pipe_crc)
|
||||
|
||||
@@ -73,7 +73,6 @@ char *igt_crc_to_string(igt_crc_t *crc);
|
||||
igt_pipe_crc_t *
|
||||
igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
|
||||
enum intel_pipe_crc_source source);
|
||||
void igt_pipe_crc_reset(void);
|
||||
void igt_pipe_crc_free(igt_pipe_crc_t *pipe_crc);
|
||||
bool igt_pipe_crc_start(igt_pipe_crc_t *pipe_crc);
|
||||
void igt_pipe_crc_stop(igt_pipe_crc_t *pipe_crc);
|
||||
|
||||
Reference in New Issue
Block a user