mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-13 02:46:23 +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;
|
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_t *
|
||||||
igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
|
igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
|
||||||
enum intel_pipe_crc_source source)
|
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;
|
igt_pipe_crc_t *pipe_crc;
|
||||||
char buf[128];
|
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 = calloc(1, sizeof(struct _igt_pipe_crc));
|
||||||
|
|
||||||
pipe_crc->ctl_fd = igt_debugfs_open(debugfs,
|
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;
|
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)
|
void igt_pipe_crc_free(igt_pipe_crc_t *pipe_crc)
|
||||||
{
|
{
|
||||||
if (!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_t *
|
||||||
igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
|
igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
|
||||||
enum intel_pipe_crc_source source);
|
enum intel_pipe_crc_source source);
|
||||||
void igt_pipe_crc_reset(void);
|
|
||||||
void igt_pipe_crc_free(igt_pipe_crc_t *pipe_crc);
|
void igt_pipe_crc_free(igt_pipe_crc_t *pipe_crc);
|
||||||
bool igt_pipe_crc_start(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);
|
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)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
data_t data = {0, };
|
data_t data = {0, };
|
||||||
@ -226,7 +221,6 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
data.drm_fd = drm_open_any();
|
data.drm_fd = drm_open_any();
|
||||||
do_or_die(igt_set_vt_graphics_mode());
|
do_or_die(igt_set_vt_graphics_mode());
|
||||||
do_or_die(igt_install_exit_handler(exit_handler));
|
|
||||||
|
|
||||||
display_init(&data);
|
display_init(&data);
|
||||||
|
|
||||||
@ -262,7 +256,6 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
igt_fixture {
|
igt_fixture {
|
||||||
igt_pipe_crc_reset();
|
|
||||||
display_fini(&data);
|
display_fini(&data);
|
||||||
fclose(data.ctl);
|
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");
|
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,
|
static void create_cursor_fb(data_t *data,
|
||||||
enum cursor_type cursor_type,
|
enum cursor_type cursor_type,
|
||||||
double r, double g, double b, double a)
|
double r, double g, double b, double a)
|
||||||
@ -340,7 +335,6 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
data.drm_fd = drm_open_any();
|
data.drm_fd = drm_open_any();
|
||||||
do_or_die(igt_set_vt_graphics_mode());
|
do_or_die(igt_set_vt_graphics_mode());
|
||||||
do_or_die(igt_install_exit_handler(exit_handler));
|
|
||||||
|
|
||||||
igt_debugfs_init(&data.debugfs);
|
igt_debugfs_init(&data.debugfs);
|
||||||
data.ctl = igt_debugfs_fopen(&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);
|
run_test(&data, BLACK_INVISIBLE, false);
|
||||||
|
|
||||||
igt_fixture {
|
igt_fixture {
|
||||||
igt_pipe_crc_reset();
|
|
||||||
display_fini(&data);
|
display_fini(&data);
|
||||||
fclose(data.ctl);
|
fclose(data.ctl);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user