From: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
To: Hyungwon Hwang <human.hwang@samsung.com>
Cc: linux-samsung-soc@vger.kernel.org, emil.l.velikov@gmail.com,
dri-devel@lists.freedesktop.org, gustavo.padovan@collabora.co.uk
Subject: Re: [PATCH 10/13] tests/exynos: add test for g2d_move
Date: Mon, 9 Nov 2015 10:47:09 +0100 [thread overview]
Message-ID: <56406B9D.4050100@math.uni-bielefeld.de> (raw)
In-Reply-To: <20151109163631.13d41d5f@hwh-ubuntu>
Hello Hyungwon,
Hyungwon Hwang wrote:
> Hello,
>
> I think this patch should update .gitignore, not for adding the built
> binary to untracked file list.
good point. I should do this for the event test as well I guess.
Going to respin the series.
With best wishes,
Tobias
> But without it, it looks good to me, and I tested it on my Odroid U3
> board.
>
> Tested-by: Hyungwon Hwang <human.hwang@samsung.com>
> Reviewed-by: Hyungwon Hwang <human.hwang@samsung.com>
>
> Best regards,
> Hyungwon Hwang
>
>
> On Tue, 22 Sep 2015 17:54:59 +0200
> Tobias Jakobi <tjakobi@math.uni-bielefeld.de> wrote:
>
>> To check if g2d_move() works properly we create a small checkerboard
>> pattern in the center of the screen and then shift this pattern
>> around with g2d_move(). The pattern should be properly preserved
>> by the operation.
>>
>> Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
>> ---
>> tests/exynos/exynos_fimg2d_test.c | 132
>> ++++++++++++++++++++++++++++++++++++++ 1 file changed, 132
>> insertions(+)
>>
>> diff --git a/tests/exynos/exynos_fimg2d_test.c
>> b/tests/exynos/exynos_fimg2d_test.c index dfb00a0..797fb6e 100644
>> --- a/tests/exynos/exynos_fimg2d_test.c
>> +++ b/tests/exynos/exynos_fimg2d_test.c
>> @@ -313,6 +313,130 @@ fail:
>> return ret;
>> }
>>
>> +static int g2d_move_test(struct exynos_device *dev,
>> + struct exynos_bo *tmp,
>> + struct exynos_bo *buf,
>> + enum e_g2d_buf_type type)
>> +{
>> + struct g2d_context *ctx;
>> + struct g2d_image img = {0}, tmp_img = {0};
>> + unsigned int img_w, img_h, count;
>> + int cur_x, cur_y;
>> + void *checkerboard;
>> + int ret;
>> +
>> + static const struct g2d_step {
>> + int x, y;
>> + } steps[] = {
>> + { 1, 0}, { 0, 1},
>> + {-1, 0}, { 0, -1},
>> + { 1, 1}, {-1, -1},
>> + { 1, -1}, {-1, 1},
>> + { 2, 1}, { 1, 2},
>> + {-2, -1}, {-1, -2},
>> + { 2, -1}, { 1, -2},
>> + {-2, 1}, {-1, 2}
>> + };
>> + static const unsigned int num_steps =
>> + sizeof(steps) / sizeof(struct g2d_step);
>> +
>> + ctx = g2d_init(dev->fd);
>> + if (!ctx)
>> + return -EFAULT;
>> +
>> + img.bo[0] = buf->handle;
>> +
>> + /* create pattern of half the screen size */
>> + checkerboard = create_checkerboard_pattern(screen_width /
>> 64, screen_height / 64, 32);
>> + if (!checkerboard) {
>> + ret = -EFAULT;
>> + goto fail;
>> + }
>> +
>> + img_w = (screen_width / 64) * 32;
>> + img_h = (screen_height / 64) * 32;
>> +
>> + switch (type) {
>> + case G2D_IMGBUF_GEM:
>> + memcpy(tmp->vaddr, checkerboard, img_w * img_h * 4);
>> + tmp_img.bo[0] = tmp->handle;
>> + break;
>> + case G2D_IMGBUF_USERPTR:
>> + tmp_img.user_ptr[0].userptr = (unsigned
>> long)checkerboard;
>> + tmp_img.user_ptr[0].size = img_w * img_h * 4;
>> + break;
>> + case G2D_IMGBUF_COLOR:
>> + default:
>> + ret = -EFAULT;
>> + goto fail;
>> + }
>> +
>> + /* solid fill framebuffer with white color */
>> + img.width = screen_width;
>> + img.height = screen_height;
>> + img.stride = screen_width * 4;
>> + img.buf_type = G2D_IMGBUF_GEM;
>> + img.color_mode = G2D_COLOR_FMT_ARGB8888 | G2D_ORDER_AXRGB;
>> + img.color = 0xffffffff;
>> +
>> + /* put checkerboard pattern in the center of the framebuffer
>> */
>> + cur_x = (screen_width - img_w) / 2;
>> + cur_y = (screen_height - img_h) / 2;
>> + tmp_img.width = img_w;
>> + tmp_img.height = img_h;
>> + tmp_img.stride = img_w * 4;
>> + tmp_img.buf_type = type;
>> + tmp_img.color_mode = G2D_COLOR_FMT_ARGB8888 |
>> G2D_ORDER_AXRGB; +
>> + ret = g2d_solid_fill(ctx, &img, 0, 0, screen_width,
>> screen_height) ||
>> + g2d_copy(ctx, &tmp_img, &img, 0, 0, cur_x, cur_y,
>> img_w, img_h); +
>> + if (!ret)
>> + ret = g2d_exec(ctx);
>> + if (ret < 0)
>> + goto fail;
>> +
>> + printf("move test with %s.\n",
>> + type == G2D_IMGBUF_GEM ? "gem" : "userptr");
>> +
>> + srand(time(NULL));
>> + for (count = 0; count < 256; ++count) {
>> + const struct g2d_step *s;
>> +
>> + /* select step and validate it */
>> + while (1) {
>> + s = &steps[random() % num_steps];
>> +
>> + if (cur_x + s->x < 0 || cur_y + s->y < 0 ||
>> + cur_x + img_w + s->x >= screen_width
>> ||
>> + cur_y + img_h + s->y >=
>> screen_height)
>> + continue;
>> + else
>> + break;
>> + }
>> +
>> + ret = g2d_move(ctx, &img, cur_x, cur_y, cur_x +
>> s->x, cur_y + s->y,
>> + img_w, img_h);
>> + if (!ret)
>> + ret = g2d_exec(ctx);
>> +
>> + if (ret < 0)
>> + goto fail;
>> +
>> + cur_x += s->x;
>> + cur_y += s->y;
>> +
>> + usleep(100000);
>> + }
>> +
>> +fail:
>> + g2d_fini(ctx);
>> +
>> + free(checkerboard);
>> +
>> + return ret;
>> +}
>> +
>> static int g2d_copy_with_scale_test(struct exynos_device *dev,
>> struct exynos_bo *src,
>> struct exynos_bo *dst,
>> @@ -708,6 +832,14 @@ int main(int argc, char **argv)
>>
>> wait_for_user_input(0);
>>
>> + ret = g2d_move_test(dev, src, bo, G2D_IMGBUF_GEM);
>> + if (ret < 0) {
>> + fprintf(stderr, "failed to test move operation.\n");
>> + goto err_free_src;
>> + }
>> +
>> + wait_for_user_input(0);
>> +
>> ret = g2d_copy_with_scale_test(dev, src, bo, G2D_IMGBUF_GEM);
>> if (ret < 0) {
>> fprintf(stderr, "failed to test copy and scale
>> operation.\n");
>
next prev parent reply other threads:[~2015-11-09 9:47 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-22 15:54 [PATCH 00/13] drm/exynos: async G2D and g2d_move() Tobias Jakobi
2015-09-22 15:54 ` [PATCH 01/13] drm: Implement drmHandleEvent2() Tobias Jakobi
2015-09-22 15:54 ` [PATCH 02/13] exynos: Introduce exynos_handle_event() Tobias Jakobi
2015-09-22 15:54 ` [PATCH 03/13] tests/exynos: add fimg2d performance analysis Tobias Jakobi
2015-10-30 6:51 ` Hyungwon Hwang
2015-10-30 11:17 ` Tobias Jakobi
2015-09-22 15:54 ` [PATCH 04/13] exynos/fimg2d: add g2d_config_event Tobias Jakobi
2015-09-22 15:54 ` [PATCH 05/13] exynos: fimg2d: add g2d_exec2 Tobias Jakobi
2015-09-22 15:54 ` [PATCH 06/13] tests/exynos: add fimg2d event test Tobias Jakobi
2015-10-30 6:50 ` Hyungwon Hwang
2015-10-30 11:16 ` Tobias Jakobi
2015-10-30 11:24 ` Emil Velikov
2015-10-30 11:28 ` Tobias Jakobi
2015-10-30 12:31 ` Emil Velikov
2015-10-30 14:28 ` Tobias Jakobi
2015-10-30 18:49 ` Emil Velikov
2015-11-02 2:10 ` Hyungwon Hwang
2015-09-22 15:54 ` [PATCH 07/13] tests/exynos: use XRGB8888 for framebuffer Tobias Jakobi
2015-10-30 6:41 ` Hyungwon Hwang
2015-10-30 11:17 ` Tobias Jakobi
2015-11-02 2:32 ` Hyungwon Hwang
2015-09-22 15:54 ` [PATCH 08/13] exynos: fimg2d: add g2d_set_direction Tobias Jakobi
2015-10-30 7:14 ` Hyungwon Hwang
2015-10-30 11:17 ` Tobias Jakobi
2015-10-30 17:14 ` Tobias Jakobi
2015-11-02 4:28 ` Hyungwon Hwang
2015-09-22 15:54 ` [PATCH 09/13] exynos/fimg2d: add g2d_move Tobias Jakobi
2015-10-30 7:17 ` Hyungwon Hwang
2015-10-30 11:18 ` Tobias Jakobi
2015-11-09 7:30 ` Hyungwon Hwang
2015-11-09 9:47 ` Tobias Jakobi
2015-11-10 4:20 ` Hyungwon Hwang
2015-11-10 13:24 ` Tobias Jakobi
2015-11-11 1:55 ` Hyungwon Hwang
2015-09-22 15:54 ` [PATCH 10/13] tests/exynos: add test for g2d_move Tobias Jakobi
2015-11-09 7:36 ` Hyungwon Hwang
2015-11-09 9:47 ` Tobias Jakobi [this message]
2015-11-09 11:33 ` Emil Velikov
2015-09-22 15:55 ` [PATCH 11/13] exynos/fimg2d: add exynos_bo_unmap() Tobias Jakobi
2015-09-22 15:55 ` [PATCH 12/13] exynos/fimg2d: add g2d_reset() to public API Tobias Jakobi
2015-09-22 15:55 ` [PATCH 13/13] exynos: bump version number Tobias Jakobi
2015-10-07 18:32 ` [PATCH 00/13] drm/exynos: async G2D and g2d_move() Tobias Jakobi
2015-10-17 22:39 ` Tobias Jakobi
2015-10-28 19:27 ` Tobias Jakobi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56406B9D.4050100@math.uni-bielefeld.de \
--to=tjakobi@math.uni-bielefeld.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=emil.l.velikov@gmail.com \
--cc=gustavo.padovan@collabora.co.uk \
--cc=human.hwang@samsung.com \
--cc=linux-samsung-soc@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox