X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=tools%2Fbuffers.c;h=ea88179df33e6aac004c0ec8695a0e33f60a4d12;hb=refs%2Fheads%2Fsandbox%2Fcyeon%2Fdevel;hp=53ed615fe5860c46faac8082c95485c5e3930197;hpb=5ecd7fb59c26446e6f7a83cd2278b0cecd5393bf;p=platform%2Fcore%2Fuifw%2Flibtdm.git diff --git a/tools/buffers.c b/tools/buffers.c index 53ed615..ea88179 100644 --- a/tools/buffers.c +++ b/tools/buffers.c @@ -37,10 +37,11 @@ #include #include -#include -#include "tdm_macro.h" +/* LCOV_EXCL_START */ + #include "buffers.h" +#define ALPHA_VALUE 100 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) /* ----------------------------------------------------------------------------- @@ -124,7 +125,7 @@ static const struct format_info format_info[] = { { TBM_FORMAT_RGB888, "RG24", MAKE_RGB_INFO(8, 16, 8, 8, 8, 0, 0, 0) }, /* RGB32 */ { TBM_FORMAT_ARGB8888, "AR24", MAKE_RGB_INFO(8, 16, 8, 8, 8, 0, 8, 24) }, - { TBM_FORMAT_XRGB8888, "XR24", MAKE_RGB_INFO(8, 16, 8, 8, 8, 0, 0, 0) }, + { TBM_FORMAT_XRGB8888, "XR24", MAKE_RGB_INFO(8, 16, 8, 8, 8, 0, 0, 24) }, { TBM_FORMAT_ABGR8888, "AB24", MAKE_RGB_INFO(8, 0, 8, 8, 8, 16, 8, 24) }, { TBM_FORMAT_XBGR8888, "XB24", MAKE_RGB_INFO(8, 0, 8, 8, 8, 16, 0, 0) }, { TBM_FORMAT_RGBA8888, "RA24", MAKE_RGB_INFO(8, 24, 8, 16, 8, 8, 8, 0) }, @@ -141,6 +142,8 @@ static const struct format_info format_info[] = { { TBM_FORMAT_BGRX1010102, "BX30", MAKE_RGB_INFO(10, 2, 10, 12, 10, 22, 0, 0) }, }; +static unsigned int rand_seed; + unsigned int format_fourcc(const char *name) { unsigned int i; @@ -156,7 +159,7 @@ unsigned int format_fourcc(const char *name) */ struct color_rgb24 { - unsigned int value: 24; + unsigned int value:24; } __attribute__((__packed__)); struct color_yuv { @@ -166,7 +169,7 @@ struct color_yuv { }; #define MAKE_YUV_601_Y(r, g, b) \ - ((( 66 * (r) + 129 * (g) + 25 * (b) + 128) >> 8) + 16) + (((66 * (r) + 129 * (g) + 25 * (b) + 128) >> 8) + 16) #define MAKE_YUV_601_U(r, g, b) \ (((-38 * (r) - 74 * (g) + 112 * (b) + 128) >> 8) + 128) #define MAKE_YUV_601_V(r, g, b) \ @@ -183,6 +186,12 @@ struct color_yuv { (((b) >> (8 - (rgb)->blue.length)) << (rgb)->blue.offset) | \ (((a) >> (8 - (rgb)->alpha.length)) << (rgb)->alpha.offset)) +#define MAKE_RGBX(rgb, r, g, b) \ + ((((r) >> (8 - (rgb)->red.length)) << (rgb)->red.offset) | \ + (((g) >> (8 - (rgb)->green.length)) << (rgb)->green.offset) | \ + (((b) >> (8 - (rgb)->blue.length)) << (rgb)->blue.offset) | \ + (255 << (rgb)->alpha.offset)) + #define MAKE_RGB24(rgb, r, g, b) \ { .value = MAKE_RGBA(rgb, r, g, b, 0) } @@ -245,8 +254,12 @@ fill_smpte_yuv_planar(const struct yuv_info *yuv, for (; x < width * 6 / 7; ++x) y_mem[x] = colors_bottom[(x - width * 5 / 7) * 3 / (width / 7) + 4].y; - for (; x < width; ++x) - y_mem[x] = colors_bottom[7].y; + for (; x < width; ++x) { + if (rand_r(&rand_seed) % 2) + y_mem[x] = colors_bottom[1].y; + else + y_mem[x] = colors_bottom[7].y; + } y_mem += stride; } @@ -283,8 +296,13 @@ fill_smpte_yuv_planar(const struct yuv_info *yuv, 3 / (width / 7) + 4].v; } for (; x < width; x += xsub) { - u_mem[x * cs / xsub] = colors_bottom[7].u; - v_mem[x * cs / xsub] = colors_bottom[7].v; + if (rand_r(&rand_seed) % 2) { + u_mem[x * cs / xsub] = colors_bottom[1].u; + v_mem[x * cs / xsub] = colors_bottom[1].v; + } else { + u_mem[x * cs / xsub] = colors_bottom[7].u; + v_mem[x * cs / xsub] = colors_bottom[7].v; + } } u_mem += stride * cs / xsub; v_mem += stride * cs / xsub; @@ -399,32 +417,32 @@ fill_smpte_rgb16(const struct rgb_info *rgb, unsigned char *mem, unsigned int width, unsigned int height, unsigned int stride) { const uint16_t colors_top[] = { - MAKE_RGBA(rgb, 192, 192, 192, 255), /* grey */ - MAKE_RGBA(rgb, 192, 192, 0, 255), /* yellow */ - MAKE_RGBA(rgb, 0, 192, 192, 255), /* cyan */ - MAKE_RGBA(rgb, 0, 192, 0, 255), /* green */ - MAKE_RGBA(rgb, 192, 0, 192, 255), /* magenta */ - MAKE_RGBA(rgb, 192, 0, 0, 255), /* red */ - MAKE_RGBA(rgb, 0, 0, 192, 255), /* blue */ + MAKE_RGBA(rgb, 192, 192, 192, ALPHA_VALUE), /* grey */ + MAKE_RGBA(rgb, 192, 192, 0, ALPHA_VALUE), /* yellow */ + MAKE_RGBA(rgb, 0, 192, 192, ALPHA_VALUE), /* cyan */ + MAKE_RGBA(rgb, 0, 192, 0, ALPHA_VALUE), /* green */ + MAKE_RGBA(rgb, 192, 0, 192, ALPHA_VALUE), /* magenta */ + MAKE_RGBA(rgb, 192, 0, 0, ALPHA_VALUE), /* red */ + MAKE_RGBA(rgb, 0, 0, 192, ALPHA_VALUE), /* blue */ }; const uint16_t colors_middle[] = { - MAKE_RGBA(rgb, 0, 0, 192, 255), /* blue */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ - MAKE_RGBA(rgb, 192, 0, 192, 255), /* magenta */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ - MAKE_RGBA(rgb, 0, 192, 192, 255), /* cyan */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ - MAKE_RGBA(rgb, 192, 192, 192, 255), /* grey */ + MAKE_RGBA(rgb, 0, 0, 192, ALPHA_VALUE), /* blue */ + MAKE_RGBA(rgb, 19, 19, 19, ALPHA_VALUE), /* black */ + MAKE_RGBA(rgb, 192, 0, 192, ALPHA_VALUE), /* magenta */ + MAKE_RGBA(rgb, 19, 19, 19, ALPHA_VALUE), /* black */ + MAKE_RGBA(rgb, 0, 192, 192, ALPHA_VALUE), /* cyan */ + MAKE_RGBA(rgb, 19, 19, 19, ALPHA_VALUE), /* black */ + MAKE_RGBA(rgb, 192, 192, 192, ALPHA_VALUE), /* grey */ }; const uint16_t colors_bottom[] = { - MAKE_RGBA(rgb, 0, 33, 76, 255), /* in-phase */ - MAKE_RGBA(rgb, 255, 255, 255, 255), /* super white */ - MAKE_RGBA(rgb, 50, 0, 106, 255), /* quadrature */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ - MAKE_RGBA(rgb, 9, 9, 9, 255), /* 3.5% */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* 7.5% */ - MAKE_RGBA(rgb, 29, 29, 29, 255), /* 11.5% */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ + MAKE_RGBA(rgb, 0, 33, 76, ALPHA_VALUE), /* in-phase */ + MAKE_RGBA(rgb, 255, 255, 255, ALPHA_VALUE), /* super white */ + MAKE_RGBA(rgb, 50, 0, 106, ALPHA_VALUE), /* quadrature */ + MAKE_RGBA(rgb, 19, 19, 19, ALPHA_VALUE), /* black */ + MAKE_RGBA(rgb, 9, 9, 9, ALPHA_VALUE), /* 3.5% */ + MAKE_RGBA(rgb, 19, 19, 19, ALPHA_VALUE), /* 7.5% */ + MAKE_RGBA(rgb, 29, 29, 29, ALPHA_VALUE), /* 11.5% */ + MAKE_RGBA(rgb, 19, 19, 19, ALPHA_VALUE), /* black */ }; unsigned int x; unsigned int y; @@ -529,36 +547,35 @@ fill_smpte_rgb32(const struct rgb_info *rgb, unsigned char *mem, unsigned int width, unsigned int height, unsigned int stride) { const uint32_t colors_top[] = { - MAKE_RGBA(rgb, 192, 192, 192, 255), /* grey */ - MAKE_RGBA(rgb, 192, 192, 0, 255), /* yellow */ - MAKE_RGBA(rgb, 0, 192, 192, 255), /* cyan */ - MAKE_RGBA(rgb, 0, 192, 0, 255), /* green */ - MAKE_RGBA(rgb, 192, 0, 192, 255), /* magenta */ - MAKE_RGBA(rgb, 192, 0, 0, 255), /* red */ - MAKE_RGBA(rgb, 0, 0, 192, 255), /* blue */ + MAKE_RGBA(rgb, 192, 192, 192, ALPHA_VALUE), /* grey */ + MAKE_RGBA(rgb, 192, 192, 0, ALPHA_VALUE), /* yellow */ + MAKE_RGBA(rgb, 0, 192, 192, ALPHA_VALUE), /* cyan */ + MAKE_RGBA(rgb, 0, 192, 0, ALPHA_VALUE), /* green */ + MAKE_RGBA(rgb, 192, 0, 192, ALPHA_VALUE), /* magenta */ + MAKE_RGBA(rgb, 192, 0, 0, ALPHA_VALUE), /* red */ + MAKE_RGBA(rgb, 0, 0, 192, ALPHA_VALUE), /* blue */ }; const uint32_t colors_middle[] = { - MAKE_RGBA(rgb, 0, 0, 192, 255), /* blue */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ - MAKE_RGBA(rgb, 192, 0, 192, 255), /* magenta */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ - MAKE_RGBA(rgb, 0, 192, 192, 255), /* cyan */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ - MAKE_RGBA(rgb, 192, 192, 192, 255), /* grey */ + MAKE_RGBA(rgb, 0, 0, 192, ALPHA_VALUE), /* blue */ + MAKE_RGBA(rgb, 19, 19, 19, ALPHA_VALUE), /* black */ + MAKE_RGBA(rgb, 192, 0, 192, ALPHA_VALUE), /* magenta */ + MAKE_RGBA(rgb, 19, 19, 19, ALPHA_VALUE), /* black */ + MAKE_RGBA(rgb, 0, 192, 192, ALPHA_VALUE), /* cyan */ + MAKE_RGBA(rgb, 19, 19, 19, ALPHA_VALUE), /* black */ + MAKE_RGBA(rgb, 192, 192, 192, ALPHA_VALUE), /* grey */ }; const uint32_t colors_bottom[] = { - MAKE_RGBA(rgb, 0, 33, 76, 255), /* in-phase */ - MAKE_RGBA(rgb, 255, 255, 255, 255), /* super white */ - MAKE_RGBA(rgb, 50, 0, 106, 255), /* quadrature */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ - MAKE_RGBA(rgb, 9, 9, 9, 255), /* 3.5% */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* 7.5% */ - MAKE_RGBA(rgb, 29, 29, 29, 255), /* 11.5% */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ + MAKE_RGBA(rgb, 0, 33, 76, ALPHA_VALUE), /* in-phase */ + MAKE_RGBA(rgb, 255, 255, 255, ALPHA_VALUE), /* super white */ + MAKE_RGBA(rgb, 50, 0, 106, ALPHA_VALUE), /* quadrature */ + MAKE_RGBA(rgb, 19, 19, 19, ALPHA_VALUE), /* black */ + MAKE_RGBA(rgb, 9, 9, 9, ALPHA_VALUE), /* 3.5% */ + MAKE_RGBA(rgb, 19, 19, 19, ALPHA_VALUE), /* 7.5% */ + MAKE_RGBA(rgb, 29, 29, 29, ALPHA_VALUE), /* 11.5% */ + MAKE_RGBA(rgb, 19, 19, 19, ALPHA_VALUE), /* black */ }; unsigned int x; unsigned int y; - unsigned int seed = time(NULL);; if (width < 8) return; @@ -583,9 +600,72 @@ fill_smpte_rgb32(const struct rgb_info *rgb, unsigned char *mem, ((uint32_t *)mem)[x] = colors_bottom[(x - width * 5 / 7) * 3 / (width / 7) + 4]; - for (; x < width; ++x) { - ((uint32_t *)mem)[x] = (rand_r(&seed) % 2) ? MAKE_RGBA(rgb, 255, 255, 255, 255) : MAKE_RGBA(rgb, 0, 0, 0, 255); - } + for (; x < width; ++x) + ((uint32_t *)mem)[x] = (rand_r(&rand_seed) % 2) ? MAKE_RGBA(rgb, 255, 255, 255, ALPHA_VALUE) : MAKE_RGBA(rgb, 0, 0, 0, ALPHA_VALUE); + mem += stride; + } +} + +static void +fill_smpte_rgb32_dont_care_alpha(const struct rgb_info *rgb, unsigned char *mem, + unsigned int width, unsigned int height, unsigned int stride) +{ + const uint32_t colors_top[] = { + MAKE_RGBX(rgb, 192, 192, 192), /* grey */ + MAKE_RGBX(rgb, 192, 192, 0), /* yellow */ + MAKE_RGBX(rgb, 0, 192, 192), /* cyan */ + MAKE_RGBX(rgb, 0, 192, 0), /* green */ + MAKE_RGBX(rgb, 192, 0, 192), /* magenta */ + MAKE_RGBX(rgb, 192, 0, 0), /* red */ + MAKE_RGBX(rgb, 0, 0, 192), /* blue */ + }; + const uint32_t colors_middle[] = { + MAKE_RGBX(rgb, 0, 0, 192), /* blue */ + MAKE_RGBX(rgb, 19, 19, 19), /* black */ + MAKE_RGBX(rgb, 192, 0, 192), /* magenta */ + MAKE_RGBX(rgb, 19, 19, 19), /* black */ + MAKE_RGBX(rgb, 0, 192, 192), /* cyan */ + MAKE_RGBX(rgb, 19, 19, 19), /* black */ + MAKE_RGBX(rgb, 192, 192, 192), /* grey */ + }; + const uint32_t colors_bottom[] = { + MAKE_RGBX(rgb, 0, 33, 76), /* in-phase */ + MAKE_RGBX(rgb, 255, 255, 255), /* super white */ + MAKE_RGBX(rgb, 50, 0, 106), /* quadrature */ + MAKE_RGBX(rgb, 19, 19, 19), /* black */ + MAKE_RGBX(rgb, 9, 9, 9), /* 3.5% */ + MAKE_RGBX(rgb, 19, 19, 19), /* 7.5% */ + MAKE_RGBX(rgb, 29, 29, 29), /* 11.5% */ + MAKE_RGBX(rgb, 19, 19, 19), /* black */ + }; + unsigned int x; + unsigned int y; + + if (width < 8) + return; + + for (y = 0; y < height * 6 / 9; ++y) { + for (x = 0; x < width; ++x) + ((uint32_t *)mem)[x] = colors_top[x * 7 / width]; + mem += stride; + } + + for (; y < height * 7 / 9; ++y) { + for (x = 0; x < width; ++x) + ((uint32_t *)mem)[x] = colors_middle[x * 7 / width]; + mem += stride; + } + + for (; y < height; ++y) { + for (x = 0; x < width * 5 / 7; ++x) + ((uint32_t *)mem)[x] = + colors_bottom[x * 4 / (width * 5 / 7)]; + for (; x < width * 6 / 7; ++x) + ((uint32_t *)mem)[x] = + colors_bottom[(x - width * 5 / 7) * 3 + / (width / 7) + 4]; + for (; x < width; ++x) + ((uint32_t *)mem)[x] = (rand_r(&rand_seed) % 2) ? MAKE_RGBX(rgb, 255, 255, 255) : MAKE_RGBX(rgb, 0, 0, 0); mem += stride; } } @@ -647,7 +727,6 @@ fill_smpte(const struct format_info *info, void *planes[3], unsigned int width, return fill_smpte_rgb24(&info->rgb, planes[0], width, height, stride); case TBM_FORMAT_ARGB8888: - case TBM_FORMAT_XRGB8888: case TBM_FORMAT_ABGR8888: case TBM_FORMAT_XBGR8888: case TBM_FORMAT_RGBA8888: @@ -664,6 +743,9 @@ fill_smpte(const struct format_info *info, void *planes[3], unsigned int width, case TBM_FORMAT_BGRX1010102: return fill_smpte_rgb32(&info->rgb, planes[0], width, height, stride); + case TBM_FORMAT_XRGB8888: + return fill_smpte_rgb32_dont_care_alpha(&info->rgb, planes[0], + width, height, stride); } } @@ -750,7 +832,7 @@ fill_tiles_rgb16(const struct format_info *info, unsigned char *mem, uint16_t color = MAKE_RGBA(rgb, (rgb32 >> 16) & 0xff, (rgb32 >> 8) & 0xff, rgb32 & 0xff, - 255); + ALPHA_VALUE); ((uint16_t *)mem)[x] = color; } @@ -795,7 +877,7 @@ fill_tiles_rgb32(const struct format_info *info, unsigned char *mem, uint32_t color = MAKE_RGBA(rgb, (rgb32 >> 16) & 0xff, (rgb32 >> 8) & 0xff, rgb32 & 0xff, - 255); + ALPHA_VALUE); ((uint32_t *)mem)[x] = color; } @@ -939,8 +1021,11 @@ tdm_test_buffer_fill(tbm_surface_h buffer, int pattern) void *plane[3]; int ret; + if (rand_seed == 0) + rand_seed = time(NULL); + ret = tbm_surface_map(buffer, TBM_OPTION_WRITE, &info); - TDM_EXIT_IF_FAIL(ret == 0); + assert(ret == 0); plane[0] = info.planes[0].ptr; plane[1] = info.planes[1].ptr; @@ -948,3 +1033,5 @@ tdm_test_buffer_fill(tbm_surface_h buffer, int pattern) fill_pattern(info.format, pattern, plane, info.width, info.height, info.planes[0].stride); tbm_surface_unmap(buffer); } + +/* LCOV_EXCL_END */