mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-12 02:16:17 +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:
parent
43def94f32
commit
0369fe19b8
@ -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);
|
||||
|
@ -206,11 +206,6 @@ static void test_read_crc(data_t *data, int pipe, unsigned flags)
|
||||
|
||||
}
|
||||
|
||||
static void exit_handler(int sig)
|
||||
{
|
||||
igt_pipe_crc_reset();
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
data_t data = {0, };
|
||||
@ -226,7 +221,6 @@ int main(int argc, char **argv)
|
||||
|
||||
data.drm_fd = drm_open_any();
|
||||
do_or_die(igt_set_vt_graphics_mode());
|
||||
do_or_die(igt_install_exit_handler(exit_handler));
|
||||
|
||||
display_init(&data);
|
||||
|
||||
@ -262,7 +256,6 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
igt_fixture {
|
||||
igt_pipe_crc_reset();
|
||||
display_fini(&data);
|
||||
fclose(data.ctl);
|
||||
}
|
||||
|
@ -304,11 +304,6 @@ static void run_test(data_t *data, enum cursor_type cursor_type, bool onscreen)
|
||||
igt_require_f(valid_tests, "no valid crtc/connector combinations found\n");
|
||||
}
|
||||
|
||||
static void exit_handler(int sig)
|
||||
{
|
||||
igt_pipe_crc_reset();
|
||||
}
|
||||
|
||||
static void create_cursor_fb(data_t *data,
|
||||
enum cursor_type cursor_type,
|
||||
double r, double g, double b, double a)
|
||||
@ -340,7 +335,6 @@ int main(int argc, char **argv)
|
||||
|
||||
data.drm_fd = drm_open_any();
|
||||
do_or_die(igt_set_vt_graphics_mode());
|
||||
do_or_die(igt_install_exit_handler(exit_handler));
|
||||
|
||||
igt_debugfs_init(&data.debugfs);
|
||||
data.ctl = igt_debugfs_fopen(&data.debugfs,
|
||||
@ -378,7 +372,6 @@ int main(int argc, char **argv)
|
||||
run_test(&data, BLACK_INVISIBLE, false);
|
||||
|
||||
igt_fixture {
|
||||
igt_pipe_crc_reset();
|
||||
display_fini(&data);
|
||||
fclose(data.ctl);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user