/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*/
#include <iostream>
-
#include <stdlib.h>
#include <dali/public-api/dali-core.h>
#include <dali/devel-api/events/hit-test-algorithm.h>
#define BOOLSTR(x) ((x)?"T":"F")
+//& set: DaliRenderTask
using namespace Dali;
return true;
}
-ImageActor CreateLoadingImageActor(TestApplication& application, std::string filename, ResourceImage::LoadPolicy loadPolicy, Image::ReleasePolicy releasePolicy)
+Actor CreateRenderableActorSuccess(TestApplication& application, std::string filename)
{
- Image image = ResourceImage::New(filename, loadPolicy, releasePolicy);
- DALI_TEST_CHECK( image );
- application.SendNotification();
- application.Render(16);
- DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) );
- ImageActor actor = ImageActor::New(image);
+ PrepareResourceImage( application, 80u, 80u, Pixel::RGBA8888 );
+ Image image = ResourceImage::New(filename);
+ Actor actor = CreateRenderableActor(image);
actor.SetSize( 80, 80 );
- application.SendNotification();
- application.Render(16);
return actor;
}
-Image CreateLoadingImage(TestApplication& application, std::string filename, ResourceImage::LoadPolicy loadPolicy, Image::ReleasePolicy releasePolicy)
+Actor CreateRenderableActorFailed(TestApplication& application, std::string filename)
{
- Image image = ResourceImage::New(filename, loadPolicy, releasePolicy);
+ Image image = ResourceImage::New(filename);
DALI_TEST_CHECK( image );
- application.SendNotification();
- application.Render(16);
- DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) );
-
- return image;
-}
-
-void CompleteImageLoad(TestApplication& application, Integration::ResourceId resourceId, Integration::ResourceTypeId requestType)
-{
- std::vector<GLuint> ids;
- ids.push_back( 23 );
- application.GetGlAbstraction().SetNextTextureIds( ids );
-
- Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_DISCARD );
- Integration::ResourcePointer resource(bitmap);
- bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80);
-
- application.GetPlatform().SetResourceLoaded(resourceId, requestType, resource);
-}
-
-void FailImageLoad(TestApplication& application, Integration::ResourceId resourceId )
-{
- application.GetPlatform().SetResourceLoadFailed(resourceId, Integration::FailureUnknown);
+ Actor actor = CreateRenderableActor(image);
+ actor.SetSize( 80, 80 );
+ return actor;
}
-void ReloadImage(TestApplication& application, ResourceImage image)
+Image CreateResourceImage(TestApplication& application, std::string filename)
{
- application.GetPlatform().ClearReadyResources();
- application.GetPlatform().DiscardRequest();
- application.GetPlatform().ResetTrace();
- application.GetPlatform().SetClosestImageSize(Vector2(80.0f, 80.0f)); // Ensure reload is called.
- image.Reload();
+ PrepareResourceImage( application, 80u, 80u, Pixel::RGBA8888 );
+ Image image = ResourceImage::New(filename);
+ DALI_TEST_CHECK( image );
+ return image;
}
RenderTask CreateRenderTask(TestApplication& application,
newTask.SetExclusive( true );
newTask.SetRefreshRate( refreshRate );
newTask.SetTargetFrameBuffer( frameBufferImage );
+ newTask.SetProperty( RenderTask::Property::REQUIRES_SYNC, glSync );
return newTask;
}
{
finishedSig = false;
callStack.Reset();
+
+ tet_printf("TestApplication::UpdateRender().\n");
+
application.Render(16);
application.SendNotification();
return result;
}
-// The functor to be used in the hit-test algorithm to check whether the actor is hittable.
-bool IsActorHittableFunction(Actor actor, Dali::HitTestAlgorithm::TraverseType type)
-{
- bool hittable = false;
-
- switch (type)
- {
- case Dali::HitTestAlgorithm::CHECK_ACTOR:
- {
- // Check whether the actor is visible and not fully transparent.
- if( actor.IsVisible()
- && actor.GetCurrentWorldColor().a > 0.01f) // not FULLY_TRANSPARENT
- {
-
- hittable = true;
- }
- break;
- }
- case Dali::HitTestAlgorithm::DESCEND_ACTOR_TREE:
- {
- if( actor.IsVisible() ) // Actor is visible, if not visible then none of its children are visible.
- {
- hittable = true;
- }
- break;
- }
- default:
- {
- break;
- }
- }
-
- return hittable;
-}
-
} // unnamed namespace
tet_infoline("Testing RenderTask::SetSourceActor() Positive - check that setting a non-renderable actor stops existing source actor being rendered ");
Stage stage = Stage::GetCurrent();
-
- const std::vector<GLuint>& boundTextures = application.GetGlAbstraction().GetBoundTextures( GL_TEXTURE0 );
-
RenderTaskList taskList = stage.GetRenderTaskList();
-
RenderTask task = taskList.GetTask( 0u );
Actor actor = task.GetSourceActor();
DALI_TEST_CHECK( actor );
- std::vector<GLuint> ids;
- ids.push_back( 7 );
- application.GetGlAbstraction().SetNextTextureIds( ids );
-
BufferImage img = BufferImage::New( 1,1 );
- ImageActor newActor = ImageActor::New( img );
+ Actor newActor = CreateRenderableActor( img );
newActor.SetSize(1,1);
stage.Add( newActor );
DALI_TEST_CHECK( task.GetSourceActor() != actor );
DALI_TEST_CHECK( task.GetSourceActor() == nonRenderableActor );
+ TestGlAbstraction& gl = application.GetGlAbstraction();
+ TraceCallStack& drawTrace = gl.GetDrawTrace();
+ drawTrace.Enable(true);
+
// Update & Render nothing!
application.GetGlAbstraction().ClearBoundTextures();
application.SendNotification();
application.Render();
// Check that nothing was rendered
- DALI_TEST_EQUALS( boundTextures.size(), 0u, TEST_LOCATION );
+ DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION );
END_TEST;
}
Stage stage = Stage::GetCurrent();
- const std::vector<GLuint>& boundTextures = application.GetGlAbstraction().GetBoundTextures( GL_TEXTURE0 );
-
RenderTaskList taskList = stage.GetRenderTaskList();
RenderTask task = taskList.GetTask( 0u );
Actor actor = task.GetSourceActor();
DALI_TEST_CHECK( actor );
- std::vector<GLuint> ids;
- ids.push_back( 7 );
- application.GetGlAbstraction().SetNextTextureIds( ids );
BufferImage img = BufferImage::New( 1,1 );
- ImageActor newActor = ImageActor::New( img );
+ Actor newActor = CreateRenderableActor( img );
newActor.SetSize(1,1);
stage.Add( newActor );
Actor nonRenderableActor = Actor::New();
stage.Add( nonRenderableActor );
+ TestGlAbstraction& gl = application.GetGlAbstraction();
+ TraceCallStack& drawTrace = gl.GetDrawTrace();
+ drawTrace.Enable(true);
+
// Stop the newActor from being rendered by changing the source actor
DALI_TEST_CHECK( nonRenderableActor );
task.SetSourceActor( nonRenderableActor );
application.Render();
// Check that nothing was rendered
- DALI_TEST_EQUALS( boundTextures.size(), 0u, TEST_LOCATION );
+ DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION );
+ drawTrace.Reset();
// Set newActor as the new source Actor
task.SetSourceActor( newActor );
application.Render();
// Check that the newActor was rendered
- DALI_TEST_EQUALS( boundTextures.size(), 1u, TEST_LOCATION );
- if ( boundTextures.size() )
- {
- DALI_TEST_EQUALS( boundTextures[0], 7u, TEST_LOCATION );
- }
+ DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 1, TEST_LOCATION );
END_TEST;
}
tet_infoline("Testing RenderTask::SetSourceActor (on/off stage testing)");
Stage stage = Stage::GetCurrent();
-
- const std::vector<GLuint>& boundTextures = application.GetGlAbstraction().GetBoundTextures( GL_TEXTURE0 );
-
RenderTaskList taskList = stage.GetRenderTaskList();
-
RenderTask task = taskList.GetTask( 0u );
Actor actor = task.GetSourceActor();
DALI_TEST_CHECK( actor );
- std::vector<GLuint> ids;
- GLuint expectedTextureId( 3 );
- ids.push_back( expectedTextureId );
- application.GetGlAbstraction().SetNextTextureIds( ids );
+ TestGlAbstraction& gl = application.GetGlAbstraction();
+ TraceCallStack& drawTrace = gl.GetDrawTrace();
+ drawTrace.Enable(true);
BufferImage img = BufferImage::New( 1,1 );
- ImageActor newActor = ImageActor::New( img );
+ Actor newActor = CreateRenderableActor( img );
newActor.SetSize(1,1);
task.SetSourceActor( newActor );
// Don't add newActor to stage yet //'
// Update & Render with the actor initially off-stage
- application.GetGlAbstraction().ClearBoundTextures();
application.SendNotification();
application.Render();
// Check that nothing was rendered
- DALI_TEST_EQUALS( boundTextures.size(), 0u, TEST_LOCATION );
+ DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION );
// Now add to stage
stage.Add( newActor );
application.Render();
// Check that the newActor was rendered
- DALI_TEST_EQUALS( boundTextures.size(), 1u, TEST_LOCATION );
- if ( boundTextures.size() )
- {
- DALI_TEST_EQUALS( boundTextures[0], expectedTextureId, TEST_LOCATION );
- }
+ DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 1, TEST_LOCATION );
+ drawTrace.Reset();
// Now remove from stage
stage.Remove( newActor );
// Update & Render with the actor off-stage
- application.GetGlAbstraction().ClearBoundTextures();
application.SendNotification();
application.Render();
+ DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION );
+
END_TEST;
}
tet_infoline("Testing RenderTask::SetSourceActor (empty handle case)");
Stage stage = Stage::GetCurrent();
-
- const std::vector<GLuint>& boundTextures = application.GetGlAbstraction().GetBoundTextures( GL_TEXTURE0 );
-
RenderTaskList taskList = stage.GetRenderTaskList();
-
RenderTask task = taskList.GetTask( 0u );
Actor actor = task.GetSourceActor();
DALI_TEST_CHECK( actor );
- std::vector<GLuint> ids;
- GLuint expectedTextureId( 5 );
- ids.push_back( expectedTextureId );
- application.GetGlAbstraction().SetNextTextureIds( ids );
-
BufferImage img = BufferImage::New( 1,1 );
- ImageActor newActor = ImageActor::New( img );
+ Actor newActor = CreateRenderableActor( img );
newActor.SetSize(1,1);
stage.Add( newActor );
task.SetSourceActor( Actor() );
DALI_TEST_CHECK( ! task.GetSourceActor() );
+ TestGlAbstraction& gl = application.GetGlAbstraction();
+ TraceCallStack& drawTrace = gl.GetDrawTrace();
+ drawTrace.Enable(true);
+
// Update & Render nothing!
- application.GetGlAbstraction().ClearBoundTextures();
application.SendNotification();
application.Render();
// Check that nothing was rendered
- DALI_TEST_EQUALS( boundTextures.size(), 0u, TEST_LOCATION );
+ DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION );
// Set with non-empty handle
task.SetSourceActor( newActor );
application.Render();
// Check that the newActor was rendered
- DALI_TEST_EQUALS( boundTextures.size(), 1u, TEST_LOCATION );
- if ( boundTextures.size() )
- {
- DALI_TEST_EQUALS( boundTextures[0], expectedTextureId, TEST_LOCATION );
- }
+ DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 1, TEST_LOCATION );
END_TEST;
}
{
Actor actor = task.GetSourceActor();
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
- // Manipulate the GenTextures behaviour, to identify different ImageActors
+ // Manipulate the GenTextures behaviour, to identify different actors
std::vector<GLuint> ids;
ids.push_back( 8 ); // 8 = actor1
application.GetGlAbstraction().SetNextTextureIds( ids );
BufferImage img1 = BufferImage::New( 1,1 );
- ImageActor actor1 = ImageActor::New( img1 );
+ Actor actor1 = CreateRenderableActor( img1 );
actor1.SetSize(1,1);
Stage::GetCurrent().Add( actor1 );
// Check that the actor1 was rendered
const std::vector<GLuint>& boundTextures = application.GetGlAbstraction().GetBoundTextures( GL_TEXTURE0 );
- DALI_TEST_EQUALS( boundTextures.size(), 1u, TEST_LOCATION );
+ DALI_TEST_GREATER( boundTextures.size(), static_cast<std::vector<GLuint>::size_type>( 0 ), TEST_LOCATION );
if ( boundTextures.size() )
{
- DALI_TEST_EQUALS( boundTextures[0], 8u/*unique to actor1*/, TEST_LOCATION );
+ int c = 0;
+ DALI_TEST_EQUALS( boundTextures[c++], 8u/*unique to actor1*/, TEST_LOCATION );
+ if( boundTextures.size() > 1 )
+ {
+ DALI_TEST_EQUALS( boundTextures[c++], 8u/*unique to actor1*/, TEST_LOCATION );
+ }
}
BufferImage img2 = BufferImage::New( 1,1 );
- ImageActor actor2 = ImageActor::New( img2 );
+ Actor actor2 = CreateRenderableActor( img2 );
actor2.SetSize(1,1);
// Force actor2 to be rendered before actor1
application.Render();
// Check that the actors were rendered
- DALI_TEST_EQUALS( boundTextures.size(), 2u, TEST_LOCATION );
+ DALI_TEST_GREATER( boundTextures.size(), static_cast<std::vector<GLuint>::size_type>( 1 ), TEST_LOCATION );
if ( boundTextures.size() )
{
- DALI_TEST_EQUALS( boundTextures[0], 9u/*unique to actor2*/, TEST_LOCATION );
- DALI_TEST_EQUALS( boundTextures[1], 8u/*unique to actor1*/, TEST_LOCATION );
+ int c = 0;
+ DALI_TEST_EQUALS( boundTextures[c++], 9u/*unique to actor2*/, TEST_LOCATION );
+ if( boundTextures.size() > 2 )
+ {
+ DALI_TEST_EQUALS( boundTextures[c++], 9u/*unique to actor1*/, TEST_LOCATION );
+ }
+ DALI_TEST_EQUALS( boundTextures[c++], 8u/*unique to actor1*/, TEST_LOCATION );
}
BufferImage img3 = BufferImage::New( 1,1 );
- ImageActor actor3 = ImageActor::New( img3 );
+ Actor actor3 = CreateRenderableActor( img3 );
actor3.SetSize(1,1);
// Force actor3 to be rendered before actor2
application.Render();
// Check that the actors were rendered
- DALI_TEST_EQUALS( boundTextures.size(), 3u, TEST_LOCATION );
+ DALI_TEST_GREATER( boundTextures.size(), static_cast<std::vector<GLuint>::size_type>( 2 ), TEST_LOCATION );
if ( boundTextures.size() )
{
- DALI_TEST_EQUALS( boundTextures[0], 10u/*unique to actor3*/, TEST_LOCATION );
- DALI_TEST_EQUALS( boundTextures[1], 9u/*unique to actor2*/, TEST_LOCATION );
- DALI_TEST_EQUALS( boundTextures[2], 8u/*unique to actor1*/, TEST_LOCATION );
+ int c = 0;
+ DALI_TEST_EQUALS( boundTextures[c++], 10u/*unique to actor3*/, TEST_LOCATION );
+ if( boundTextures.size() > 3 )
+ {
+ DALI_TEST_EQUALS( boundTextures[c++], 10u/*unique to actor2*/, TEST_LOCATION );
+ }
+ DALI_TEST_EQUALS( boundTextures[c++], 9u/*unique to actor2*/, TEST_LOCATION );
+ DALI_TEST_EQUALS( boundTextures[c++], 8u/*unique to actor1*/, TEST_LOCATION );
}
// Both actors are now connected to the root node
application.GetGlAbstraction().SetNextTextureIds( ids );
BufferImage img1 = BufferImage::New( 1,1 );
- ImageActor actor1 = ImageActor::New( img1 );
+ Actor actor1 = CreateRenderableActor( img1 );
actor1.SetSize(1,1);
Stage::GetCurrent().Add( actor1 );
application.SendNotification();
application.Render();
- DALI_TEST_EQUALS( drawTrace.CountMethod("DrawArrays"), 1, TEST_LOCATION );
+ DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 1, TEST_LOCATION );
// Set task to non-exclusive - actor1 should render twice:
drawTrace.Reset();
application.SendNotification();
application.Render();
- DALI_TEST_EQUALS( drawTrace.CountMethod("DrawArrays"), 2, TEST_LOCATION );
+ DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 2, TEST_LOCATION );
END_TEST;
}
{
task.SetExclusive(true);
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
try
{
bool x = task.IsExclusive();
- x=x;
+ (void) x;
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
{
Actor actor = task.GetCameraActor();
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
END_TEST;
}
+int UtcDaliRenderTaskSetFrameBufferP(void)
+{
+ TestApplication application;
+
+ tet_infoline("Testing RenderTask::SetFrameBuffer()");
+
+ RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+
+ RenderTask task = taskList.GetTask( 0u );
+
+ FrameBuffer newFrameBuffer = FrameBuffer::New( 128u, 128u, FrameBuffer::Attachment::NONE );
+ task.SetFrameBuffer( newFrameBuffer );
+ DALI_TEST_CHECK( task.GetFrameBuffer() == newFrameBuffer );
+ END_TEST;
+}
+
+int UtcDaliRenderTaskSetFrameBufferN(void)
+{
+ TestApplication application;
+
+ tet_infoline("Testing RenderTask::SetFrameBuffer()");
+
+ RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+
+ RenderTask task = taskList.GetTask( 0u );
+ FrameBuffer newFrameBuffer; // Empty handle
+ task.SetFrameBuffer( newFrameBuffer );
+ DALI_TEST_EQUALS( (bool)task.GetFrameBuffer(), false, TEST_LOCATION );
+ END_TEST;
+}
+
+int UtcDaliRenderTaskGetFrameBufferP(void)
+{
+ TestApplication application;
+
+ tet_infoline("Testing RenderTask::GetFrameBuffer()");
+
+ RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+
+ RenderTask task = taskList.GetTask( 0u );
+
+ FrameBuffer newFrameBuffer = FrameBuffer::New( 1u, 1u, FrameBuffer::Attachment::NONE );
+ task.SetFrameBuffer( newFrameBuffer );
+ DALI_TEST_CHECK( task.GetFrameBuffer() == newFrameBuffer );
+ END_TEST;
+}
+
+int UtcDaliRenderTaskGetFrameBufferN(void)
+{
+ TestApplication application;
+
+ tet_infoline("Testing RenderTask::GetFrameBuffer()");
+
+ RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+
+ RenderTask task = taskList.GetTask( 0u );
+
+ // A scene creates frame buffer by default
+ FrameBuffer frameBuffer = task.GetFrameBuffer();
+ DALI_TEST_CHECK( frameBuffer );
+
+ END_TEST;
+}
+
int UtcDaliRenderTaskSetScreenToFrameBufferFunctionP(void)
{
TestApplication application;
{
task.SetScreenToFrameBufferFunction( TestScreenToFrameBufferFunction );
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
try
{
RenderTask::ScreenToFrameBufferFunction func = task.GetScreenToFrameBufferFunction();
- func=func;
+ (void) func;
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
Actor mappingActor;
task.SetScreenToFrameBufferMappingActor(mappingActor);
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
try
{
Viewport viewport = task.GetViewport();
- viewport = viewport;
+ (void) viewport;
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
Viewport newViewport( 0, 0, stageSize.width * 0.5f, stageSize.height * 0.5f );
task.SetViewport( newViewport );
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
// Set by Property test
Vector2 newPosition2(32.0f, 32.0f);
task.SetProperty( RenderTask::Property::VIEWPORT_POSITION, newPosition2 );
+ DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition2, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition, TEST_LOCATION ); // still the old position
// Update
application.SendNotification();
application.Render();
DALI_TEST_EQUALS( task.GetCurrentViewportPosition(), newPosition2, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition2, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition2, TEST_LOCATION );
Vector2 newPosition3(64.0f, 0.0f);
Animation animation = Animation::New(1.0f);
animation.AnimateTo( Property( task, RenderTask::Property::VIEWPORT_POSITION ), newPosition3, AlphaFunction::LINEAR );
animation.Play();
+ DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition2, TEST_LOCATION );
+
// Perform 1000ms worth of updates at which point animation should have completed.
Wait(application, 1000);
DALI_TEST_EQUALS( task.GetCurrentViewportPosition(), newPosition3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+
+ // Create another animation which animates by a certain value
+ const Vector2 newPosition4( 75.0f, 45.0f );
+ const Vector2 relativePosition( newPosition4 - newPosition3 );
+ animation = Animation::New( 1.0f );
+ animation.AnimateBy( Property( task, RenderTask::Property::VIEWPORT_POSITION ), relativePosition );
+ animation.Play();
+
+ DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition3, TEST_LOCATION );
+
+ // Perform 1000ms worth of updates at which point animation should have completed.
+ Wait(application, 1000);
+ DALI_TEST_EQUALS( task.GetCurrentViewportPosition(), newPosition4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+
END_TEST;
}
// Set by Property test
Vector2 newSize2(50.0f, 50.0f);
task.SetProperty( RenderTask::Property::VIEWPORT_SIZE, newSize2 );
+ DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize2, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize, TEST_LOCATION ); // still the old position
// Update
application.SendNotification();
application.Render();
DALI_TEST_EQUALS( task.GetCurrentViewportSize(), newSize2, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize2, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize2, TEST_LOCATION );
Vector2 newSize3(10.0f, 10.0f);
Animation animation = Animation::New(1.0f);
animation.AnimateTo( Property( task, RenderTask::Property::VIEWPORT_SIZE ), newSize3, AlphaFunction::LINEAR );
animation.Play();
+ DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize2, TEST_LOCATION );
+
// Perform 1000ms worth of updates at which point animation should have completed.
Wait(application, 1000);
DALI_TEST_EQUALS( task.GetCurrentViewportSize(), newSize3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+
+ // Create another animation which animates by a certain value
+ const Vector2 newSize4( 75.0f, 45.0f );
+ const Vector2 relativeSize( newSize4 - newSize3 );
+ animation = Animation::New( 1.0f );
+ animation.AnimateBy( Property( task, RenderTask::Property::VIEWPORT_SIZE ), relativeSize );
+ animation.Play();
+
+ DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize3, TEST_LOCATION );
+
+ // Perform 1000ms worth of updates at which point animation should have completed.
+ Wait(application, 1000);
+ DALI_TEST_EQUALS( task.GetCurrentViewportSize(), newSize4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
END_TEST;
}
DALI_TEST_EQUALS( task.GetClearColor(), testColor, TEST_LOCATION );
task.SetProperty( RenderTask::Property::CLEAR_COLOR, testColor2 );
+ DALI_TEST_EQUALS( task.GetProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), testColor2, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), testColor, TEST_LOCATION ); // still the old color
// Wait a frame.
Wait(application);
DALI_TEST_EQUALS( task.GetClearColor(), testColor2, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), testColor2, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), testColor2, TEST_LOCATION );
+
+ Vector4 newColor3(10.0f, 10.0f, 20.0f, 30.0f);
+ Animation animation = Animation::New(1.0f);
+ animation.AnimateTo( Property( task, RenderTask::Property::CLEAR_COLOR ), newColor3, AlphaFunction::LINEAR );
+ animation.Play();
+
+ DALI_TEST_EQUALS( task.GetProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), newColor3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), testColor2, TEST_LOCATION );
+
+ // Perform 1000ms worth of updates at which point animation should have completed.
+ Wait(application, 1000);
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), newColor3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), newColor3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+
+ // Create another animation which animates by a certain value
+ const Vector4 newColor4( 0.45f, 0.35f, 0.25f, 0.1f );
+ const Vector4 relativeColor( newColor4 - newColor3 );
+ animation = Animation::New( 1.0f );
+ animation.AnimateBy( Property( task, RenderTask::Property::CLEAR_COLOR ), relativeColor );
+ animation.Play();
+
+ DALI_TEST_EQUALS( task.GetProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), newColor4, Math::MACHINE_EPSILON_10, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), newColor3, Math::MACHINE_EPSILON_10, TEST_LOCATION );
+
+ // Perform 1000ms worth of updates at which point animation should have completed.
+ Wait(application, 1000);
+ DALI_TEST_EQUALS( task.GetCurrentProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), newColor4, Math::MACHINE_EPSILON_10, TEST_LOCATION );
+ DALI_TEST_EQUALS( task.GetProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), newColor4, Math::MACHINE_EPSILON_10, TEST_LOCATION );
+
END_TEST;
}
{
task.SetClearColor( Vector4::ZERO );
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
try
{
Vector4 color = task.GetClearColor();
- color = color;
+ (void) color;
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
{
task.SetClearEnabled(true);
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
try
{
bool x = task.GetClearEnabled();
- x=x;
+ (void) x;
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
{
task.SetCullMode( false );
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
try
{
bool x = task.GetCullMode();
- x=x;
+ (void) x;
}
- catch (Dali::DaliException(e))
+ catch (Dali::DaliException& e)
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
BufferImage image = BufferImage::New( 10, 10 );
image.Update();
- ImageActor rootActor = ImageActor::New( image );
+ Actor rootActor = CreateRenderableActor( image );
rootActor.SetSize( 10, 10 );
Stage::GetCurrent().Add( rootActor );
newTask.SetExclusive( true );
newTask.SetRefreshRate( RenderTask::REFRESH_ONCE );
newTask.SetTargetFrameBuffer( frameBufferImage );
+ newTask.SetProperty( RenderTask::Property::REQUIRES_SYNC, true );
bool finished = false;
RenderTaskFinished renderTaskFinished( finished );
application.Render();
application.SendNotification();
DALI_TEST_CHECK( finished );
- finished = false;
- application.Render(); // Double check no more finished signal
- application.SendNotification();
- DALI_TEST_CHECK( ! finished );
+ DALI_TEST_EQUALS( application.GetUpdateStatus(), 0, TEST_LOCATION );
END_TEST;
}
Actor rootActor = Actor::New();
Stage::GetCurrent().Add( rootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
+ Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
bool finished = false;
RenderTaskFinished renderTaskFinished( finished );
- newTask.FinishedSignal().Connect( &application, renderTaskFinished );
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
application.SendNotification();
// START PROCESS/RENDER Input, Expected Input, Expected, KeepUpdating
Actor rootActor = Actor::New();
Stage::GetCurrent().Add( rootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
+ Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
Stage::GetCurrent().Add(secondRootActor);
secondRootActor.SetVisible(false);
bool finished = false;
RenderTaskFinished renderTaskFinished( finished );
newTask.FinishedSignal().Connect( &application, renderTaskFinished );
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
application.SendNotification();
// START PROCESS/RENDER Input, Expected Input, Expected, KeepUpdating
Actor rootActor = Actor::New();
Stage::GetCurrent().Add( rootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
+ Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
Stage::GetCurrent().Add(secondRootActor);
RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
bool finished = false;
RenderTaskFinished renderTaskFinished( finished );
newTask.FinishedSignal().Connect( &application, renderTaskFinished );
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
application.SendNotification();
// START PROCESS/RENDER Input, Expected Input, Expected
{
TestApplication application;
- tet_infoline("Testing RenderTask Render Continuous using loading image\nPRE: Resource not ready\nPOST:continuous renders, no Finished signal");
-
- // SETUP AN OFFSCREEN RENDER TASK
- application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
- drawTrace.Enable(true);
-
- Actor rootActor = Actor::New();
- Stage::GetCurrent().Add( rootActor );
-
- CameraActor offscreenCameraActor = CameraActor::New();
- Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- Stage::GetCurrent().Add(secondRootActor);
-
- RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
- bool finished = false;
- RenderTaskFinished renderTaskFinished( finished );
- newTask.FinishedSignal().Connect( &application, renderTaskFinished );
- application.SendNotification();
-
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // FINISH RESOURCE LOADING - expect 'continuous' renders to start, no finished signal
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
- END_TEST;
-}
-
-int UtcDaliRenderTaskContinous05(void)
-{
- TestApplication application;
-
- tet_infoline("Testing RenderTask Render Continuous using Mesh which accesses texture through sampler with loading image\n"
- "PRE: Resource not ready\nPOST:continuous renders, no Finished signal");
+ tet_infoline("Testing RenderTask Render Continuous using loaded image");
// SETUP AN OFFSCREEN RENDER TASK
application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
Actor rootActor = Actor::New();
Stage::GetCurrent().Add( rootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
Stage::GetCurrent().Add( offscreenCameraActor );
-
- Material material = CreateMaterial();
- Image image = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- material.AddTexture( image, "sTexture" );
-
- Geometry geometry = CreateQuadGeometry();
- Renderer renderer = Renderer::New(geometry, material);
- Actor secondRootActor = Actor::New();
- secondRootActor.AddRenderer(renderer);
- secondRootActor.SetSize(100, 100);
+ Actor secondRootActor = CreateRenderableActorFailed(application, "aFile.jpg");
Stage::GetCurrent().Add(secondRootActor);
RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
application.SendNotification();
// START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // FINISH RESOURCE LOADING - expect 'continuous' renders to start, no finished signal
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
-
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
END_TEST;
}
-
int UtcDaliRenderTaskOnce01(void)
{
TestApplication application;
- tet_infoline("Testing RenderTask Render Once GlSync, using loading image\nPRE: Resources not ready, Source not visible\nPOST: Finished signal sent once only");
+ tet_infoline("Testing RenderTask Render Once GlSync, using loaded image");
// SETUP AN OFFSCREEN RENDER TASK
application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
Actor rootActor = Actor::New();
Stage::GetCurrent().Add( rootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
+ Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
Stage::GetCurrent().Add(secondRootActor);
newTask.FinishedSignal().Connect( &application, renderTaskFinished );
application.SendNotification();
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // MAKE SOURCE VISIBLE
- secondRootActor.SetVisible(true);
- application.SendNotification();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- // FINISH RESOURCE LOADING - expect no rendering yet
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
DALI_TEST_CHECK( lastSyncObj != NULL );
-
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- application.GetPlatform().ClearReadyResources();
sync.SetObjectSynced( lastSyncObj, true );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
+
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
END_TEST;
}
{
TestApplication application;
- tet_infoline("Testing RenderTask Render Once GlSync, using Mesh which accesses texture through sampler with loading image.\n"
- "PRE: Resources not ready\nPOST: Finished signal sent once only");
+ tet_infoline("Testing RenderTask Render Once GlSync, using Mesh which accesses texture through sampler with loaded image.\n");
// SETUP AN OFFSCREEN RENDER TASK
application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
Actor rootActor = Actor::New();
Stage::GetCurrent().Add( rootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
Stage::GetCurrent().Add( offscreenCameraActor );
- Material material = CreateMaterial();
- Image image = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- material.AddTexture( image, "sTexture" );
+ Shader shader = CreateShader();
+ Image image = CreateResourceImage(application, "aFile.jpg");
+ TextureSet textureSet = CreateTextureSet( image );
Geometry geometry = CreateQuadGeometry();
- Renderer renderer = Renderer::New(geometry, material);
+ Renderer renderer = Renderer::New(geometry, shader);
+ renderer.SetTextures( textureSet );
Actor secondRootActor = Actor::New();
secondRootActor.AddRenderer(renderer);
secondRootActor.SetSize(100, 100);
newTask.FinishedSignal().Connect( &application, renderTaskFinished );
application.SendNotification();
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- // FINISH RESOURCE LOADING - expect no rendering yet
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
- DALI_TEST_CHECK( lastSyncObj != NULL );
+ Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+ DALI_TEST_CHECK( lastSyncObj != NULL );
+ sync.SetObjectSynced( lastSyncObj, true );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- application.GetPlatform().ClearReadyResources();
- sync.SetObjectSynced( lastSyncObj, true );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
END_TEST;
}
{
TestApplication application;
- tet_infoline("Testing RenderTask Render Once GlSync, using loading image. Switch from render always after ready to render once\n"
- "PRE: Render task ready, Image not loaded\n"
- "POST: Finished signal sent only once");
+ tet_infoline("Testing RenderTask Render Once GlSync, using loaded image. Switch from render always after ready to render once\n");
// SETUP A CONTINUOUS OFFSCREEN RENDER TASK
application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
Actor rootActor = Actor::New();
Stage::GetCurrent().Add( rootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
+ Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
Stage::GetCurrent().Add(secondRootActor);
RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
newTask.FinishedSignal().Connect( &application, renderTaskFinished );
application.SendNotification();
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // FINISH RESOURCE LOADING
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
- application.GetPlatform().ClearReadyResources();
DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification(); // Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
+ application.SendNotification();
+
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
+
Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
DALI_TEST_CHECK( lastSyncObj != NULL );
-
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
sync.SetObjectSynced( lastSyncObj, true );
+
DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
int UtcDaliRenderTaskOnce04(void)
{
TestApplication application;
- tet_infoline("Testing RenderTask Render Once GlSync, using Mesh which accesses texture through sampler with loading image.\n"
+ tet_infoline("Testing RenderTask Render Once GlSync, using Mesh which accesses texture through sampler with loaded image.\n"
"Switch from render always after ready to render once\n"
- "PRE: Render task ready, Image not loaded\n"
- "POST: Finished signal sent only once");
+ );
// SETUP AN OFFSCREEN RENDER TASK
application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
Actor rootActor = Actor::New();
Stage::GetCurrent().Add( rootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
Stage::GetCurrent().Add( offscreenCameraActor );
- Material material = CreateMaterial();
- Image image = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- material.AddTexture( image, "sTexture" );
+ Shader shader = CreateShader();
+ Image image = CreateResourceImage(application, "aFile.jpg");
+ TextureSet textureSet = CreateTextureSet( image );
Geometry geometry = CreateQuadGeometry();
- Renderer renderer = Renderer::New(geometry, material);
+ Renderer renderer = Renderer::New(geometry, shader);
+ renderer.SetTextures( textureSet );
Actor secondRootActor = Actor::New();
secondRootActor.AddRenderer(renderer);
secondRootActor.SetSize(100, 100);
newTask.FinishedSignal().Connect( &application, renderTaskFinished );
application.SendNotification();
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // FINISH RESOURCE LOADING
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
- application.GetPlatform().ClearReadyResources();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
-
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification(); // Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
- DALI_TEST_CHECK( lastSyncObj != NULL );
-
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- sync.SetObjectSynced( lastSyncObj, true );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
-
- END_TEST;
-}
-
-int UtcDaliRenderTaskOnce05(void)
-{
- TestApplication application;
-
- tet_infoline("Testing RenderTask Render Once GlSync\n"
- "Switch from Render always after ready to render once with resources unready\n"
- "PRE: Everything ready to render\n"
- "POST: Finished signal sent once");
-
- // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
- application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
- TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
- drawTrace.Enable(true);
-
- Actor rootActor = Actor::New();
- Stage::GetCurrent().Add( rootActor );
-
- CameraActor offscreenCameraActor = CameraActor::New();
- Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- Stage::GetCurrent().Add(secondRootActor);
-
- RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
- bool finished = false;
- RenderTaskFinished renderTaskFinished( finished );
- newTask.FinishedSignal().Connect( &application, renderTaskFinished );
- application.SendNotification();
-
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // CHANGE TO RENDER ONCE
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification(); // Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // FINISH RESOURCE LOADING
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
- DALI_TEST_CHECK( lastSyncObj != NULL );
- application.GetPlatform().ClearReadyResources();
-
- sync.SetObjectSynced( lastSyncObj, true );
-
- // Expect: No draw - we've just drawn our render task once, above. No finished signal -
- // we won't read the gl sync until the next frame. Continue rendering - we're waiting for
- // the sync
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // Expect: 1 final draw - this Update doesn't update the scene, hence render instructions
- // from last frame but 1 are still present.
- // Finished signal should be true - we've just done the sync.
- // Should now stop rendering and updating - nothing left to do.
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, true, false, __LINE__ ) );
-
- END_TEST;
-}
-
-#if 0
-//int UtcDaliRenderTaskOnce06(void)
-{
- TestApplication application;
-
- tet_infoline("Testing RenderTask Render Once GlSync\n"
- "During RenderOnce, make ready resources unready before sending first finished signal\n"
- "PRE: Everything ready.\n"
- "POST: Finished signal sent only once");
-
- // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
- application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
- TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
- drawTrace.Enable(true);
-
- Actor rootActor = Actor::New();
- Stage::GetCurrent().Add( rootActor );
-
- CameraActor offscreenCameraActor = CameraActor::New();
- Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- application.Render();
-
- Stage::GetCurrent().Add(secondRootActor);
- application.GetPlatform().ClearReadyResources();
-
- RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
- bool finished = false;
- RenderTaskFinished renderTaskFinished( finished );
- newTask.FinishedSignal().Connect( &application, renderTaskFinished );
- application.SendNotification();
-
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
-
- // CHANGE TO RENDER ONCE, RESOURCES BECOME NOT READY
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
-
- // Doesn't work...
- ReloadImage(application, secondRootActor.GetImage());
- application.SendNotification(); // Input, Expected Input, Expected
-
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_EQUALS( secondRootActor.GetImage().GetLoadingState(), Dali::ResourceLoading, TEST_LOCATION);
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // FINISH RESOURCE LOADING
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- application.GetPlatform().ClearReadyResources();
- Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
- DALI_TEST_CHECK( lastSyncObj != NULL );
-
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- sync.SetObjectSynced( lastSyncObj, true );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, true, __LINE__ ) );
-
- // Finished rendering - expect no more renders, no more signals:
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- END_TEST;
-}
-#endif
-
-int UtcDaliRenderTaskOnce07(void)
-{
- TestApplication application;
-
- tet_infoline("Testing RenderTask Render Once GLSync\n"
- "Render once, Second call to SetRefreshRate(ONCE) triggers only one more finished signal\n"
- "PRE: Everything ready\n"
- "POST: exactly 1 finished signal per call to SetRefreshRate(ONCE)");
-
- // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
- application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
- TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
- drawTrace.Enable(true);
-
- Actor rootActor = Actor::New();
- Stage::GetCurrent().Add( rootActor );
-
- CameraActor offscreenCameraActor = CameraActor::New();
- Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- application.Render();
- application.GetPlatform().ClearReadyResources();
-
- Stage::GetCurrent().Add(secondRootActor);
-
- RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
- bool finished = false;
- RenderTaskFinished renderTaskFinished( finished );
- newTask.FinishedSignal().Connect( &application, renderTaskFinished );
- application.SendNotification();
-
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
-
- // CHANGE TO RENDER ONCE,
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
- DALI_TEST_CHECK( lastSyncObj != NULL );
-
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- sync.SetObjectSynced( lastSyncObj, true );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
-
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- lastSyncObj = sync.GetLastSyncObject();
- DALI_TEST_CHECK( lastSyncObj != NULL );
-
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- sync.SetObjectSynced( lastSyncObj, true );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
- END_TEST;
-}
-
-int UtcDaliRenderTaskOnce08(void)
-{
- TestApplication application;
-
- tet_infoline("Testing RenderTask Render Once GLSync\n"
- "Render once, Call to SetRefreshRate(ONCE) in Finished signal callback triggers "
- "another render & another finished signal\n"
- "PRE: Everything ready\n"
- "POST: exactly 1 finished signal per call to SetRefreshRate(ONCE)");
-
-
- // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
- application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
- TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
- drawTrace.Enable(true);
-
- Actor rootActor = Actor::New();
- Stage::GetCurrent().Add( rootActor );
-
- CameraActor offscreenCameraActor = CameraActor::New();
- Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- application.Render();
- application.GetPlatform().ClearReadyResources();
-
- Stage::GetCurrent().Add(secondRootActor);
-
- RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
- bool finished = false;
-
- ConnectionTracker connectionTracker;
- RenderTaskFinishedRenderAgain renderTaskFinishedRenderAgain( finished );
- newTask.FinishedSignal().Connect( &connectionTracker, renderTaskFinishedRenderAgain );
-
- application.SendNotification();
-
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
- Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
-
- // CHANGE TO RENDER ONCE,
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- lastSyncObj = sync.GetLastSyncObject();
- DALI_TEST_CHECK( lastSyncObj != NULL );
-
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- sync.SetObjectSynced( lastSyncObj, true );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
- application.SendNotification();
-
- // Expect SetRefreshRate to have been called again
- // Prevent next finished signal calling refresh once again
- RenderTaskFinished renderTaskFinished( finished );
- connectionTracker.DisconnectAll();
- newTask.FinishedSignal().Connect( &connectionTracker, renderTaskFinished );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- lastSyncObj = sync.GetLastSyncObject();
- DALI_TEST_CHECK( lastSyncObj != NULL );
-
- sync.SetObjectSynced( lastSyncObj, true );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
- END_TEST;
-}
-
-
-int UtcDaliRenderTaskOnce09(void)
-{
- TestApplication application;
-
- tet_infoline("Testing RenderTask Render Once GlSync\n"
- "SetRefreshRate(ONCE) again before first finished signal has been sent.\n"
- "PRE: resources ready\n"
- "POST: Only 1 finished signal sent.");
-
- // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
- application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
- TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
- drawTrace.Enable(true);
-
- Actor rootActor = Actor::New();
- Stage::GetCurrent().Add( rootActor );
-
- CameraActor offscreenCameraActor = CameraActor::New();
- Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- application.Render();
- application.GetPlatform().ClearReadyResources();
-
- Stage::GetCurrent().Add(secondRootActor);
-
- RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
- bool finished = false;
- RenderTaskFinished renderTaskFinished( finished );
- newTask.FinishedSignal().Connect( &application, renderTaskFinished );
- application.SendNotification();
-
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
-
- // CHANGE TO RENDER ONCE,
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
- DALI_TEST_CHECK( lastSyncObj != NULL );
-
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- sync.SetObjectSynced( lastSyncObj, true );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
-
- END_TEST;
-}
-
-int UtcDaliRenderTaskOnce10(void)
-{
- TestApplication application;
-
- tet_infoline("Testing RenderTask Render Once GlSync\n"
- "SetRefreshRate(ONCE), resource load failed completes render task.\n"
- "PRE: resources not ready\n"
- "POST: Only 1 finished signal sent.");
-
- // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
- application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
- drawTrace.Enable(true);
-
- Actor rootActor = Actor::New();
- Stage::GetCurrent().Add( rootActor );
-
- CameraActor offscreenCameraActor = CameraActor::New();
- Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Stage::GetCurrent().Add(secondRootActor);
-
- RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
- bool finished = false;
- RenderTaskFinished renderTaskFinished( finished );
- newTask.FinishedSignal().Connect( &application, renderTaskFinished );
- application.SendNotification();
-
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // CHANGE TO RENDER ONCE,
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- tet_printf(" FailImageLoad\n");
-
- FailImageLoad(application, imageRequestId); // Need to run Update again for this to complete
-
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) ); // nothing to draw
- application.SendNotification();
-
- // load is now failed so there's nothing more to render in the render task
- // Expect finished signal, as all resources are complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
-
- END_TEST;
-}
-
-int UtcDaliRenderTaskOnceNoSync01(void)
-{
- TestApplication application;
-
- tet_infoline("Testing RenderTask Render Once, using loading image\nPRE: Resources not ready, Source not visible\nPOST: Finished signal sent once only");
-
- // SETUP AN OFFSCREEN RENDER TASK
- application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
- drawTrace.Enable(true);
-
- Actor rootActor = Actor::New();
- Stage::GetCurrent().Add( rootActor );
-
- CameraActor offscreenCameraActor = CameraActor::New();
- Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
-
- Stage::GetCurrent().Add(secondRootActor);
-
- RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, false);
- bool finished = false;
- RenderTaskFinished renderTaskFinished( finished );
- newTask.FinishedSignal().Connect( &application, renderTaskFinished );
- application.SendNotification();
-
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // FINISH RESOURCE LOADING - expect immediate rendering yet
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- application.GetPlatform().ClearReadyResources();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
- END_TEST;
-}
-
-int UtcDaliRenderTaskOnceNoSync02(void)
-{
- TestApplication application;
-
- tet_infoline("Testing RenderTask Render Once, using Mesh which accesses texture through sampler with loading image.\n"
- "PRE: Resources not ready\nPOST: Finished signal sent once only");
- // SETUP AN OFFSCREEN RENDER TASK
- application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
- drawTrace.Enable(true);
-
- Actor rootActor = Actor::New();
- Stage::GetCurrent().Add( rootActor );
-
- CameraActor offscreenCameraActor = CameraActor::New();
- Stage::GetCurrent().Add( offscreenCameraActor );
-
- Material material = CreateMaterial();
- Image image = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- material.AddTexture(image, "sTexture" );
-
- Geometry geometry = CreateQuadGeometry();
- Renderer renderer = Renderer::New(geometry, material);
- Actor secondRootActor = Actor::New();
- secondRootActor.AddRenderer(renderer);
- secondRootActor.SetSize(100, 100);
- Stage::GetCurrent().Add(secondRootActor);
-
- RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, false);
- bool finished = false;
- RenderTaskFinished renderTaskFinished( finished );
- newTask.FinishedSignal().Connect( &application, renderTaskFinished );
- application.SendNotification();
-
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // FINISH RESOURCE LOADING - expect immediate rendering yet
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- application.GetPlatform().ClearReadyResources();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
-
- END_TEST;
-}
-
-int UtcDaliRenderTaskOnceNoSync03(void)
-{
- TestApplication application;
-
- tet_infoline("Testing RenderTask Render Once, using loading image. Switch from render always after ready to render once\n"
- "PRE: Render task ready, Image not loaded\n"
- "POST: Finished signal sent only once");
-
- // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
- application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
- drawTrace.Enable(true);
-
- Actor rootActor = Actor::New();
- Stage::GetCurrent().Add( rootActor );
-
- CameraActor offscreenCameraActor = CameraActor::New();
- Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- Stage::GetCurrent().Add(secondRootActor);
-
- RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
- bool finished = false;
- RenderTaskFinished renderTaskFinished( finished );
- newTask.FinishedSignal().Connect( &application, renderTaskFinished );
- application.SendNotification();
-
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // FINISH RESOURCE LOADING
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
- application.GetPlatform().ClearReadyResources();
-
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification(); // Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
- END_TEST;
-}
-
-int UtcDaliRenderTaskOnceNoSync04(void)
-{
- TestApplication application;
-
- tet_infoline("Testing RenderTask Render Once, using Mesh which accesses texture through sampler with loading image.\n"
- "Switch from render always after ready to render once\n"
- "PRE: Render task ready, Image not loaded\n"
- "POST: Finished signal sent only once");
-
- // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
- application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
- drawTrace.Enable(true);
-
- Actor rootActor = Actor::New();
- Stage::GetCurrent().Add( rootActor );
-
- CameraActor offscreenCameraActor = CameraActor::New();
- Stage::GetCurrent().Add( offscreenCameraActor );
-
- Material material = CreateMaterial();
- Image image = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- material.AddTexture( image, "sTexture" );
-
- Geometry geometry = CreateQuadGeometry();
- Renderer renderer = Renderer::New(geometry, material);
- Actor secondRootActor = Actor::New();
- secondRootActor.AddRenderer(renderer);
- secondRootActor.SetSize(100, 100);
- Stage::GetCurrent().Add(secondRootActor);
-
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
- RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
- bool finished = false;
- RenderTaskFinished renderTaskFinished( finished );
- newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+ newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
application.SendNotification();
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- // FINISH RESOURCE LOADING
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
- application.GetPlatform().ClearReadyResources();
+ Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+ DALI_TEST_CHECK( lastSyncObj != NULL );
+ sync.SetObjectSynced( lastSyncObj, true );
+
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification(); // Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
END_TEST;
}
-int UtcDaliRenderTaskOnceNoSync05(void)
+int UtcDaliRenderTaskOnceNoSync01(void)
{
TestApplication application;
- tet_infoline("Testing RenderTask Render Once\n"
- "Switch from Render always after ready to render once with resources unready\n"
- "PRE: Everything ready to render\n"
- "POST: Finished signal sent once");
+ tet_infoline("Testing RenderTask Render Once, \nPRE: Resources ready\nPOST: Finished signal sent once only");
- // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
+ // SETUP AN OFFSCREEN RENDER TASK
application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
drawTrace.Enable(true);
Actor rootActor = Actor::New();
Stage::GetCurrent().Add( rootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
+ Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
Stage::GetCurrent().Add(secondRootActor);
- RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
+ RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, false);
bool finished = false;
RenderTaskFinished renderTaskFinished( finished );
newTask.FinishedSignal().Connect( &application, renderTaskFinished );
application.SendNotification();
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // CHANGE TO RENDER ONCE
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification(); // Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // FINISH RESOURCE LOADING
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- application.GetPlatform().ClearReadyResources();
DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
END_TEST;
}
-#if 0
-//int UtcDaliRenderTaskOnceNoSync06(void)
+int UtcDaliRenderTaskOnceNoSync02(void)
{
TestApplication application;
- tet_infoline("Testing RenderTask Render Once\n"
- "During RenderOnce, make ready resources unready before sending first finished signal\n"
- "PRE: Everything ready.\n"
- "POST: Finished signal sent only once");
-
- // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
+ tet_infoline("Testing RenderTask Render Once, using Mesh which accesses texture through sampler with loaded image.\n"
+ "PRE: Resources ready\nPOST: Finished signal sent once only");
+ // SETUP AN OFFSCREEN RENDER TASK
application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
drawTrace.Enable(true);
Actor rootActor = Actor::New();
Stage::GetCurrent().Add( rootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- application.Render();
- application.GetPlatform().ClearReadyResources();
+ Shader shader = CreateShader();
+ Image image = CreateResourceImage(application, "aFile.jpg");
+ TextureSet textureSet = CreateTextureSet( image );
+
+ Geometry geometry = CreateQuadGeometry();
+ Renderer renderer = Renderer::New(geometry, shader);
+ renderer.SetTextures( textureSet );
+ Actor secondRootActor = Actor::New();
+ secondRootActor.AddRenderer(renderer);
+ secondRootActor.SetSize(100, 100);
Stage::GetCurrent().Add(secondRootActor);
- RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
+ RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, false);
bool finished = false;
RenderTaskFinished renderTaskFinished( finished );
newTask.FinishedSignal().Connect( &application, renderTaskFinished );
application.SendNotification();
- // START PROCESS/RENDER Input, Expected Input, Expected
DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
-
- // CHANGE TO RENDER ONCE, RESOURCES BECOME NOT READY
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
-
- // Doesn't work...
- ReloadImage(application, secondRootActor.GetImage());
- application.SendNotification(); // Input, Expected Input, Expected
-
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_EQUALS( secondRootActor.GetImage().GetLoadingState(), Dali::ResourceLoading, TEST_LOCATION);
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- // FINISH RESOURCE LOADING
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, true, true, __LINE__ ) );
application.GetPlatform().ClearReadyResources();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
+
END_TEST;
}
-#endif
-int UtcDaliRenderTaskOnceNoSync07(void)
+int UtcDaliRenderTaskOnceNoSync03(void)
{
TestApplication application;
- tet_infoline("Testing RenderTask Render Once\n"
- "Render once, Second call to SetRefreshRate(ONCE) triggers only one more finished signal\n"
- "PRE: Everything ready\n"
- "POST: exactly 1 finished signal per call to SetRefreshRate(ONCE)");
+ tet_infoline("Testing RenderTask Render Once, using loaded image. Switch from render always after ready to render once\n"
+ "PRE: Render task ready, Image loaded\n"
+ "POST: Finished signal sent only once");
// SETUP A CONTINUOUS OFFSCREEN RENDER TASK
application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
Actor rootActor = Actor::New();
Stage::GetCurrent().Add( rootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- application.Render();
- application.GetPlatform().ClearReadyResources();
-
+ Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
Stage::GetCurrent().Add(secondRootActor);
RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
newTask.FinishedSignal().Connect( &application, renderTaskFinished );
application.SendNotification();
- // START PROCESS/RENDER Input, Expected Input, Expected
DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
- // CHANGE TO RENDER ONCE,
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
-
newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification();
+ application.SendNotification(); // Input, Expected Input, Expected
DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
END_TEST;
}
-int UtcDaliRenderTaskOnceNoSync08(void)
+int UtcDaliRenderTaskOnceNoSync04(void)
{
TestApplication application;
- tet_infoline("Testing RenderTask Render Once\n"
- "Render once, Call to SetRefreshRate(ONCE) in Finished signal callback triggers\n"
- "another render & another finished signal\n"
- "PRE: Everything ready\n"
- "POST: exactly 1 finished signal per call to SetRefreshRate(ONCE)");
-
+ tet_infoline("Testing RenderTask Render Once, using Mesh which accesses texture through sampler with loading image.\n"
+ "Switch from render always after ready to render once\n"
+ "PRE: Render task ready, Image not loaded\n"
+ "POST: Finished signal sent only once");
// SETUP A CONTINUOUS OFFSCREEN RENDER TASK
application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
Actor rootActor = Actor::New();
Stage::GetCurrent().Add( rootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- application.Render();
- application.GetPlatform().ClearReadyResources();
-
- Stage::GetCurrent().Add(secondRootActor);
-
- RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
- bool finished = false;
-
- ConnectionTracker connectionTracker;
- RenderTaskFinishedRenderAgain renderTaskFinishedRenderAgain( finished );
- newTask.FinishedSignal().Connect( &connectionTracker, renderTaskFinishedRenderAgain );
-
- application.SendNotification();
-
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
-
- // CHANGE TO RENDER ONCE,
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
-
- // Expect SetRefreshRate to have been called again
- // Prevent next finished signal calling refresh once again
- RenderTaskFinished renderTaskFinished( finished );
- connectionTracker.DisconnectAll();
- newTask.FinishedSignal().Connect( &connectionTracker, renderTaskFinished );
-
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
- END_TEST;
-}
-
-
-int UtcDaliRenderTaskOnceNoSync09(void)
-{
- TestApplication application;
-
- tet_infoline("Testing RenderTask Render Once\n"
- "SetRefreshRate(ONCE) again before first finished signal has been sent.\n"
- "PRE: resources ready\n"
- "POST: Only 1 finished signal sent.");
-
- // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
- application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
- TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
- drawTrace.Enable(true);
-
- Actor rootActor = Actor::New();
- Stage::GetCurrent().Add( rootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
- Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
- CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
- application.Render();
- application.GetPlatform().ClearReadyResources();
+ Shader shader = CreateShader();
+ Image image = CreateResourceImage(application, "aFile.jpg");
+ TextureSet textureSet = CreateTextureSet( image );
+ Geometry geometry = CreateQuadGeometry();
+ Renderer renderer = Renderer::New(geometry, shader);
+ renderer.SetTextures( textureSet );
+ Actor secondRootActor = Actor::New();
+ secondRootActor.AddRenderer(renderer);
+ secondRootActor.SetSize(100, 100);
Stage::GetCurrent().Add(secondRootActor);
+
RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
bool finished = false;
RenderTaskFinished renderTaskFinished( finished );
newTask.FinishedSignal().Connect( &application, renderTaskFinished );
application.SendNotification();
- // START PROCESS/RENDER Input, Expected Input, Expected
DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
+ TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
+ Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+ DALI_TEST_CHECK( lastSyncObj == NULL );
- // CHANGE TO RENDER ONCE,
newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification();
+ application.SendNotification(); // Input, Expected Input, Expected
DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
+
+ lastSyncObj = sync.GetLastSyncObject();
+ DALI_TEST_CHECK( lastSyncObj == NULL );
- newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
END_TEST;
}
-int UtcDaliRenderTaskOnceNoSync10(void)
+int UtcDaliRenderTaskOnceNoSync05(void)
{
TestApplication application;
tet_infoline("Testing RenderTask Render Once\n"
"SetRefreshRate(ONCE), resource load failed, completes render task.\n"
- "PRE: resources not ready\n"
- "POST: Only 1 finished signal sent.");
+ "PRE: resources failed to load\n"
+ "POST: No finished signal sent.");
// SETUP A CONTINUOUS OFFSCREEN RENDER TASK
application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
Actor rootActor = Actor::New();
Stage::GetCurrent().Add( rootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor secondRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
+ Actor secondRootActor = CreateRenderableActorFailed(application, "aFile.jpg");
Stage::GetCurrent().Add(secondRootActor);
RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
application.SendNotification();
// START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
// CHANGE TO RENDER ONCE,
newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
- application.SendNotification();
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) );
-
- FailImageLoad(application, imageRequestId); // Need to run Update again for this to complete
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true, __LINE__ ) ); // nothing to draw
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false, __LINE__ ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false, __LINE__ ) );
END_TEST;
}
tet_infoline("Testing RenderTask Render Once Chained render tasks\n"
"SetRefreshRate(ONCE), resource load completes, both render tasks render.\n"
- "PRE: resources not ready\n"
+ "PRE: resources ready\n"
"POST: 2 finished signals sent.");
// SETUP A CONTINUOUS OFFSCREEN RENDER TASK
Actor defaultRootActor = Actor::New(); // Root for default RT
Stage::GetCurrent().Add( defaultRootActor );
- CameraActor offscreenCameraActor = CameraActor::New();
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
Stage::GetCurrent().Add( offscreenCameraActor );
- ImageActor firstRootActor = CreateLoadingImageActor(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED);
- Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest();
- Integration::ResourceId imageRequestId = imageRequest->GetId();
- Integration::ResourceTypeId imageType = imageRequest->GetType()->id;
+ Actor firstRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
Stage::GetCurrent().Add(firstRootActor);
// first render task
// Second render task
FrameBufferImage fbo = firstTask.GetTargetFrameBuffer();
- ImageActor secondRootActor = ImageActor::New( fbo );
+ Actor secondRootActor = CreateRenderableActor( fbo );
Stage::GetCurrent().Add(secondRootActor);
RenderTask secondTask = CreateRenderTask(application, offscreenCameraActor, defaultRootActor, secondRootActor, RenderTask::REFRESH_ONCE, false);
bool secondFinished = false;
application.SendNotification();
- // START PROCESS/RENDER Input, Expected Input, Expected
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, firstFinished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( firstFinished == false );
- DALI_TEST_CHECK( secondFinished == false );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, firstFinished, false, true, __LINE__ ) );
- DALI_TEST_CHECK( firstFinished == false );
- DALI_TEST_CHECK( secondFinished == false );
-
- CompleteImageLoad(application, imageRequestId, imageType);
+ //Both render tasks are executed.
DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, firstFinished, false, true, __LINE__ ) );
DALI_TEST_CHECK( firstFinished == false );
DALI_TEST_CHECK( secondFinished == false );
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, firstFinished, true, true, __LINE__ ) );
+ //Nothing else to render and both render task should have finished now
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, firstFinished, true, false, __LINE__ ) );
DALI_TEST_CHECK( firstFinished == true );
- DALI_TEST_CHECK( secondFinished == false );
-
- DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, secondFinished, true, false, __LINE__ ) );
DALI_TEST_CHECK( secondFinished == true );
END_TEST;
END_TEST;
}
-int UtcDaliRenderTaskSetScreenToFrameBufferMappingActor(void)
-{
- TestApplication application;
- tet_infoline("Testing RenderTask::SetScreenToFrameBufferMappingActor ");
-
- Stage stage = Stage::GetCurrent();
- Size stageSize = stage.GetSize();
- Actor mappingActor = Actor::New();
- Vector2 scale( 0.6f, 0.75f);
- Vector2 offset( stageSize.x*0.1f, stageSize.y*0.15f);
- mappingActor.SetSize( stageSize * scale );
- mappingActor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
- mappingActor.SetPosition( offset.x, offset.y );
- stage.Add( mappingActor );
-
- Actor offscreenActor = Actor::New();
- offscreenActor.SetSize( stageSize );
- offscreenActor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
- stage.Add( offscreenActor );
-
- RenderTaskList taskList = stage.GetRenderTaskList();
- RenderTask renderTask = taskList.CreateTask();
- FrameBufferImage frameBufferImage = FrameBufferImage::New(stageSize.width*scale.x, stageSize.height*scale.y, Pixel::A8, Image::NEVER);
- renderTask.SetSourceActor( offscreenActor );
- renderTask.SetExclusive( true );
- renderTask.SetInputEnabled( true );
- renderTask.SetTargetFrameBuffer( frameBufferImage );
- renderTask.SetRefreshRate( RenderTask::REFRESH_ONCE );
- renderTask.SetScreenToFrameBufferMappingActor( mappingActor );
- application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
-
- // Render and notify
- application.SendNotification();
- application.Render();
- application.Render();
- application.SendNotification();
-
- Vector2 screenCoordinates( stageSize.x * 0.05f, stageSize.y * 0.05f );
- Dali::HitTestAlgorithm::Results results;
- DALI_TEST_CHECK( !results.actor );
- DALI_TEST_EQUALS( Vector2::ZERO, results.actorCoordinates, 0.1f, TEST_LOCATION );
- // miss expected, results not changed
- DALI_TEST_CHECK( false == Dali::HitTestAlgorithm::HitTest( renderTask, screenCoordinates, results, IsActorHittableFunction ) );
- DALI_TEST_CHECK( !results.actor );
- DALI_TEST_EQUALS( Vector2::ZERO, results.actorCoordinates, 0.1f, TEST_LOCATION );
-
- screenCoordinates.x = stageSize.x * 0.265f;
- screenCoordinates.y = stageSize.y * 0.33f;
- results.actor = Actor();
- results.actorCoordinates = Vector2::ZERO;
- // hit expected, results changed
- DALI_TEST_CHECK( true == Dali::HitTestAlgorithm::HitTest( renderTask, screenCoordinates, results, IsActorHittableFunction ) );
- DALI_TEST_CHECK( results.actor == offscreenActor );
- DALI_TEST_EQUALS( (screenCoordinates-offset)/scale , results.actorCoordinates, 0.1f, TEST_LOCATION );
-
- screenCoordinates.x = stageSize.x * 0.435f;
- screenCoordinates.y = stageSize.y * 0.52f;
- // hit expected, results changed
- DALI_TEST_CHECK( true == Dali::HitTestAlgorithm::HitTest( renderTask, screenCoordinates, results, IsActorHittableFunction ) );
- DALI_TEST_CHECK( results.actor == offscreenActor );
- const Vector2 expectedCoordinates = (screenCoordinates-offset)/scale;
- DALI_TEST_EQUALS( expectedCoordinates , results.actorCoordinates, 0.1f, TEST_LOCATION );
-
- screenCoordinates.x = stageSize.x * 0.65f;
- screenCoordinates.y = stageSize.y * 0.95f;
- // miss expected, results not changed
- DALI_TEST_CHECK( false == Dali::HitTestAlgorithm::HitTest( renderTask, screenCoordinates, results, IsActorHittableFunction ) );
- DALI_TEST_CHECK( results.actor == offscreenActor );
- DALI_TEST_EQUALS( expectedCoordinates , results.actorCoordinates, 0.1f, TEST_LOCATION );
- END_TEST;
-}
-
int UtcDaliRenderTaskFinishInvisibleSourceActor(void)
{
TestApplication application;
- tet_infoline("Testing RenderTask::SignalFinished()");
+ tet_infoline("Testing RenderTask::FinishInvisibleSourceActor()");
application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
Stage::GetCurrent().Add( offscreenCameraActor );
BufferImage image = BufferImage::New( 10, 10 );
- ImageActor rootActor = ImageActor::New( image );
+ Actor rootActor = CreateRenderableActor( image );
rootActor.SetSize( 10, 10 );
rootActor.SetVisible(false);
Stage::GetCurrent().Add( rootActor );
newTask.SetExclusive( true );
newTask.SetRefreshRate( RenderTask::REFRESH_ONCE );
newTask.SetTargetFrameBuffer( frameBufferImage );
+ newTask.SetProperty( RenderTask::Property::REQUIRES_SYNC, true );
// Framebuffer doesn't actually get created until Connected, i.e. by previous line
TestApplication application;
// Previously we had bugs where not having a resource ID would cause render-tasks to wait forever
- tet_infoline("Testing RenderTask::SignalFinished() when an ImageActor has no Image set");
+ tet_infoline("Testing RenderTask::SignalFinished() when an Actor has no Image set");
Stage stage = Stage::GetCurrent();
BufferImage image = BufferImage::New( 10, 10 );
- ImageActor rootActor = ImageActor::New( image );
+ Actor rootActor = CreateRenderableActor( image );
rootActor.SetSize( 10, 10 );
stage.Add( rootActor );
- ImageActor actorWithMissingImage = ImageActor::New( Image() );
+ Actor actorWithMissingImage = CreateRenderableActor( Image() );
actorWithMissingImage.SetSize( 10, 10 );
stage.Add( actorWithMissingImage );
int UtcDaliRenderTaskWorldToViewport(void)
{
- TestApplication application( static_cast<size_t>(400), static_cast<size_t>(400) ); // square surface
+ TestApplication application( 400u, 400u ); // square surface
RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
Stage::GetCurrent().Add(actor);
- application.Render();
application.SendNotification();
application.Render();
application.SendNotification();
actor2.Add(actor);
actor.SetParentOrigin( Vector3(0,0,0) );
- application.Render();
application.SendNotification();
application.Render();
application.SendNotification();
// flush the queue and render once
application.SendNotification();
application.Render();
+ application.SendNotification();
+ application.Render();
+
+ float localX;
+ float localY;
+
+ float rtLocalX;
+ float rtLocalY;
+
+ float screenX = 50.0f;
+ float screenY = 50.0f;
+
+ DALI_TEST_CHECK( actor.ScreenToLocal(localX, localY, screenX, screenY) );
+
+ DALI_TEST_CHECK( task.ViewportToLocal(actor, screenX, screenY, rtLocalX, rtLocalY ) );
+
+ DALI_TEST_EQUALS(localX, rtLocalX, 0.01f, TEST_LOCATION);
+ DALI_TEST_EQUALS(localY, rtLocalY, 0.01f, TEST_LOCATION);
+
+ END_TEST;
+
+}
+
+int UtcDaliRenderTaskOffscreenViewportToLocal(void)
+{
+ TestApplication application;
+ Actor actor = Actor::New();
+ actor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
+ actor.SetSize( 100.0f, 100.0f );
+ actor.SetPosition( 10.0f, 10.0f );
+ Stage::GetCurrent().Add( actor );
+
+ RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+ RenderTask task = taskList.CreateTask();
+
+ FrameBufferImage newFrameBuffer = FrameBufferImage::New( 10, 10 );
+ task.SetTargetFrameBuffer( newFrameBuffer );
+ task.SetSourceActor( actor );
+ task.SetScreenToFrameBufferMappingActor( actor );
+
+ CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
+ Stage::GetCurrent().Add( offscreenCameraActor );
+ task.SetCameraActor( offscreenCameraActor );
+
+ // flush the queue and render once
+ application.SendNotification();
+ application.Render();
+ application.SendNotification();
+ application.Render();
float localX;
float localY;
DALI_TEST_EQUALS(localY, rtLocalY, 0.01f, TEST_LOCATION);
END_TEST;
+}
+
+int UtcDaliRenderTaskRequiresSync(void)
+{
+ TestApplication application;
+ RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+
+ RenderTask newTask = taskList.CreateTask();
+ newTask.SetProperty( RenderTask::Property::REQUIRES_SYNC, false );
+ DALI_TEST_EQUALS( newTask.GetProperty< bool >( RenderTask::Property::REQUIRES_SYNC ), false, TEST_LOCATION );
+ DALI_TEST_EQUALS( newTask.GetCurrentProperty< bool >( RenderTask::Property::REQUIRES_SYNC ), false, TEST_LOCATION );
+
+ newTask.SetProperty( RenderTask::Property::REQUIRES_SYNC, true );
+
+ DALI_TEST_EQUALS( newTask.GetProperty< bool >( RenderTask::Property::REQUIRES_SYNC ), true, TEST_LOCATION );
+ DALI_TEST_EQUALS( newTask.GetCurrentProperty< bool >( RenderTask::Property::REQUIRES_SYNC ), true, TEST_LOCATION );
+
+ END_TEST;
}