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.hw...@samsung.com>
> Reviewed-by: Hyungwon Hwang <human.hw...@samsung.com>
> 
> Best regards,
> Hyungwon Hwang
> 
> 
> On Tue, 22 Sep 2015 17:54:59 +0200
> Tobias Jakobi <tjak...@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 <tjak...@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");
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to