diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
index 38aa1ab..4458248 100644
--- a/tests/kms_cursor_crc.c
+++ b/tests/kms_cursor_crc.c
@@ -34,6 +34,8 @@
 #include "igt_debugfs.h"
 #include "igt_kms.h"
 
+int	w = 0, h = 0;
+
 enum cursor_type {
 	WHITE_VISIBLE,
 	WHITE_INVISIBLE,
@@ -170,7 +172,7 @@ static void test_crc(test_data_t *test_data, enum cursor_type cursor_type,
 
 	/* enable cursor */
 	igt_assert(drmModeSetCursor(data->drm_fd, test_data->crtc_id,
-				    data->fb[cursor_type].gem_handle, 64, 64) == 0);
+				    data->fb[cursor_type].gem_handle, w, h) == 0);
 
 	if (onscreen) {
 		/* cursor onscreen, crc should match, except when white visible cursor is used */
@@ -180,32 +182,32 @@ static void test_crc(test_data_t *test_data, enum cursor_type cursor_type,
 		do_test(test_data, left, right, top, bottom);
 
 		/* 2 pixels inside */
-		do_test(test_data, left - 62, right + 62, top     , bottom     );
-		do_test(test_data, left     , right     , top - 62, bottom + 62);
-		do_test(test_data, left - 62, right + 62, top - 62, bottom + 62);
+		do_test(test_data, left - (w - 2), right + (w - 2), top     , bottom     );
+		do_test(test_data, left     , right     , top - (w - 2), bottom + (w - 2));
+		do_test(test_data, left - (w - 2), right + (w - 2), top - (w - 2), bottom + (w - 2));
 
 		/* 1 pixel inside */
-		do_test(test_data, left - 63, right + 63, top     , bottom     );
-		do_test(test_data, left     , right     , top - 63, bottom + 63);
-		do_test(test_data, left - 63, right + 63, top - 63, bottom + 63);
+		do_test(test_data, left - (w - 1), right + (w - 1), top     , bottom     );
+		do_test(test_data, left     , right     , top - (w - 1), bottom + (w - 1));
+		do_test(test_data, left - (w - 1), right + (w - 1), top - (w - 1), bottom + (w - 1));
 	} else {
 		/* cursor offscreen, crc should always match */
 		test_data->crc_must_match = true;
 
 		/* fully outside */
-		do_test(test_data, left - 64, right + 64, top     , bottom     );
-		do_test(test_data, left     , right     , top - 64, bottom + 64);
-		do_test(test_data, left - 64, right + 64, top - 64, bottom + 64);
+		do_test(test_data, left - w, right + w, top     , bottom     );
+		do_test(test_data, left     , right     , top - w, bottom + w);
+		do_test(test_data, left - w, right + w, top - w, bottom + w);
 
 		/* fully outside by 1 extra pixels */
-		do_test(test_data, left - 65, right + 65, top     , bottom     );
-		do_test(test_data, left     , right     , top - 65, bottom + 65);
-		do_test(test_data, left - 65, right + 65, top - 65, bottom + 65);
+		do_test(test_data, left - (w + 1), right + (w + 1), top     , bottom     );
+		do_test(test_data, left     , right     , top - (w + 1), bottom + (w + 1));
+		do_test(test_data, left - (w + 1), right + (w + 1), top - (w + 1), bottom + (w + 1));
 
 		/* fully outside by 2 extra pixels */
-		do_test(test_data, left - 66, right + 66, top     , bottom     );
-		do_test(test_data, left     , right     , top - 66, bottom + 66);
-		do_test(test_data, left - 66, right + 66, top - 66, bottom + 66);
+		do_test(test_data, left - (w + 2), right + (w + 2), top     , bottom     );
+		do_test(test_data, left     , right     , top - (w + 2), bottom + (w + 2));
+		do_test(test_data, left - (w + 2), right + (w + 2), top - (w + 2), bottom + (w + 2));
 
 		/* fully outside by a lot of extra pixels */
 		do_test(test_data, left - 512, right + 512, top      , bottom      );
@@ -251,9 +253,9 @@ static bool prepare_crtc(test_data_t *test_data, uint32_t connector_id)
 
 	/* x/y position where the cursor is still fully visible */
 	test_data->left = 0;
-	test_data->right = connector.config.default_mode.hdisplay - 64;
+	test_data->right = connector.config.default_mode.hdisplay - w;
 	test_data->top = 0;
-	test_data->bottom = connector.config.default_mode.vdisplay - 64;
+	test_data->bottom = connector.config.default_mode.vdisplay - h;
 
 	/* make sure cursor is disabled */
 	igt_assert(drmModeSetCursor(data->drm_fd, test_data->crtc_id, 0, 0, 0) == 0);
@@ -314,20 +316,29 @@ static void create_cursor_fb(data_t *data,
 {
 	cairo_t *cr;
 
-	data->fb_id[cursor_type] = kmstest_create_fb2(data->drm_fd, 64, 64,
+	data->fb_id[cursor_type] = kmstest_create_fb2(data->drm_fd, w, h,
 						      DRM_FORMAT_ARGB8888, false,
 						      &data->fb[cursor_type]);
 	igt_assert(data->fb_id[cursor_type]);
 
 	cr = kmstest_get_cairo_ctx(data->drm_fd,
 				   &data->fb[cursor_type]);
-	kmstest_paint_color_alpha(cr, 0, 0, 64, 64, r, g, b, a);
+	kmstest_paint_color_alpha(cr, 0, 0, w, h, r, g, b, a);
 	igt_assert(cairo_status(cr) == 0);
 }
 
 igt_main
 {
 	data_t data = {};
+	int	c;
+	char	args[10];
+
+	printf("\nEnter Width and Height of Cursor Plane (64x64, 128x128):");
+	scanf("%s", args);
+	if (sscanf(args, "%dx%d", &w, &h) != 2) {
+		printf("\nInvalid arguments");
+		return -1;
+	}
 
 	igt_skip_on_simulation();
 
