From 406718813f8875e95faceba2b62fb238f39fbf2f Mon Sep 17 00:00:00 2001 From: Joonbum Ko Date: Fri, 31 Jul 2020 15:25:24 +0900 Subject: [PATCH] DSRenderEngineDaliImpl-test: Add a TC to test texture mapping. Change-Id: I97fcf518b9ea0cbd3c2a60655e524d6dd5fd516f Signed-off-by: Joonbum Ko --- tests/DSRenderEngineDaliImpl-test.cpp | 106 ++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/tests/DSRenderEngineDaliImpl-test.cpp b/tests/DSRenderEngineDaliImpl-test.cpp index f03edfe..6f35f9f 100644 --- a/tests/DSRenderEngineDaliImpl-test.cpp +++ b/tests/DSRenderEngineDaliImpl-test.cpp @@ -5,6 +5,15 @@ #include "DSEventLoop.h" #include +#include "DSDisplayDeviceTDMImpl.h" +#include "DSDisplayDeviceOutputTDMImpl.h" + +#include +#include + +#include + +//#include using namespace display_server; @@ -26,11 +35,42 @@ public: EXPECT_TRUE(timer != nullptr); __eventLoop->run(); + + setenv("XDG_RUNTIME_DIR", "/run", 1); + setenv("TBM_DISPLAY_SERVER", "1", 1); } void TearDown(void) override { __eventLoop->quit(); DSEventLoop::releaseInstance(); + + unsetenv("XDG_RUNTIME_DIR"); + unsetenv("TBM_DISPLAY_SERVER"); + } + + tbm_surface_h createTbmTexture(int w, int h, unsigned char r, unsigned char g, unsigned char b, unsigned char a) + { + tbm_surface_h tbmSurface; + tbm_surface_info_s tbmSurface_info; + + tbmSurface = tbm_surface_create(w, h, TBM_FORMAT_ARGB8888); + tbm_surface_map(tbmSurface, TBM_SURF_OPTION_WRITE | TBM_SURF_OPTION_READ, &tbmSurface_info); + + unsigned char *ptr = tbmSurface_info.planes[0].ptr; + for (int j = 0; j < h; j++) + { + for (int i = 0; i < w; i++) + { + ptr[0] = r; + ptr[1] = g; + ptr[2] = b; + ptr[3] = a; + ptr += 4; + } + } + tbm_surface_unmap(tbmSurface); + + return tbmSurface; } private: @@ -85,3 +125,69 @@ TEST_F(DSRenderEngineDaliTest, RenderEngine_RenderFrame) EXPECT_TRUE(renderView->setBuffer(buffer)); EXPECT_TRUE(renderEngine->renderFrame()); } + +TEST_F(DSRenderEngineDaliTest, RenderEngine_RenderOnlyOneFrame) +{ + std::unique_ptr displayDevice = std::make_unique(); + std::list> outputList = displayDevice->getOutputList(); + EXPECT_TRUE(outputList.size() != 0); + + IDSDisplayDeviceOutput::ConnectorType connType; + IDSDisplayDeviceOutput::ConnectState connState; + std::shared_ptr deviceHWC; + std::shared_ptr deviceHWCWindow; + + //eldbus_init(); + + for (std::shared_ptr output : outputList) { + connType = output->getConnectType(); + EXPECT_TRUE(connType <= IDSDisplayDeviceOutput::TYPE_DSI); + connState = output->getConnectState(); + EXPECT_TRUE(connState <= IDSDisplayDeviceOutput::STATE_MODESET); + if (connState == IDSDisplayDeviceOutput::STATE_DISCONNECTED) + continue; + + auto bestMode = (output->getAvailableModes()).front(); + EXPECT_TRUE(output->setMode(bestMode) == true); + EXPECT_TRUE(output->getMode() == bestMode); + + deviceHWC = output->getHWC(); + EXPECT_TRUE(deviceHWC != nullptr); + + auto bufferQueue = deviceHWC->getTargetBufferQueue(); + EXPECT_TRUE(deviceHWC != nullptr); + + auto renderEngine = std::make_unique(bufferQueue); + EXPECT_TRUE(renderEngine != nullptr); + auto window = std::make_shared(); + EXPECT_TRUE(window != nullptr); + auto renderView = renderEngine->makeRenderView(window); + EXPECT_TRUE(renderView != nullptr); + + deviceHWCWindow = deviceHWC->makeHWCWindow(window); + EXPECT_TRUE(deviceHWC != nullptr); + EXPECT_TRUE(deviceHWC->addVisibleHWCWindow(deviceHWCWindow)); + + tbm_surface_h tbmTexture = DSRenderEngineDaliTest::createTbmTexture( + 100, 100, 255, 0, 0, 255); + EXPECT_TRUE(tbmTexture != nullptr); + + auto imageSourceBuffer = std::make_shared (100, 100, IDSBuffer::FORMAT_ARGB8888, tbmTexture); + EXPECT_TRUE(renderView->setBuffer(imageSourceBuffer)); + EXPECT_TRUE(renderEngine->renderFrame()); + + EXPECT_TRUE(bufferQueue->canAcquireBuffer(true)); + + auto buffer = bufferQueue->acquireBuffer(); + EXPECT_TRUE(buffer != nullptr); + + tbm_surface_internal_capture_buffer((tbm_surface_h)buffer->getNativeBuffer(), "/home/owner/media/OSA", "redImg", "png"); + + EXPECT_TRUE(deviceHWC->setTargetBuffer(buffer)); + + // commit + EXPECT_TRUE(deviceHWC->commit()); + + usleep(10000000); + } +} -- 2.7.4