#include <dali/public-api/dali-core.h>
#include <mesh-builder.h>
#include <stdlib.h>
+#include <test-actor-utils.h>
#include <test-native-image.h>
#include <iostream>
return actor;
}
-Texture CreateTexture(TextureType::Type type, Pixel::Format format, int width, int height)
+Texture CreateTexture(void)
{
- Texture texture = Texture::New(type, format, width, height);
-
- int bufferSize = width * height * 2;
- uint8_t* buffer = reinterpret_cast<uint8_t*>(malloc(bufferSize));
- PixelData pixelData = PixelData::New(buffer, bufferSize, width, height, format, PixelData::FREE);
- texture.Upload(pixelData, 0u, 0u, 0u, 0u, width, height);
- return texture;
-}
-
-Texture CreateTexture()
-{
- return CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 80, 80);
+ return Dali::CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 80, 80);
}
RenderTask CreateRenderTask(TestApplication& application,
RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+ // Creates:
+ // Root
+ // Actor1 Layer Layer
+ // Actor2 Actor3
+
+ // Task 1 is the default render task, should render from Root, incl Actor2
+ // Task 2 uses Actor2 as a source actor (texture id 9)
+
// Manipulate the GenTextures behaviour, to identify different actors
std::vector<GLuint> ids;
tet_infoline("Testing RenderTask::SignalFinished()");
application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
- TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
+ auto& sync = application.GetGraphicsSyncImpl();
CameraActor offscreenCameraActor = CameraActor::New();
application.SendNotification();
DALI_TEST_CHECK(!finished);
- Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+ Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
DALI_TEST_CHECK(lastSyncObj != NULL);
application.Render();
// SETUP AN OFFSCREEN RENDER TASK
application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
- TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
+ auto& sync = application.GetGraphicsSyncImpl();
+ TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
drawTrace.Enable(true);
Actor rootActor = Actor::New();
DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, true, __LINE__));
- Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+ Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
DALI_TEST_CHECK(lastSyncObj != NULL);
sync.SetObjectSynced(lastSyncObj, true);
// SETUP AN OFFSCREEN RENDER TASK
application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
- TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
+ auto& sync = application.GetGraphicsSyncImpl();
+ TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
drawTrace.Enable(true);
Actor rootActor = Actor::New();
DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, true, __LINE__));
- Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+ Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
DALI_TEST_CHECK(lastSyncObj != NULL);
sync.SetObjectSynced(lastSyncObj, true);
// SETUP A CONTINUOUS OFFSCREEN RENDER TASK
application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
- TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
+ auto& sync = application.GetGraphicsSyncImpl();
+ TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
drawTrace.Enable(true);
Actor rootActor = Actor::New();
newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
application.SendNotification();
-
+ // drawn sig finished Keep updating
DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, true, __LINE__));
- Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+ Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
DALI_TEST_CHECK(lastSyncObj != NULL);
sync.SetObjectSynced(lastSyncObj, true);
// SETUP AN OFFSCREEN RENDER TASK
application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
- TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
+ auto& sync = application.GetGraphicsSyncImpl();
+ TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
drawTrace.Enable(true);
Actor rootActor = Actor::New();
newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
application.SendNotification();
-
+ // FAILS drawn sig finished Keep updating
DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, true, __LINE__));
- Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+ Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
DALI_TEST_CHECK(lastSyncObj != NULL);
sync.SetObjectSynced(lastSyncObj, true);
application.SendNotification();
DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, false, __LINE__));
- TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
- Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+ auto& sync = application.GetGraphicsSyncImpl();
+ Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
DALI_TEST_CHECK(lastSyncObj == NULL);
newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
tet_infoline("Testing RenderTask::FinishInvisibleSourceActor()");
application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
- TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
+ auto& sync = application.GetGraphicsSyncImpl();
CameraActor offscreenCameraActor = CameraActor::New();
application.SendNotification();
DALI_TEST_CHECK(!finished);
- Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+ Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
DALI_TEST_CHECK(lastSyncObj != NULL);
application.Render();
END_TEST;
}
+
+int UtcDaliRenderTaskUploadOnly(void)
+{
+ TestApplication application;
+
+ tet_infoline("Testing RenderTask Render Once GlSync, using loaded image");
+
+ // SETUP AN OFFSCREEN RENDER TASK
+ application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
+ auto& sync = application.GetGraphicsSyncImpl();
+ TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
+ drawTrace.Enable(true);
+
+ Actor rootActor = Actor::New();
+ application.GetScene().Add(rootActor);
+
+ CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+ application.GetScene().Add(offscreenCameraActor);
+ Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
+
+ application.GetScene().Add(secondRootActor);
+
+ RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, true);
+ bool finished = false;
+ RenderTaskFinished renderTaskFinished(finished);
+ newTask.FinishedSignal().Connect(&application, renderTaskFinished);
+ application.SendNotification();
+
+ DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, true, __LINE__));
+
+ Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+ DALI_TEST_CHECK(lastSyncObj != NULL);
+ sync.SetObjectSynced(lastSyncObj, true);
+
+ application.SendNotification();
+ application.Render(16, nullptr, true);
+
+ DALI_TEST_CHECK(!finished);
+
+ application.Render(16, nullptr, true);
+ application.SendNotification();
+
+ DALI_TEST_CHECK(!finished);
+ END_TEST;
+}
\ No newline at end of file