[igt-dev] [PATCH i-g-t 15/20] tests/psr: Eliminate storing pointers for igt_plane_type.

Katarzyna Dec katarzyna.dec at intel.com
Fri Apr 13 11:23:11 UTC 2018


On Tue, Apr 10, 2018 at 07:37:27PM -0700, Dhinakaran Pandiyan wrote:
> After the initial plane setup, only the test plane is required. One
> exception is clean_up where the primary is required, but a call to
> igt_output_get_plane_type() can get us that.
> 
> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan at intel.com>
 Reviewed-by: Katarzyna Dec <katarzyna.dec at intel.com>
> ---
>  tests/kms_psr_sink_crc.c | 73 +++++++++++++++++++++---------------------------
>  1 file changed, 32 insertions(+), 41 deletions(-)
> 
> diff --git a/tests/kms_psr_sink_crc.c b/tests/kms_psr_sink_crc.c
> index c9197c9d..f22edb48 100644
> --- a/tests/kms_psr_sink_crc.c
> +++ b/tests/kms_psr_sink_crc.c
> @@ -62,14 +62,13 @@ static const char *op_str(enum operations op)
>  typedef struct {
>  	int drm_fd;
>  	int debugfs_fd;
> -	int test_plane;
>  	enum operations op;
>  	uint32_t devid;
>  	uint32_t crtc_id;
>  	igt_display_t display;
>  	drm_intel_bufmgr *bufmgr;
>  	struct igt_fb fb_green, fb_white;
> -	igt_plane_t *primary, *sprite, *cursor;
> +	igt_plane_t *test_plane;
>  	int mod_size;
>  	int mod_stride;
>  	drmModeModeInfo *mode;
> @@ -268,7 +267,7 @@ static bool drrs_disabled(data_t *data)
>  static void run_test(data_t *data)
>  {
>  	uint32_t handle = data->fb_white.gem_handle;
> -	igt_plane_t *test_plane;
> +	igt_plane_t *test_plane = data->test_plane;
>  	void *ptr;
>  	char ref_crc[CRC_LEN];
>  	char crc[CRC_LEN];
> @@ -288,18 +287,13 @@ static void run_test(data_t *data)
>  	assert_or_manual(is_green(ref_crc), "screen GREEN");
>  
>  	/* Setting a secondary fb/plane */
> -	switch (data->test_plane) {
> -	case DRM_PLANE_TYPE_PRIMARY: default: test_plane = data->primary; break;
> -	case DRM_PLANE_TYPE_OVERLAY: test_plane = data->sprite; break;
> -	case DRM_PLANE_TYPE_CURSOR: test_plane = data->cursor; break;
> -	}
>  	igt_plane_set_fb(test_plane, &data->fb_white);
>  	igt_display_commit(&data->display);
>  
>  	/* Confirm it is not Green anymore */
>  	igt_assert(wait_psr_entry(data));
>  	get_sink_crc(data, ref_crc);
> -	if (data->test_plane == DRM_PLANE_TYPE_PRIMARY)
> +	if (test_plane->type == DRM_PLANE_TYPE_PRIMARY)
>  		assert_or_manual(!is_green(ref_crc), "screen WHITE");
>  	else
>  		assert_or_manual(!is_green(ref_crc), "GREEN background with WHITE box");
> @@ -358,21 +352,22 @@ static void run_test(data_t *data)
>  }
>  
>  static void test_cleanup(data_t *data) {
> -	igt_plane_set_fb(data->primary, NULL);
> -	if (data->test_plane == DRM_PLANE_TYPE_OVERLAY)
> -		igt_plane_set_fb(data->sprite, NULL);
> -	if (data->test_plane == DRM_PLANE_TYPE_CURSOR)
> -		igt_plane_set_fb(data->cursor, NULL);
> +	igt_plane_t *primary;
>  
> +	primary = igt_output_get_plane_type(data->output,
> +					    DRM_PLANE_TYPE_PRIMARY);
> +	igt_plane_set_fb(primary, NULL);
> +	igt_plane_set_fb(data->test_plane, NULL);
>  	igt_display_commit(&data->display);
>  
>  	igt_remove_fb(data->drm_fd, &data->fb_green);
>  	igt_remove_fb(data->drm_fd, &data->fb_white);
>  }
>  
> -static void setup_test_plane(data_t *data)
> +static void setup_test_plane(data_t *data, int test_plane)
>  {
>  	uint32_t white_h, white_v;
> +	igt_plane_t *primary, *sprite, *cursor;
>  
>  	igt_create_color_fb(data->drm_fd,
>  			    data->mode->hdisplay, data->mode->vdisplay,
> @@ -381,8 +376,10 @@ static void setup_test_plane(data_t *data)
>  			    0.0, 1.0, 0.0,
>  			    &data->fb_green);
>  
> -	data->primary = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
> -	igt_plane_set_fb(data->primary, NULL);
> +	primary = igt_output_get_plane_type(data->output,
> +					    DRM_PLANE_TYPE_PRIMARY);
> +	igt_plane_set_fb(primary, NULL);
> +	data->test_plane = primary;
>  
>  	white_h = data->mode->hdisplay;
>  	white_v = data->mode->vdisplay;
> @@ -391,16 +388,14 @@ static void setup_test_plane(data_t *data)
>  	data->mod_size = white_h * white_v;
>  	data->mod_stride = white_h * 4;
>  
> -	switch (data->test_plane) {
> +	switch (test_plane) {
>  	case DRM_PLANE_TYPE_OVERLAY:
> -		data->sprite = igt_output_get_plane_type(data->output,
> -						    DRM_PLANE_TYPE_OVERLAY);
> -		igt_plane_set_fb(data->sprite, NULL);
> -		/* To make it different for human eyes let's make
> -		 * sprite visible in only one quarter of the primary
> -		 */
> +		sprite = igt_output_get_plane_type(data->output,
> +						   DRM_PLANE_TYPE_OVERLAY);
> +		igt_plane_set_fb(sprite, NULL);
>  		white_h = white_h/2;
>  		white_v = white_v/2;
> +		data->test_plane = sprite;
>  	case DRM_PLANE_TYPE_PRIMARY:
>  		igt_create_color_fb(data->drm_fd,
>  				    white_h, white_v,
> @@ -410,20 +405,21 @@ static void setup_test_plane(data_t *data)
>  				    &data->fb_white);
>  		break;
>  	case DRM_PLANE_TYPE_CURSOR:
> -		data->cursor = igt_output_get_plane_type(data->output,
> -						    DRM_PLANE_TYPE_CURSOR);
> -		igt_plane_set_fb(data->cursor, NULL);
> +		cursor = igt_output_get_plane_type(data->output,
> +						   DRM_PLANE_TYPE_CURSOR);
> +		igt_plane_set_fb(cursor, NULL);
>  		create_cursor_fb(data);
> -		igt_plane_set_position(data->cursor, 0, 0);
> +		igt_plane_set_position(cursor, 0, 0);
>  
>  		/* Cursor is 64 x 64, ignoring pitch and bbp again */
>  		data->mod_size = 64 * 64;
> +		data->test_plane = cursor;
>  		break;
>  	}
>  
>  	igt_display_commit(&data->display);
>  
> -	igt_plane_set_fb(data->primary, &data->fb_green);
> +	igt_plane_set_fb(primary, &data->fb_green);
>  	igt_display_commit(&data->display);
>  }
>  
> @@ -489,13 +485,13 @@ int main(int argc, char *argv[])
>  	}
>  
>  	igt_subtest("basic") {
> -		setup_test_plane(&data);
> +		setup_test_plane(&data, DRM_PLANE_TYPE_PRIMARY);
>  		igt_assert(wait_psr_entry(&data));
>  		test_cleanup(&data);
>  	}
>  
>  	igt_subtest("no_drrs") {
> -		setup_test_plane(&data);
> +		setup_test_plane(&data, DRM_PLANE_TYPE_PRIMARY);
>  		igt_assert(wait_psr_entry(&data));
>  		igt_assert(drrs_disabled(&data));
>  		test_cleanup(&data);
> @@ -503,9 +499,8 @@ int main(int argc, char *argv[])
>  
>  	for (op = PAGE_FLIP; op <= RENDER; op++) {
>  		igt_subtest_f("primary_%s", op_str(op)) {
> -			data.test_plane = DRM_PLANE_TYPE_PRIMARY;
>  			data.op = op;
> -			setup_test_plane(&data);
> +			setup_test_plane(&data, DRM_PLANE_TYPE_PRIMARY);
>  			igt_assert(wait_psr_entry(&data));
>  			run_test(&data);
>  			test_cleanup(&data);
> @@ -514,9 +509,8 @@ int main(int argc, char *argv[])
>  
>  	for (op = MMAP_GTT; op <= PLANE_ONOFF; op++) {
>  		igt_subtest_f("sprite_%s", op_str(op)) {
> -			data.test_plane = DRM_PLANE_TYPE_OVERLAY;
>  			data.op = op;
> -			setup_test_plane(&data);
> +			setup_test_plane(&data, DRM_PLANE_TYPE_OVERLAY);
>  			igt_assert(wait_psr_entry(&data));
>  			run_test(&data);
>  			test_cleanup(&data);
> @@ -525,9 +519,8 @@ int main(int argc, char *argv[])
>  
>  	for (op = MMAP_GTT; op <= PLANE_ONOFF; op++) {
>  		igt_subtest_f("cursor_%s", op_str(op)) {
> -			data.test_plane = DRM_PLANE_TYPE_CURSOR;
>  			data.op = op;
> -			setup_test_plane(&data);
> +			setup_test_plane(&data, DRM_PLANE_TYPE_CURSOR);
>  			igt_assert(wait_psr_entry(&data));
>  			run_test(&data);
>  			test_cleanup(&data);
> @@ -535,9 +528,8 @@ int main(int argc, char *argv[])
>  	}
>  
>  	igt_subtest_f("dpms") {
> -		data.test_plane = DRM_PLANE_TYPE_PRIMARY;
>  		data.op = RENDER;
> -		setup_test_plane(&data);
> +		setup_test_plane(&data, DRM_PLANE_TYPE_PRIMARY);
>  		igt_assert(wait_psr_entry(&data));
>  		dpms_off_on(data);
>  		run_test(&data);
> @@ -545,9 +537,8 @@ int main(int argc, char *argv[])
>  	}
>  
>  	igt_subtest_f("suspend") {
> -		data.test_plane = DRM_PLANE_TYPE_CURSOR;
>  		data.op = PLANE_ONOFF;
> -		setup_test_plane(&data);
> +		setup_test_plane(&data, DRM_PLANE_TYPE_CURSOR);
>  		igt_assert(wait_psr_entry(&data));
>  		igt_system_suspend_autoresume(SUSPEND_STATE_MEM,
>  					      SUSPEND_TEST_NONE);
> -- 
> 2.14.1
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev


More information about the igt-dev mailing list