bool FindLayerOverPrimary(void);
bool PreparePP(void);
bool PrepareBuffers(int sw, int sh, tbm_format sf, int dw, int dh, tbm_format df, tdm_transform t);
+ bool TestLayerShow(int sw, int sh, tbm_format sf, int dw, int dh, tbm_format df, tdm_transform t);
void ShowBuffer(int b);
void HideLayer(void);
void DumpBuffer(int b, char *test);
return true;
}
+static void
+_tc_tdm_pp_done_cb(tdm_pp *pp, tbm_surface_h src, tbm_surface_h dst, void *user_data)
+{
+ bool *done = (bool*)user_data;
+ if (done)
+ *done = true;
+}
+
+bool TDMBackendPP::TestLayerShow(int sw, int sh, tbm_format sf, int dw, int dh, tbm_format df, tdm_transform t)
+{
+ bool done;
+
+ TDM_UT_INFO("* testing for %c%c%c%c", FOURCC_STR(df));
+
+ DestroyPP();
+ DestroyBuffers();
+
+ TDM_UT_RETURN_FALSE_IF_FAIL(PreparePP() == true);
+
+ TDM_UT_RETURN_FALSE_IF_FAIL(PrepareBuffers(sw, sh, sf,
+ dw, dh, df,
+ t) == true);
+
+ TDM_UT_RETURN_FALSE_IF_FAIL(tdm_pp_set_done_handler(pp, _tc_tdm_pp_done_cb, &done) == TDM_ERROR_NONE);
+
+ for (int b = 0; b < 3; b++) {
+ done = false;
+
+ TDM_UT_RETURN_FALSE_IF_FAIL(tdm_pp_attach(pp, srcbuf[b], dstbuf[b]) == TDM_ERROR_NONE);
+ TDM_UT_RETURN_FALSE_IF_FAIL(tdm_pp_commit(pp) == TDM_ERROR_NONE);
+
+ while (!done)
+ TDM_UT_RETURN_FALSE_IF_FAIL(tc_tdm_display_handle_events(dpy) == TDM_ERROR_NONE);
+
+#if 0
+ char temp[256];
+ snprintf(temp, sizeof temp, "f%d_b%d", f, b);
+ DumpBuffer(b, temp);
+#endif
+ ShowBuffer(b);
+ }
+
+ return true;
+}
+
bool TDMBackendPP::FindLayerUnderPrimary(void)
{
tdm_error ret;
DestroyPP();
}
-static void
-_tc_tdm_pp_done_cb(tdm_pp *pp, tbm_surface_h src, tbm_surface_h dst, void *user_data)
-{
- bool *done = (bool*)user_data;
- if (done)
- *done = true;
-}
-
TEST_P(TDMBackendPP, PPSetDoneHandler)
{
TDM_UT_SKIP_FLAG(tc_tdm_display_has_pp_capability(dpy));
EXPECT_NE(dst_layer, NULL);
for (int f = 0; f < dst_format_count; f++) {
- bool done;
-
- TDM_UT_INFO("* testing for %c%c%c%c", FOURCC_STR(dst_formats[f]));
-
- EXPECT_EQ(PreparePP(), true);
-
- EXPECT_EQ(PrepareBuffers(TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, dst_formats[f],
- TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, dst_formats[f],
- TDM_TRANSFORM_NORMAL), true);
-
- EXPECT_EQ(tdm_pp_set_done_handler(pp, _tc_tdm_pp_done_cb, &done), TDM_ERROR_NONE);
-
retry:
- for (int b = 0; b < 3; b++) {
- done = false;
-
- EXPECT_EQ(tdm_pp_attach(pp, srcbuf[b], dstbuf[b]), TDM_ERROR_NONE);
- EXPECT_EQ(tdm_pp_commit(pp), TDM_ERROR_NONE);
-
- while (!done)
- EXPECT_EQ(tc_tdm_display_handle_events(dpy), TDM_ERROR_NONE);
-
-#if 0
- char temp[256];
- snprintf(temp, sizeof temp, "f%d_b%d", f, b);
- DumpBuffer(b, temp);
-#endif
- ShowBuffer(b);
- }
+ EXPECT_EQ(TestLayerShow(TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, dst_formats[f],
+ TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, dst_formats[f],
+ TDM_TRANSFORM_NORMAL), true);
TDM_UT_ASK_YNR("* Successed to convert to '%c%c%c%c' buffers and show them to a underlay layer? (output: %d, layer: %d)",
FOURCC_STR(dst_formats[f]), pipe, dst_layer_index);
DestroyPP();
DestroyBuffers();
}
+
if (tc_tdm_output_is_hwc_enable(output) && pp_formats) {
free(pp_formats);
pp_formats = NULL;
TDM_UT_SKIP_FLAG(dst_layer != NULL);
for (int f = 0; f < dst_format_count; f++) {
- bool done;
-
- TDM_UT_INFO("* testing for %c%c%c%c", FOURCC_STR(dst_formats[f]));
-
- EXPECT_EQ(PreparePP(), true);
-
- EXPECT_EQ(PrepareBuffers(TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, dst_formats[f],
- TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, dst_formats[f],
- TDM_TRANSFORM_NORMAL), true);
-
- EXPECT_EQ(tdm_pp_set_done_handler(pp, _tc_tdm_pp_done_cb, &done), TDM_ERROR_NONE);
-
retry:
- for (int b = 0; b < 3; b++) {
- done = false;
-
- EXPECT_EQ(tdm_pp_attach(pp, srcbuf[b], dstbuf[b]), TDM_ERROR_NONE);
- EXPECT_EQ(tdm_pp_commit(pp), TDM_ERROR_NONE);
-
- while (!done)
- EXPECT_EQ(tc_tdm_display_handle_events(dpy), TDM_ERROR_NONE);
-
-#if 0
- char temp[256];
- snprintf(temp, sizeof temp, "f%d_b%d", f, b);
- DumpBuffer(b, temp);
-#endif
- ShowBuffer(b);
- }
+ EXPECT_EQ(TestLayerShow(TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, dst_formats[f],
+ TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, dst_formats[f],
+ TDM_TRANSFORM_NORMAL), true);
TDM_UT_ASK_YNR("* Successed to convert '%c%c%c%c' buffers and show them to a overlay layer? (output: %d, layer: %d)",
FOURCC_STR(dst_formats[f]), pipe, dst_layer_index);
DestroyPP();
DestroyBuffers();
}
+
if (tc_tdm_output_is_hwc_enable(output) && pp_formats) {
free(pp_formats);
pp_formats = NULL;
EXPECT_NE(dst_layer, NULL);
for (int f = 0; f < dst_format_count; f++) {
- bool done;
-
- TDM_UT_INFO("* testing for %c%c%c%c", FOURCC_STR(dst_formats[f]));
-
- EXPECT_EQ(PreparePP(), true);
-
- EXPECT_EQ(PrepareBuffers(640, 480, dst_formats[f],
- mode->hdisplay, mode->vdisplay, dst_formats[f],
- TDM_TRANSFORM_NORMAL), true);
-
- EXPECT_EQ(tdm_pp_set_done_handler(pp, _tc_tdm_pp_done_cb, &done), TDM_ERROR_NONE);
-
retry:
- for (int b = 0; b < 3; b++) {
- done = false;
-
- EXPECT_EQ(tdm_pp_attach(pp, srcbuf[b], dstbuf[b]), TDM_ERROR_NONE);
- EXPECT_EQ(tdm_pp_commit(pp), TDM_ERROR_NONE);
-
- while (!done)
- EXPECT_EQ(tc_tdm_display_handle_events(dpy), TDM_ERROR_NONE);
-
-#if 0
- char temp[256];
- snprintf(temp, sizeof temp, "f%d_b%d", f, b);
- DumpBuffer(b, temp);
-#endif
- ShowBuffer(b);
- }
+ EXPECT_EQ(TestLayerShow(640, 480 / 2, dst_formats[f],
+ mode->hdisplay, mode->vdisplay, dst_formats[f],
+ TDM_TRANSFORM_NORMAL), true);
TDM_UT_ASK_YNR("* Successed to scale '%c%c%c%c' buffers? (output: %d, layer: %d)",
FOURCC_STR(dst_formats[f]), pipe, dst_layer_index);
DestroyPP();
DestroyBuffers();
}
+
if (tc_tdm_output_is_hwc_enable(output) && pp_formats) {
free(pp_formats);
pp_formats = NULL;
for (int f = 0; f < dst_format_count; f++) {
for (int t = (int)TDM_TRANSFORM_90; t <= (int)TDM_TRANSFORM_FLIPPED_270; t++) {
- bool done;
-
- TDM_UT_INFO("* testing for %c%c%c%c", FOURCC_STR(dst_formats[f]));
-
- EXPECT_EQ(PreparePP(), true);
-
- EXPECT_EQ(PrepareBuffers(TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, dst_formats[f],
- TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, dst_formats[f],
- (tdm_transform)t), true);
-
- EXPECT_EQ(tdm_pp_set_done_handler(pp, _tc_tdm_pp_done_cb, &done), TDM_ERROR_NONE);
-
retry:
- for (int b = 0; b < 3; b++) {
- done = false;
-
- EXPECT_EQ(tdm_pp_attach(pp, srcbuf[b], dstbuf[b]), TDM_ERROR_NONE);
- EXPECT_EQ(tdm_pp_commit(pp), TDM_ERROR_NONE);
-
- while (!done)
- EXPECT_EQ(tc_tdm_display_handle_events(dpy), TDM_ERROR_NONE);
-
-#if 0
- char temp[256];
- snprintf(temp, sizeof temp, "f%d_b%d_t%d", f, b, t);
- DumpBuffer(b, temp);
-#endif
- ShowBuffer(b);
- }
+ EXPECT_EQ(TestLayerShow(TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, dst_formats[f],
+ TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, dst_formats[f],
+ (tdm_transform)t), true);
TDM_UT_ASK_YNR("* Successed to rotate '%c%c%c%c' buffers? (transform: %s, output: %d, layer: %d)",
FOURCC_STR(dst_formats[f]), tdm_transform_str(t), pipe, dst_layer_index);
DestroyBuffers();
}
}
+
if (tc_tdm_output_is_hwc_enable(output) && pp_formats) {
free(pp_formats);
pp_formats = NULL;
for (int df = 0; df < dst_format_count; df++) {
for (int sf = 0; sf < format_count; sf++) {
- bool done;
-
- TDM_UT_INFO("* testing for format(%c%c%c%c) -> format(%c%c%c%c)",
- FOURCC_STR(formats[sf]), FOURCC_STR(dst_formats[df]));
-
- EXPECT_EQ(PreparePP(), true);
-
- EXPECT_EQ(PrepareBuffers(TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, formats[sf],
- TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, dst_formats[df],
- TDM_TRANSFORM_NORMAL), true);
-
- EXPECT_EQ(tdm_pp_set_done_handler(pp, _tc_tdm_pp_done_cb, &done), TDM_ERROR_NONE);
-
retry:
- for (int b = 0; b < 3; b++) {
- done = false;
-
- EXPECT_EQ(tdm_pp_attach(pp, srcbuf[b], dstbuf[b]), TDM_ERROR_NONE);
- EXPECT_EQ(tdm_pp_commit(pp), TDM_ERROR_NONE);
-
- while (!done)
- EXPECT_EQ(tc_tdm_display_handle_events(dpy), TDM_ERROR_NONE);
-
-#if 0
- char temp[256];
- snprintf(temp, sizeof temp, "sf%d_df%d_b%d", sf, df, b);
- DumpBuffer(b, temp);
-#endif
- ShowBuffer(b);
- }
+ EXPECT_EQ(TestLayerShow(TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, formats[sf],
+ TDM_UT_BUFFER_SIZE, TDM_UT_BUFFER_SIZE / 2, dst_formats[df],
+ TDM_TRANSFORM_NORMAL), true);
TDM_UT_ASK_YNR("* Successed to convert from '%c%c%c%c' to '%c%c%c%c'? (output: %d, layer: %d)",
FOURCC_STR(formats[sf]), FOURCC_STR(dst_formats[df]), pipe, dst_layer_index);
}
}
-
-
static void
_tc_tdm_pp_done_cb2(tdm_pp *pp, tbm_surface_h src, tbm_surface_h dst, void *user_data)
{