From patchwork Wed Aug 1 01:51:46 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yi Sun X-Patchwork-Id: 1262731 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by patchwork1.kernel.org (Postfix) with ESMTP id D01933FC82 for ; Wed, 1 Aug 2012 01:53:51 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8703A9E806 for ; Tue, 31 Jul 2012 18:53:51 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 005869E791 for ; Tue, 31 Jul 2012 18:53:24 -0700 (PDT) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 31 Jul 2012 18:53:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.67,351,1309762800"; d="scan'208";a="180050101" Received: from sunyi-pc.sh.intel.com ([10.239.13.42]) by orsmga002.jf.intel.com with ESMTP; 31 Jul 2012 18:53:22 -0700 From: Yi Sun To: daniel.vetter@ffwll.ch Date: Wed, 1 Aug 2012 09:51:46 +0800 Message-Id: <1343785906-31256-1-git-send-email-yi.sun@intel.com> X-Mailer: git-send-email 1.7.6.4 Cc: intel-gfx@lists.freedesktop.org Subject: [Intel-gfx] [PATCH] tests/testdisplay.c: Add a option '-g' to save images which intended to paint on screen during each mode setting. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org That option will save all the images which are created and intended to paint on screen. The images will be saved in folder "saveimages" with PNG format. Signed-off-by: Yi Sun diff --git a/tests/testdisplay.c b/tests/testdisplay.c index 4430d07..2d1fdb0 100644 --- a/tests/testdisplay.c +++ b/tests/testdisplay.c @@ -64,6 +64,7 @@ #include #include +#include drmModeRes *resources; int drm_fd, modes; @@ -72,6 +73,7 @@ int dump_info = 0, test_all_modes =0, test_preferred_mode = 0, force_mode = 0, int sleep_between_modes = 5; uint32_t depth = 24, stride, bpp; int qr_code = 0; +int save_image = 0; drmModeModeInfo force_timing; @@ -379,6 +381,8 @@ paint_output_info(cairo_t *cr, int l_width, int l_height, void *priv) cairo_text_extents_t name_extents, mode_extents; char name_buf[128], mode_buf[128]; int i, x, y, modes_x, modes_y; + static int count = 0; + count++; /* Get text extents for each string */ snprintf(name_buf, sizeof name_buf, "%s", @@ -460,6 +464,25 @@ paint_output_info(cairo_t *cr, int l_width, int l_height, void *priv) if (qr_code) paint_image(cr, "./pass.png"); + + if (save_image){ + char pngname[256]; + char *pos; + + readlink("/proc/self/exe", pngname, sizeof(pngname)); + pos = strrchr(pngname, '/'); + *(pos + 1) = '\0'; + + strcat(pngname, "saveimages"); + + //judge whether folder mkdir existed, if not create it. + if(access(pngname,0) == -1) + if (mkdir( pngname,0777)) + fprintf (stderr, "error %d, %s\n", errno, strerror (errno)); + + sprintf(pngname, "%s/%d_%s@%d.png", pngname, count, c->mode.name, c->mode.vrefresh); + cairo_surface_write_to_png( cairo_get_target(cr), pngname ); + } } static void sighandler(int signo) @@ -599,7 +622,7 @@ int update_display(void) return 1; } -static char optstr[] = "hiaf:s:d:p:mrt"; +static char optstr[] = "hiaf:s:d:p:mrtg"; static void usage(char *name) { @@ -612,6 +635,7 @@ static void usage(char *name) fprintf(stderr, "\t-m\ttest the preferred mode\n"); fprintf(stderr, "\t-t\tuse a tiled framebuffer\n"); fprintf(stderr, "\t-r\tprint a QR code on the screen whose content is \"pass\" for the automatic test\n"); + fprintf(stderr, "\t-g\tsave images which is intended to paint on the screen as png files in folder \"saveimages\"\n"); fprintf(stderr, "\t-f\t,,,,,\n"); fprintf(stderr, "\t\t,,,\n"); fprintf(stderr, "\t\ttest force mode\n"); @@ -704,6 +728,9 @@ int main(int argc, char **argv) case 'r': qr_code = 1; break; + case 'g': + save_image = 1; + break; default: fprintf(stderr, "unknown option %c\n", c); /* fall through */