From 6d40bac78103841de8b92a4438258125121cbcef Mon Sep 17 00:00:00 2001 From: Boram Park Date: Fri, 16 Mar 2018 14:55:26 +0900 Subject: [PATCH 01/16] helper: remove unsupported format YUYV, UYVY doesn't seem to work properly Change-Id: I923f2e52d54e37c78af02cad0fec0ca994501ad7 --- include/tdm_helper.h | 4 ---- src/tdm_helper.c | 23 ----------------------- 2 files changed, 27 deletions(-) diff --git a/include/tdm_helper.h b/include/tdm_helper.h index 99fd638..f1f305b 100644 --- a/include/tdm_helper.h +++ b/include/tdm_helper.h @@ -66,8 +66,6 @@ tdm_helper_get_time(void); * - TBM_FORMAT_YUV420 * - TBM_FORMAT_NV12 * - TBM_FORMAT_NV21 - * - TBM_FORMAT_YUYV - * - TBM_FORMAT_UYVY * The filename extension should be "png" for TBM_FORMAT_ARGB8888 and TBM_FORMAT_XRGB8888 * or "yuv" for YUV formats. * @param[in] buffer A TDM buffer @@ -118,8 +116,6 @@ tdm_helper_clear_buffer_color(tbm_surface_h buffer, tdm_pos *pos, unsigned int c * - TBM_FORMAT_YUV420 * - TBM_FORMAT_NV12 * - TBM_FORMAT_NV21 - * - TBM_FORMAT_YUYV - * - TBM_FORMAT_UYVY * @param[in] buffer A TDM buffer */ void diff --git a/src/tdm_helper.c b/src/tdm_helper.c index c7e0983..60a8daf 100644 --- a/src/tdm_helper.c +++ b/src/tdm_helper.c @@ -326,13 +326,6 @@ tdm_helper_dump_buffer(tbm_surface_h buffer, const char *file) info.planes[1].size, NULL, 0); break; - case TBM_FORMAT_YUYV: - case TBM_FORMAT_UYVY: - _tdm_helper_dump_raw((const char*)temp, - info.planes[0].ptr, - info.planes[0].size, NULL, 0, - NULL, 0); - break; default: TDM_ERR("can't dump %c%c%c%c buffer", FOURCC_STR(info.format)); tbm_surface_unmap(buffer); @@ -383,22 +376,6 @@ tdm_helper_clear_buffer_color(tbm_surface_h buffer, tdm_pos *pos, unsigned int c memset((char*)info.planes[0].ptr, 0x10, info.planes[0].stride * info.height); memset((char*)info.planes[1].ptr, 0x80, info.planes[1].stride * (info.height >> 1)); break; - case TBM_FORMAT_YUYV: { - int *ibuf = (int*)info.planes[0].ptr; - int i, size = info.planes[0].stride * info.height / 4; - - for (i = 0 ; i < size ; i++) - ibuf[i] = 0x10801080; - } - break; - case TBM_FORMAT_UYVY: { - int *ibuf = (int*)info.planes[0].ptr; - int i, size = info.planes[0].stride * info.height / 4; - - for (i = 0 ; i < size ; i++) - ibuf[i] = 0x80108010; /* YUYV -> 0xVYUY */ - } - break; default: TDM_ERR("can't clear %c%c%c%c buffer", FOURCC_STR(info.format)); break; -- 2.7.4 From 816e82e2652e1a8611fb99899b039755dc125a46 Mon Sep 17 00:00:00 2001 From: Boram Park Date: Fri, 16 Mar 2018 14:57:03 +0900 Subject: [PATCH 02/16] buffers: fill 0xFF for alpha bits if XRGB8888 Change-Id: I11fe1caf16c54a927aaf935504d26b8e01d95337 --- tools/buffers.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/tools/buffers.c b/tools/buffers.c index 4d66f12..5cf58ef 100644 --- a/tools/buffers.c +++ b/tools/buffers.c @@ -125,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) }, @@ -186,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) } @@ -592,6 +598,70 @@ fill_smpte_rgb32(const struct rgb_info *rgb, unsigned char *mem, } 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; + } +} + +static void fill_smpte(const struct format_info *info, void *planes[3], unsigned int width, unsigned int height, unsigned int stride) { @@ -648,7 +718,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: @@ -665,6 +734,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); } } -- 2.7.4 From 7138016dff2eb947ba4f1e60c8895210c0f61f63 Mon Sep 17 00:00:00 2001 From: Boram Park Date: Fri, 16 Mar 2018 14:57:43 +0900 Subject: [PATCH 03/16] helper: copy filename Change-Id: I5d15a165ba482aad7b1280abd411035a6c57ae22 --- src/tdm_helper.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/tdm_helper.c b/src/tdm_helper.c index 60a8daf..2e00648 100644 --- a/src/tdm_helper.c +++ b/src/tdm_helper.c @@ -291,6 +291,11 @@ tdm_helper_dump_buffer(tbm_surface_h buffer, const char *file) strncat(p, ext, 3); p += 3; *p = '\0'; + } else { + len = strnlen(file, TDM_PATH_LEN - 1); + strncat(p, file, len); + p += len; + *p = '\0'; } tdm_helper_get_buffer_full_size(buffer, &bw, &bh); -- 2.7.4 From 750de60a70390cbd90a742a0895bee9482931b08 Mon Sep 17 00:00:00 2001 From: Boram Park Date: Fri, 16 Mar 2018 14:58:57 +0900 Subject: [PATCH 04/16] utests: some modification for helper Change-Id: I3fd90c2a65425478d9bcbbdbdce77a0afd14f682 --- utests/src/ut_tdm_helper.cpp | 106 ++++++++++++------------------------------- 1 file changed, 30 insertions(+), 76 deletions(-) diff --git a/utests/src/ut_tdm_helper.cpp b/utests/src/ut_tdm_helper.cpp index 815e388..9684f64 100644 --- a/utests/src/ut_tdm_helper.cpp +++ b/utests/src/ut_tdm_helper.cpp @@ -57,7 +57,23 @@ TEST_P(TDMHelper, HelperGetTime) ASSERT_GT(tdm_helper_get_time(), 0.0); } -TEST_P(TDMHelper, HelperDumpBuffer) +TEST_P(TDMHelper, HelperDumpBufferXR24) +{ + tbm_surface_h buffer; + + buffer = tbm_surface_create(TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE, TBM_FORMAT_XRGB8888); + ASSERT_NE(buffer, NULL); + + tdm_test_buffer_fill(buffer, PATTERN_SMPTE); + + char filename[256]; + snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); + tdm_helper_dump_buffer(buffer, (const char*)filename); + + tbm_surface_destroy(buffer); +} + +TEST_P(TDMHelper, HelperDumpBufferAR24) { tbm_surface_h buffer; @@ -97,9 +113,7 @@ TEST_P(TDMHelper, HelperClearBufferPos) tdm_helper_clear_buffer_pos(buffer, &pos); - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(buffer, (const char*)filename); + tdm_helper_dump_buffer_str(buffer, NULL, (char*)typeid(*this).name()); tbm_surface_destroy(buffer); } @@ -117,9 +131,7 @@ TEST_P(TDMHelper, HelperClearBufferColor) tdm_helper_clear_buffer_color(buffer, &pos, color); - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(buffer, (const char*)filename); + tdm_helper_dump_buffer_str(buffer, NULL, (char*)typeid(*this).name()); tbm_surface_destroy(buffer); } @@ -135,9 +147,7 @@ TEST_P(TDMHelper, HelperClearBufferARGB) tdm_helper_clear_buffer(buffer); - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(buffer, (const char*)filename); + tdm_helper_dump_buffer_str(buffer, NULL, (char*)typeid(*this).name()); tbm_surface_destroy(buffer); } @@ -153,9 +163,7 @@ TEST_P(TDMHelper, HelperClearBufferXRGB) tdm_helper_clear_buffer(buffer); - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(buffer, (const char*)filename); + tdm_helper_dump_buffer_str(buffer, NULL, (char*)typeid(*this).name()); tbm_surface_destroy(buffer); } @@ -171,9 +179,7 @@ TEST_P(TDMHelper, HelperClearBufferYUV420) tdm_helper_clear_buffer(buffer); - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(buffer, (const char*)filename); + tdm_helper_dump_buffer_str(buffer, NULL, (char*)typeid(*this).name()); tbm_surface_destroy(buffer); } @@ -189,9 +195,7 @@ TEST_P(TDMHelper, HelperClearBufferNV12) tdm_helper_clear_buffer(buffer); - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(buffer, (const char*)filename); + tdm_helper_dump_buffer_str(buffer, NULL, (char*)typeid(*this).name()); tbm_surface_destroy(buffer); } @@ -207,45 +211,7 @@ TEST_P(TDMHelper, HelperClearBufferNV21) tdm_helper_clear_buffer(buffer); - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(buffer, (const char*)filename); - - tbm_surface_destroy(buffer); -} - -TEST_P(TDMHelper, HelperClearBufferYUYV) -{ - tbm_surface_h buffer; - - buffer = tbm_surface_create(TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE, TBM_FORMAT_YUYV); - ASSERT_NE(buffer, NULL); - - tdm_test_buffer_fill(buffer, PATTERN_SMPTE); - - tdm_helper_clear_buffer(buffer); - - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(buffer, (const char*)filename); - - tbm_surface_destroy(buffer); -} - -TEST_P(TDMHelper, HelperClearBufferUYVY) -{ - tbm_surface_h buffer; - - buffer = tbm_surface_create(TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE, TBM_FORMAT_UYVY); - ASSERT_NE(buffer, NULL); - - tdm_test_buffer_fill(buffer, PATTERN_SMPTE); - - tdm_helper_clear_buffer(buffer); - - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(buffer, (const char*)filename); + tdm_helper_dump_buffer_str(buffer, NULL, (char*)typeid(*this).name()); tbm_surface_destroy(buffer); } @@ -284,9 +250,7 @@ TEST_P(TDMHelper, HelperConvertBufferRotate0) ASSERT_EQ(tdm_helper_convert_buffer(buffer, temp, &sp, &dp, TDM_TRANSFORM_NORMAL, 0), TDM_ERROR_NONE); - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(temp, (const char*)filename); + tdm_helper_dump_buffer_str(temp, NULL, (char*)typeid(*this).name()); tbm_surface_destroy(buffer); tbm_surface_destroy(temp); @@ -309,9 +273,7 @@ TEST_P(TDMHelper, HelperConvertBufferRotate0Flip) ASSERT_EQ(tdm_helper_convert_buffer(buffer, temp, &sp, &dp, TDM_TRANSFORM_FLIPPED, 0), TDM_ERROR_NONE); - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(temp, (const char*)filename); + tdm_helper_dump_buffer_str(temp, NULL, (char*)typeid(*this).name()); tbm_surface_destroy(buffer); tbm_surface_destroy(temp); @@ -334,9 +296,7 @@ TEST_P(TDMHelper, HelperConvertBufferRotate90) ASSERT_EQ(tdm_helper_convert_buffer(buffer, temp, &sp, &dp, TDM_TRANSFORM_90, 0), TDM_ERROR_NONE); - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(temp, (const char*)filename); + tdm_helper_dump_buffer_str(temp, NULL, (char*)typeid(*this).name()); tbm_surface_destroy(buffer); tbm_surface_destroy(temp); @@ -359,9 +319,7 @@ TEST_P(TDMHelper, HelperConvertBufferRotate180) ASSERT_EQ(tdm_helper_convert_buffer(buffer, temp, &sp, &dp, TDM_TRANSFORM_180, 0), TDM_ERROR_NONE); - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(temp, (const char*)filename); + tdm_helper_dump_buffer_str(temp, NULL, (char*)typeid(*this).name()); tbm_surface_destroy(buffer); tbm_surface_destroy(temp); @@ -384,9 +342,7 @@ TEST_P(TDMHelper, HelperConvertBufferRotate270) ASSERT_EQ(tdm_helper_convert_buffer(buffer, temp, &sp, &dp, TDM_TRANSFORM_270, 0), TDM_ERROR_NONE); - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(temp, (const char*)filename); + tdm_helper_dump_buffer_str(temp, NULL, (char*)typeid(*this).name()); tbm_surface_destroy(buffer); tbm_surface_destroy(temp); @@ -465,9 +421,7 @@ TEST_P(TDMHelper, HelperCaptureOutput) ASSERT_EQ(tdm_helper_capture_output(output, dump, 0, 0, TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE, _ut_tdm_helper_capture_cb, NULL), TDM_ERROR_NONE); - char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); - tdm_helper_dump_buffer(dump, (const char*)filename); + tdm_helper_dump_buffer_str(dump, NULL, (char*)typeid(*this).name()); tbm_surface_destroy(dump); } -- 2.7.4 From 091107115925fecd09cd10d25766eda7fc61c690 Mon Sep 17 00:00:00 2001 From: Boram Park Date: Fri, 16 Mar 2018 14:59:19 +0900 Subject: [PATCH 05/16] utests: modification for macro Change-Id: Ia2a14839ca265a86e7869bd62719dd3c05681966 --- utests/src/ut_tdm.h | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/utests/src/ut_tdm.h b/utests/src/ut_tdm.h index 83f1bcb..8ffd5f2 100644 --- a/utests/src/ut_tdm.h +++ b/utests/src/ut_tdm.h @@ -122,11 +122,28 @@ extern bool enable_porting_debug; GTEST_FATAL_FAILURE_("tc failed"); \ if (ch == 'r' || ch == 'R') \ goto retry; \ - } else { \ - usleep(1000000); /* 1000 ms */ \ } \ } while (0) +#define TDM_UT_ASK_YN(fmt, ...) \ + do { \ + if (enable_porting_debug) { \ + char ch; \ + printf(fmt" [Y]es, [n]o: ", ##__VA_ARGS__); \ + do { \ + ch = getchar(); \ + if (ch == '\n') \ + ch = 'y'; \ + else { \ + char tch; \ + while ((tch = getchar()) != '\n' && tch != EOF); \ + } \ + } while (ch != 'y' && ch != 'Y' && ch != 'n' && ch != 'N'); \ + if (ch == 'n' || ch == 'N') \ + GTEST_FATAL_FAILURE_("tc failed"); \ + } \ + } while (0) + #define TDM_UT_SIZE_ALIGN(value, base) (((value) + ((base) - 1)) & ~((base) - 1)) #define TDM_UT_DUMP_DIR "/tmp/tdm_dump" -- 2.7.4 From da0e76b53bb7981c3164389cfff0e88612bd300c Mon Sep 17 00:00:00 2001 From: Boram Park Date: Fri, 16 Mar 2018 16:42:40 +0900 Subject: [PATCH 06/16] buffers: use rand_r to draw noise color Change-Id: I44ce0464c620b77ab20540b75b9dcaeb49202040 --- tools/buffers.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/tools/buffers.c b/tools/buffers.c index 5cf58ef..ea88179 100644 --- a/tools/buffers.c +++ b/tools/buffers.c @@ -254,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; } @@ -292,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; -- 2.7.4 From fb7f3017b0fb6c9e569562ae38db5dbfdb206b86 Mon Sep 17 00:00:00 2001 From: Boram Park Date: Fri, 16 Mar 2018 17:05:54 +0900 Subject: [PATCH 07/16] pp: add TDM_PP_CAPABILITY_NO_CSC Change-Id: I4e71eed1b65b3194e4578ad07270f6c17af3a217 --- include/tdm_common.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/tdm_common.h b/include/tdm_common.h index db7e087..f847a77 100644 --- a/include/tdm_common.h +++ b/include/tdm_common.h @@ -155,6 +155,7 @@ typedef enum { TDM_PP_CAPABILITY_SCALE = (1 << 4), /**< The pp device supports scale operation */ TDM_PP_CAPABILITY_TRANSFORM = (1 << 5), /**< The pp device supports transform operation */ TDM_PP_CAPABILITY_SCANOUT = (1 << 6), /**< The pp device supports only scanout buffer */ + TDM_PP_CAPABILITY_NO_CSC = (1 << 7), /**< The pp device doesnt supports Color Space Conversion */ } tdm_pp_capability; /** -- 2.7.4 From 52b4aa6c9d216c59c616023e2000150ac5351915 Mon Sep 17 00:00:00 2001 From: Boram Park Date: Fri, 16 Mar 2018 17:20:02 +0900 Subject: [PATCH 08/16] package version up to 1.16.6 Change-Id: Ic5461303138ef6207b2fcafaaa17fd45cdbf33ff --- packaging/libtdm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/libtdm.spec b/packaging/libtdm.spec index 13b2af7..90ebc54 100644 --- a/packaging/libtdm.spec +++ b/packaging/libtdm.spec @@ -2,7 +2,7 @@ %define UTEST_GCOV 0 Name: libtdm -Version: 1.16.5 +Version: 1.16.6 Release: 0 Summary: User Library of Tizen Display Manager Group: Development/Libraries -- 2.7.4 From c207a7469c409c109bb1b0e47fb3eb7d2ab0327a Mon Sep 17 00:00:00 2001 From: Boram Park Date: Mon, 19 Mar 2018 13:29:41 +0900 Subject: [PATCH 09/16] layer: add tdm_layer_get_index() Change-Id: Id0e660ba20bd586a8368c4fc4256aa4a01ea246e --- include/tdm.h | 9 +++++++++ src/tdm_layer.c | 16 ++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/include/tdm.h b/include/tdm.h index bc1f0ef..0340142 100644 --- a/include/tdm.h +++ b/include/tdm.h @@ -771,6 +771,15 @@ tdm_output* tdm_layer_get_output(tdm_layer *layer, tdm_error *error); /** + * @brief Get the index of a layer object. + * @param[in] layer A layer object + * @param[out] index The index of a layer object + * @return #TDM_ERROR_NONE if success. Otherwise, error value. + */ +tdm_error +tdm_layer_get_index(tdm_layer *layer, int *index); + +/** * @brief Get the capabilities of a layer object. * @param[in] layer A layer object * @param[out] capabilities The capabilities of a layer object diff --git a/src/tdm_layer.c b/src/tdm_layer.c index 45029f5..93fe90c 100644 --- a/src/tdm_layer.c +++ b/src/tdm_layer.c @@ -99,6 +99,22 @@ tdm_layer_get_output(tdm_layer *layer, tdm_error *error) } EXTERN tdm_error +tdm_layer_get_index(tdm_layer *layer, int *index) +{ + LAYER_FUNC_ENTRY(); + + TDM_RETURN_VAL_IF_FAIL(index != NULL, TDM_ERROR_INVALID_PARAMETER); + + _pthread_mutex_lock(&private_display->lock); + + *index = private_layer->index; + + _pthread_mutex_unlock(&private_display->lock); + + return ret; +} + +EXTERN tdm_error tdm_layer_get_capabilities(tdm_layer *layer, tdm_layer_capability *capabilities) { LAYER_FUNC_ENTRY(); -- 2.7.4 From ebd18f713fed50ad66a14f62ba78318c2d93b809 Mon Sep 17 00:00:00 2001 From: Boram Park Date: Mon, 19 Mar 2018 13:30:33 +0900 Subject: [PATCH 10/16] layer: enhance debugging logs Change-Id: Iccea69b432837b72158a2a864b2f6d00871a95ae --- src/tdm_layer.c | 75 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/src/tdm_layer.c b/src/tdm_layer.c index 93fe90c..daefb98 100644 --- a/src/tdm_layer.c +++ b/src/tdm_layer.c @@ -195,7 +195,7 @@ tdm_layer_set_property(tdm_layer *layer, unsigned int id, tdm_value value) func_layer = &private_module->func_layer; if (private_layer->usable) - TDM_INFO("layer(%p,%d) not usable", private_layer, private_layer->caps.zpos); + TDM_INFO("layer(%p,%d) not usable", private_layer, private_layer->index); private_layer->usable = 0; @@ -254,7 +254,7 @@ tdm_layer_set_info_internal(tdm_private_layer *private_layer, tdm_info_layer *in func_layer = &private_module->func_layer; if (private_layer->usable) - TDM_INFO("layer(%p,%d) not usable", private_layer, private_layer->caps.zpos); + TDM_INFO("layer(%p,%d) not usable", private_layer, private_layer->index); private_layer->usable = 0; @@ -271,7 +271,7 @@ tdm_layer_set_info_internal(tdm_private_layer *private_layer, tdm_info_layer *in snprintf(fmtstr, 128, "NONE"); TDM_INFO("layer(%p,%d) info: src(%ux%u %u,%u %ux%u %s) dst(%u,%u %ux%u) trans(%d)", - private_layer, private_layer->caps.zpos, + private_layer, private_layer->index, info->src_config.size.h, info->src_config.size.v, info->src_config.pos.x, info->src_config.pos.y, info->src_config.pos.w, info->src_config.pos.h, @@ -401,7 +401,7 @@ _tdm_layer_free_all_buffers(tdm_private_layer *private_layer) if (tdm_debug_module & TDM_DEBUG_BUFFER) TDM_INFO("layer(%p,%d) waiting_buffer(%p)", - private_layer, private_layer->caps.zpos, private_layer->waiting_buffer); + private_layer, private_layer->index, private_layer->waiting_buffer); } if (private_layer->committed_buffer) { @@ -410,7 +410,7 @@ _tdm_layer_free_all_buffers(tdm_private_layer *private_layer) if (tdm_debug_module & TDM_DEBUG_BUFFER) TDM_INFO("layer(%p,%d) committed_buffer(%p)", - private_layer, private_layer->caps.zpos, private_layer->committed_buffer); + private_layer, private_layer->index, private_layer->committed_buffer); } if (private_layer->showing_buffer) { @@ -419,7 +419,7 @@ _tdm_layer_free_all_buffers(tdm_private_layer *private_layer) if (tdm_debug_module & TDM_DEBUG_BUFFER) TDM_INFO("layer(%p,%d) showing_buffer(%p)", - private_layer, private_layer->caps.zpos, private_layer->showing_buffer); + private_layer, private_layer->index, private_layer->showing_buffer); } LIST_FOR_EACH_ENTRY_SAFE(lm, lmm, &private_output->layer_commit_handler_list, link) { @@ -482,7 +482,7 @@ tdm_layer_set_buffer_internal(tdm_private_layer *private_layer, tbm_surface_h bu func_layer = &private_module->func_layer; if (private_layer->usable) - TDM_INFO("layer(%p,%d) not usable", private_layer, private_layer->caps.zpos); + TDM_INFO("layer(%p,%d) not usable", private_layer, private_layer->index); private_layer->usable = 0; @@ -499,7 +499,7 @@ tdm_layer_set_buffer_internal(tdm_private_layer *private_layer, tbm_surface_h bu if (tdm_debug_module & TDM_DEBUG_BUFFER) TDM_INFO("layer(%p,%d) pending_buffer(%p) skipped", - private_layer, private_layer->caps.zpos, private_layer->pending_buffer); + private_layer, private_layer->index, private_layer->pending_buffer); if (tdm_ttrace_module & TDM_TTRACE_LAYER) { tbm_bo bo = tbm_surface_internal_get_bo(private_layer->pending_buffer, 0); @@ -512,9 +512,12 @@ tdm_layer_set_buffer_internal(tdm_private_layer *private_layer, tbm_surface_h bu tbm_surface_internal_ref(buffer); private_layer->pending_buffer = buffer; - if (tdm_debug_module & TDM_DEBUG_BUFFER) - TDM_INFO("layer(%p,%d) pending_buffer(%p)", - private_layer, private_layer->caps.zpos, private_layer->pending_buffer); + if (tdm_debug_module & TDM_DEBUG_BUFFER) { + tbm_bo bo = tbm_surface_internal_get_bo(private_layer->pending_buffer, 0); + int flags = tbm_bo_get_flags(bo); + TDM_INFO("layer(%p,%d) pending_buffer(%p) bo_flags(%x)", + private_layer, private_layer->index, private_layer->pending_buffer, flags); + } if (tdm_ttrace_module & TDM_TTRACE_LAYER) { tbm_bo bo = tbm_surface_internal_get_bo(private_layer->pending_buffer, 0); @@ -555,7 +558,7 @@ tdm_layer_unset_buffer_internal(tdm_private_layer *private_layer) private_layer->usable = 1; if (private_layer->usable) - TDM_INFO("layer(%p,%d) now usable", private_layer, private_layer->caps.zpos); + TDM_INFO("layer(%p,%d) now usable", private_layer, private_layer->index); if (!func_layer->layer_unset_buffer) { /* LCOV_EXCL_START */ @@ -598,7 +601,7 @@ tdm_layer_committed(tdm_private_layer *private_layer, tdm_private_layer_buffer * private_layer->fps_stamp = curr; } else if ((curr - private_layer->fps_stamp) > 1.0) { TDM_INFO("output(%d) layer(%p,%d) fps: %d", - private_output->index, private_layer, private_layer->caps.zpos, private_layer->fps_count); + private_output->index, private_layer, private_layer->index, private_layer->fps_count); private_layer->fps_count = 0; private_layer->fps_stamp = curr; } else @@ -623,7 +626,7 @@ tdm_layer_committed(tdm_private_layer *private_layer, tdm_private_layer_buffer * if (tdm_debug_module & TDM_DEBUG_BUFFER) TDM_INFO("layer(%p,%d) committed_buffer(%p) showing_buffer(%p)", - private_layer, private_layer->caps.zpos, *committed_buffer, + private_layer, private_layer->index, *committed_buffer, (private_layer->showing_buffer) ? private_layer->showing_buffer->buffer : NULL); } @@ -658,7 +661,7 @@ _tdm_layer_got_output_vblank(tdm_private_output *private_output, unsigned int se LIST_FOR_EACH_ENTRY_SAFE(lm, lmm, &clone_list, link) { if (tdm_debug_module & TDM_DEBUG_COMMIT) TDM_INFO("layer(%p,%d) committed. handle(%p) commited_buffer(%p)", - lm->private_layer, lm->private_layer->caps.zpos, lm, (lm->committed_buffer) ? lm->committed_buffer->buffer : NULL); + lm->private_layer, lm->private_layer->index, lm, (lm->committed_buffer) ? lm->committed_buffer->buffer : NULL); LIST_DEL(&lm->link); tdm_layer_committed(lm->private_layer, &lm->committed_buffer); @@ -761,7 +764,7 @@ _tdm_layer_cb_output_commit(tdm_output *output, unsigned int sequence, if (tdm_debug_module & TDM_DEBUG_COMMIT) TDM_INFO("layer(%p,%d) commit: output(%d) committed. handle(%p)", - private_layer, private_layer->caps.zpos, private_output->pipe, layer_commit_handler); + private_layer, private_layer->index, private_output->pipe, layer_commit_handler); _pthread_mutex_lock(&private_display->lock); @@ -833,19 +836,19 @@ _tdm_layer_commit_possible(tdm_private_layer *private_layer) if (!LIST_IS_EMPTY(&private_output->layer_commit_handler_list)) { if (tdm_debug_module & TDM_DEBUG_COMMIT) TDM_INFO("layer(%p,%d) commit: not possible(previous commit)", - private_layer, private_layer->caps.zpos); + private_layer, private_layer->index); return 0; } if (private_output->commit_per_vblank == 1 && _tdm_lauer_get_output_used_layer_count(private_output) > 1) { if (tdm_debug_module & TDM_DEBUG_COMMIT) TDM_INFO("layer(%p,%d) commit: not possible(more than 2 layers)", - private_layer, private_layer->caps.zpos); + private_layer, private_layer->index); return 0; } if (tdm_debug_module & TDM_DEBUG_COMMIT) - TDM_INFO("layer(%p,%d) commit: possible", private_layer, private_layer->caps.zpos); + TDM_INFO("layer(%p,%d) commit: possible", private_layer, private_layer->index); return 1; } @@ -891,7 +894,7 @@ tdm_layer_commit_pending_data(tdm_private_layer *private_layer) if (tdm_debug_module & TDM_DEBUG_BUFFER) TDM_INFO("layer(%p,%d) pending_buffer(%p) committed", - private_layer, private_layer->caps.zpos, private_layer->pending_buffer); + private_layer, private_layer->index, private_layer->pending_buffer); if (ret == TDM_ERROR_NONE) { if (private_layer->waiting_buffer) @@ -901,7 +904,7 @@ tdm_layer_commit_pending_data(tdm_private_layer *private_layer) private_layer->waiting_buffer->buffer = tdm_buffer_ref_backend(private_layer->pending_buffer); if (tdm_debug_module & TDM_DEBUG_BUFFER) TDM_INFO("layer(%p,%d) waiting_buffer(%p)", - private_layer, private_layer->caps.zpos, private_layer->waiting_buffer->buffer); + private_layer, private_layer->index, private_layer->waiting_buffer->buffer); } else tdm_layer_free_buffer(private_layer, layer_buffer); } @@ -931,7 +934,7 @@ _tdm_layer_commit(tdm_layer *layer, tdm_layer_commit_handler func, void *user_da } if (tdm_debug_module & TDM_DEBUG_COMMIT) - TDM_INFO("layer(%p,%d) commit: handle(%p)", private_layer, private_layer->caps.zpos, layer_commit_handler); + TDM_INFO("layer(%p,%d) commit: handle(%p)", private_layer, private_layer->index, layer_commit_handler); LIST_INITHEAD(&layer_commit_handler->link); layer_commit_handler->private_layer = private_layer; @@ -942,13 +945,13 @@ _tdm_layer_commit(tdm_layer *layer, tdm_layer_commit_handler func, void *user_da private_layer->waiting_buffer = NULL; if (private_layer->committing) - TDM_WRN("layer(%p,%d) too many commit", private_layer, private_layer->caps.zpos); + TDM_WRN("layer(%p,%d) too many commit", private_layer, private_layer->index); else private_layer->committing = 1; if (tdm_debug_module & TDM_DEBUG_BUFFER) TDM_INFO("layer(%p,%d) waiting_buffer(%p) committed_buffer(%p)", - private_layer, private_layer->caps.zpos, private_layer->waiting_buffer, + private_layer, private_layer->index, private_layer->waiting_buffer, (layer_commit_handler->committed_buffer) ? layer_commit_handler->committed_buffer->buffer : NULL); if (!private_output->commit_per_vblank) { @@ -959,7 +962,7 @@ _tdm_layer_commit(tdm_layer *layer, tdm_layer_commit_handler func, void *user_da TDM_GOTO_IF_FAIL(ret == TDM_ERROR_NONE, commit_failed); if (tdm_debug_module & TDM_DEBUG_COMMIT) - TDM_INFO("layer(%p,%d) commit: no commit-per-vblank", private_layer, private_layer->caps.zpos); + TDM_INFO("layer(%p,%d) commit: no commit-per-vblank", private_layer, private_layer->index); } else { TDM_GOTO_IF_FAIL(private_output->commit_type == TDM_COMMIT_TYPE_LAYER, commit_failed); @@ -970,13 +973,13 @@ _tdm_layer_commit(tdm_layer *layer, tdm_layer_commit_handler func, void *user_da TDM_GOTO_IF_FAIL(ret == TDM_ERROR_NONE, commit_failed); if (tdm_debug_module & TDM_DEBUG_COMMIT) - TDM_INFO("layer(%p,%d) commit: output", private_layer, private_layer->caps.zpos); + TDM_INFO("layer(%p,%d) commit: output", private_layer, private_layer->index); } else { /* add to pending_commit_handler_list. It will be commited when a vblank occurs */ LIST_ADDTAIL(&layer_commit_handler->link, &private_output->pending_commit_handler_list); if (tdm_debug_module & TDM_DEBUG_COMMIT) - TDM_INFO("layer(%p,%d) commit: pending", private_layer, private_layer->caps.zpos); + TDM_INFO("layer(%p,%d) commit: pending", private_layer, private_layer->index); } if (!private_output->vblank) { @@ -996,7 +999,7 @@ _tdm_layer_commit(tdm_layer *layer, tdm_layer_commit_handler func, void *user_da private_output->layer_waiting_vblank = 1; if (tdm_debug_module & TDM_DEBUG_COMMIT) - TDM_INFO("layer(%p,%d) commit: wait vblank", private_layer, private_layer->caps.zpos); + TDM_INFO("layer(%p,%d) commit: wait vblank", private_layer, private_layer->index); } } @@ -1025,7 +1028,7 @@ tdm_layer_commit_internal(tdm_private_layer *private_layer, tdm_layer_commit_han } if (TDM_OUTPUT_DPMS_VSYNC_IS_OFF(private_output->current_dpms_value)) { - TDM_ERR("layer(%p,%d)'s output(%d) dpms: %s", private_layer, private_layer->caps.zpos, private_output->pipe, + TDM_ERR("layer(%p,%d)'s output(%d) dpms: %s", private_layer, private_layer->index, private_output->pipe, tdm_dpms_str(private_output->current_dpms_value)); return TDM_ERROR_DPMS_OFF; } @@ -1033,7 +1036,7 @@ tdm_layer_commit_internal(tdm_private_layer *private_layer, tdm_layer_commit_han /* don't call this inside of _tdm_layer_commit */ ret = tdm_layer_commit_pending_data(private_layer); if (ret != TDM_ERROR_NONE) { - TDM_ERR("layer(%p,%d) committing pending data failed", private_layer, private_layer->caps.zpos); + TDM_ERR("layer(%p,%d) committing pending data failed", private_layer, private_layer->index); return ret; } @@ -1135,7 +1138,7 @@ tdm_layer_get_displaying_buffer(tdm_layer *layer, tdm_error *error) buffer = private_layer->showing_buffer->buffer; } else { _pthread_mutex_unlock(&private_display->lock); - TDM_DBG("layer(%p,%d) showing_buffer is null", private_layer, private_layer->caps.zpos); + TDM_DBG("layer(%p,%d) showing_buffer is null", private_layer, private_layer->index); return NULL; } _pthread_mutex_unlock(&private_display->lock); @@ -1169,7 +1172,7 @@ _tbm_layer_queue_acquirable_cb(tbm_surface_queue_h surface_queue, void *data) buffer == NULL) { /* LCOV_EXCL_START */ TDM_ERR("layer(%p,%d) tbm_surface_queue_acquire() failed surface:%p", - private_layer, private_layer->caps.zpos, buffer); + private_layer, private_layer->index, buffer); _pthread_mutex_unlock(&private_display->lock); return; /* LCOV_EXCL_STOP */ @@ -1224,7 +1227,7 @@ tdm_layer_set_buffer_queue(tdm_layer *layer, tbm_surface_queue_h buffer_queue) func_layer = &private_module->func_layer; if (private_layer->usable) - TDM_INFO("layer(%p,%d) not usable", private_layer, private_layer->caps.zpos); + TDM_INFO("layer(%p,%d) not usable", private_layer, private_layer->index); private_layer->usable = 0; @@ -1247,7 +1250,7 @@ tdm_layer_set_buffer_queue(tdm_layer *layer, tbm_surface_queue_h buffer_queue) if (tdm_debug_module & TDM_DEBUG_BUFFER) TDM_INFO("layer(%p,%d) waiting_buffer(%p)", - private_layer, private_layer->caps.zpos, private_layer->waiting_buffer); + private_layer, private_layer->index, private_layer->waiting_buffer); } private_layer->buffer_queue = buffer_queue; @@ -1297,7 +1300,7 @@ tdm_layer_set_video_pos(tdm_layer *layer, int zpos) func_layer = &private_module->func_layer; if (!(private_layer->caps.capabilities & TDM_LAYER_CAPABILITY_VIDEO)) { - TDM_ERR("layer(%p,%d) is not video layer", private_layer, private_layer->caps.zpos); + TDM_ERR("layer(%p,%d) is not video layer", private_layer, private_layer->index); _pthread_mutex_unlock(&private_display->lock); return TDM_ERROR_BAD_REQUEST; } @@ -1305,7 +1308,7 @@ tdm_layer_set_video_pos(tdm_layer *layer, int zpos) if (!func_layer->layer_set_video_pos) { /* LCOV_EXCL_START */ _pthread_mutex_unlock(&private_display->lock); - TDM_ERR("layer(%p,%d) not implemented!!", private_layer, private_layer->caps.zpos); + TDM_ERR("layer(%p,%d) not implemented!!", private_layer, private_layer->index); return TDM_ERROR_NOT_IMPLEMENTED; /* LCOV_EXCL_STOP */ } -- 2.7.4 From 4b88e017f92c7ee8e01ce8f3edef3fb413aef61b Mon Sep 17 00:00:00 2001 From: Boram Park Date: Mon, 19 Mar 2018 13:53:05 +0900 Subject: [PATCH 11/16] pp: enhance debugging logs Change-Id: I447c3e9f8a1f359511976479d06d39c31f964292 --- src/tdm_pp.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/tdm_pp.c b/src/tdm_pp.c index ae5022e..c22fee0 100644 --- a/src/tdm_pp.c +++ b/src/tdm_pp.c @@ -63,7 +63,12 @@ _tdm_pp_print_list(struct list_head *list) p = str; LIST_FOR_EACH_ENTRY(b, list, link) { if (len > 0) { - int l = snprintf(p, len, " (%p,%p)", b->src, b->dst); + tbm_bo src_bo = tbm_surface_internal_get_bo(b->src, 0); + tbm_bo dst_bo = tbm_surface_internal_get_bo(b->dst, 0); + int src_flags = tbm_bo_get_flags(src_bo); + int dst_flags = tbm_bo_get_flags(dst_bo); + int l = snprintf(p, len, " (%p[bo_flags:%x], %p[bo_flags:%x])", + b->src, src_flags, b->dst, dst_flags); p += l; len -= l; } else -- 2.7.4 From 2da9e7de29e296079b687cade8258fc77acd12ec Mon Sep 17 00:00:00 2001 From: Boram Park Date: Mon, 19 Mar 2018 13:53:11 +0900 Subject: [PATCH 12/16] capture: enhance debugging logs Change-Id: I54b5cc0ffb52ea8abc11b26b5763064524d960f7 --- src/tdm_capture.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/tdm_capture.c b/src/tdm_capture.c index b0acba2..618fb35 100644 --- a/src/tdm_capture.c +++ b/src/tdm_capture.c @@ -63,7 +63,9 @@ _tdm_capture_print_list(struct list_head *list) p = str; LIST_FOR_EACH_ENTRY(b, list, link) { if (len > 0) { - int l = snprintf(p, len, " (%p)", b->buffer); + tbm_bo bo = tbm_surface_internal_get_bo(b->buffer, 0); + int flags = tbm_bo_get_flags(bo); + int l = snprintf(p, len, " (%p[bo_flags:%x])", b->buffer, flags); p += l; len -= l; } else @@ -644,6 +646,12 @@ tdm_capture_commit(tdm_capture *capture) LIST_ADDTAIL(&b->commit_link, &commit_buffer_list); } + if (tdm_debug_module & TDM_DEBUG_BUFFER) { + TDM_INFO("capture(%p) committed:", private_capture); + _tdm_capture_print_list(&private_capture->pending_buffer_list); + _tdm_capture_print_list(&private_capture->buffer_list); + } + ret = func_capture->capture_commit(private_capture->capture_module); TDM_WARNING_IF_FAIL(ret == TDM_ERROR_NONE); -- 2.7.4 From bf8cde72bd48541c5821f7651e9c98bfaea981ca Mon Sep 17 00:00:00 2001 From: Boram Park Date: Tue, 20 Mar 2018 10:10:22 +0900 Subject: [PATCH 13/16] buffer: enhance debugging logs Change-Id: If1fda435f672768ab0a46a1c4e0f18dcc991fad8 --- src/tdm_buffer.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/tdm_buffer.c b/src/tdm_buffer.c index e437a58..72d9d17 100644 --- a/src/tdm_buffer.c +++ b/src/tdm_buffer.c @@ -203,6 +203,9 @@ tdm_buffer_ref_backend(tbm_surface_h buffer) buf_info->backend_ref_count++; tbm_surface_internal_ref(buffer); + if (tdm_debug_module & TDM_DEBUG_BUFFER) + TDM_INFO("buffer(%p) backend_ref_count(%d)", buffer, buf_info->backend_ref_count); + return buffer; } @@ -218,13 +221,17 @@ tdm_buffer_unref_backend(tbm_surface_h buffer) TDM_RETURN_IF_FAIL(buf_info != NULL); buf_info->backend_ref_count--; + + if (tdm_debug_module & TDM_DEBUG_BUFFER) + TDM_INFO("buffer(%p) backend_ref_count(%d)", buffer, buf_info->backend_ref_count); + if (buf_info->backend_ref_count > 0) { tbm_surface_internal_unref(buffer); return; } -// if (!tdm_thread_in_display_thread(syscall(SYS_gettid))) -// TDM_NEVER_GET_HERE(); + if (tdm_debug_module & TDM_DEBUG_BUFFER) + TDM_INFO("buffer(%p) released", buffer); tbm_surface_internal_ref(buffer); LIST_FOR_EACH_ENTRY_SAFE(func_info, next, &buf_info->release_funcs, link) -- 2.7.4 From 715ed9fb56c4c3d2624690c493799a8f27a1e00c Mon Sep 17 00:00:00 2001 From: Boram Park Date: Tue, 20 Mar 2018 10:11:32 +0900 Subject: [PATCH 14/16] output: enhance debugging logs Change-Id: I01db98634347826e9a3f9b22eafa77a233d86a18 --- src/tdm_output.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/tdm_output.c b/src/tdm_output.c index bf353ce..bb2710c 100644 --- a/src/tdm_output.c +++ b/src/tdm_output.c @@ -1172,8 +1172,14 @@ tdm_output_commit_internal(tdm_output *output, int sync, tdm_output_commit_handl if (!private_layer->waiting_buffer) continue; - if (private_layer->committed_buffer) + if (private_layer->committed_buffer) { tdm_layer_free_buffer(private_layer, private_layer->committed_buffer); + private_layer->committed_buffer = NULL; + if (tdm_debug_module & TDM_DEBUG_BUFFER) + TDM_INFO("layer(%p) waiting_buffer(%p) committed_buffer(%p)", + private_layer, private_layer->waiting_buffer->buffer, + private_layer->committed_buffer); + } private_layer->committed_buffer = private_layer->waiting_buffer; private_layer->waiting_buffer = NULL; -- 2.7.4 From 85de7e2c5aee819eaa922c2efd3d38fffcb24d9f Mon Sep 17 00:00:00 2001 From: Boram Park Date: Mon, 19 Mar 2018 14:10:22 +0900 Subject: [PATCH 15/16] pp: remove unuseful pp capabilities scale and transform seems as the default pp capabilities. Change-Id: I68eff0222105f1e255210ea1ebe58a22599af32a --- include/tdm_common.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/include/tdm_common.h b/include/tdm_common.h index f847a77..e97170b 100644 --- a/include/tdm_common.h +++ b/include/tdm_common.h @@ -152,10 +152,8 @@ typedef enum { typedef enum { TDM_PP_CAPABILITY_SYNC = (1 << 0), /**< The pp device supports synchronous operation */ TDM_PP_CAPABILITY_ASYNC = (1 << 1), /**< The pp device supports asynchronous operation */ - TDM_PP_CAPABILITY_SCALE = (1 << 4), /**< The pp device supports scale operation */ - TDM_PP_CAPABILITY_TRANSFORM = (1 << 5), /**< The pp device supports transform operation */ - TDM_PP_CAPABILITY_SCANOUT = (1 << 6), /**< The pp device supports only scanout buffer */ - TDM_PP_CAPABILITY_NO_CSC = (1 << 7), /**< The pp device doesnt supports Color Space Conversion */ + TDM_PP_CAPABILITY_SCANOUT = (1 << 4), /**< The pp device supports only scanout buffer */ + TDM_PP_CAPABILITY_NO_CSC = (1 << 5), /**< The pp device doesn't supports Color Space Conversion */ } tdm_pp_capability; /** -- 2.7.4 From 0ca0cdc7d3caf4aa3a0f95e194e5478bf1dc92aa Mon Sep 17 00:00:00 2001 From: Boram Park Date: Mon, 19 Mar 2018 19:46:00 +0900 Subject: [PATCH 16/16] pp: correct debugging logs Change-Id: I599a9e78919b0a0195f0ccee3c0b41544614b7fa --- src/tdm_pp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tdm_pp.c b/src/tdm_pp.c index c22fee0..bca4cd8 100644 --- a/src/tdm_pp.c +++ b/src/tdm_pp.c @@ -60,6 +60,7 @@ _tdm_pp_print_list(struct list_head *list) TDM_RETURN_IF_FAIL(list != NULL); + str[0] = '\0'; p = str; LIST_FOR_EACH_ENTRY(b, list, link) { if (len > 0) { -- 2.7.4