X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-core.git;a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Frendering%2Fscene-graph-renderer.cpp;h=98f81ef8e5d5dcc510554b4d8f765ca588053571;hp=169be5c82172fe90d257d7a1d9a0451434811913;hb=55827866fcb8c7ee47581ac4335a3390472090e8;hpb=687297e3c642c9056587a57a5fa853085ed12623 diff --git a/dali/internal/update/rendering/scene-graph-renderer.cpp b/dali/internal/update/rendering/scene-graph-renderer.cpp old mode 100644 new mode 100755 index 169be5c..98f81ef --- a/dali/internal/update/rendering/scene-graph-renderer.cpp +++ b/dali/internal/update/rendering/scene-graph-renderer.cpp @@ -143,6 +143,7 @@ Renderer::Renderer() mDepthTestMode( DepthTestMode::AUTO ), mRenderingBehavior( DevelRenderer::Rendering::IF_REQUIRED ), mPremultipledAlphaEnabled( false ), + mDirty( false ), mOpacity( 1.0f ), mDepthIndex( 0 ) { @@ -181,6 +182,7 @@ void Renderer::PrepareRender( BufferIndex updateBufferIndex ) } else { + mDirty = true; if( mRegenerateUniformMap == REGENERATE_UNIFORM_MAP) { CollectedUniformMap& localMap = mCollectedUniformMap[ updateBufferIndex ]; @@ -215,6 +217,7 @@ void Renderer::PrepareRender( BufferIndex updateBufferIndex ) if( mResendFlag != 0 ) { + mDirty = true; if( mResendFlag & RESEND_GEOMETRY ) { typedef MessageValue1< Render::Renderer, Render::Geometry* > DerivedType; @@ -395,6 +398,7 @@ void Renderer::SetGeometry( Render::Geometry* geometry ) void Renderer::SetDepthIndex( int depthIndex ) { mDepthIndex = depthIndex; + mDirty = true; } void Renderer::SetFaceCullingMode( FaceCullingMode::Type faceCullingMode ) @@ -411,6 +415,7 @@ FaceCullingMode::Type Renderer::GetFaceCullingMode() const void Renderer::SetBlendMode( BlendMode::Type blendingMode ) { mBlendMode = blendingMode; + mDirty = true; } BlendMode::Type Renderer::GetBlendMode() const @@ -583,6 +588,7 @@ const Render::Renderer::StencilParameters& Renderer::GetStencilParameters() cons void Renderer::BakeOpacity( BufferIndex updateBufferIndex, float opacity ) { + mDirty = true; mOpacity.Bake( updateBufferIndex, opacity ); } @@ -594,6 +600,7 @@ float Renderer::GetOpacity( BufferIndex updateBufferIndex ) const void Renderer::SetRenderingBehavior( DevelRenderer::Rendering::Type renderingBehavior ) { mRenderingBehavior = renderingBehavior; + mDirty = true; } DevelRenderer::Rendering::Type Renderer::GetRenderingBehavior() const @@ -612,7 +619,6 @@ void Renderer::ConnectToSceneGraph( SceneController& sceneController, BufferInde mRenderer = Render::Renderer::New( mRenderDataProvider, mGeometry, mBlendBitmask, GetBlendColor(), static_cast< FaceCullingMode::Type >( mFaceCullingMode ), mPremultipledAlphaEnabled, mDepthWriteMode, mDepthTestMode, mDepthFunction, mStencilParameters ); - OwnerPointer< Render::Renderer > transferOwnership( mRenderer ); mSceneController->GetRenderMessageDispatcher().AddRenderer( transferOwnership ); } @@ -650,6 +656,7 @@ void Renderer::UpdateTextureSet() mRenderDataProvider->mTextures.clear(); mRenderDataProvider->mSamplers.clear(); } + mDirty = true; } } @@ -755,6 +762,46 @@ void Renderer::ObservedObjectDestroyed(PropertyOwner& owner) } } +void Renderer::SetDirty( bool value ) +{ + mDirty = value; + if( mShader ) + { + mShader->SetPropertyDirty( value ); + } +} + +bool Renderer::IsDirty() const +{ + bool ret = false; + if( mShader ) + { + ret = mShader->IsPropertyDirty(); + } + + // check native image + if( mTextureSet ) + { + uint32_t textureCount = mTextureSet->GetTextureCount(); + + if(textureCount > 0) + { + Dali::Internal::Render::Texture* texture; + for( uint32_t i = 0; i(mTextureSet)->GetTexture(i); + if( texture && texture->IsNativeImage() ) + { + ret = true; + break; + } + } + } + } + + return ret | mDirty; +} + } // namespace SceneGraph } // namespace Internal } // namespace Dali