X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Frendering%2Fscene-graph-renderer.cpp;h=9718893d27d11e5db668ace713a3971ecad58d67;hb=3217488496dc62e67407a3641ee2d4b90fd29be0;hp=fcea2ef89ef6cdad6a9c738e8514a97b1d408d4c;hpb=6888a05ee6b303b783e6b66a44fdc8083e565ec0;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/rendering/scene-graph-renderer.cpp b/dali/internal/update/rendering/scene-graph-renderer.cpp index fcea2ef..9718893 100644 --- a/dali/internal/update/rendering/scene-graph-renderer.cpp +++ b/dali/internal/update/rendering/scene-graph-renderer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 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. @@ -108,7 +108,6 @@ enum Flags RESEND_STENCIL_OPERATION_ON_Z_FAIL = 1 << 17, RESEND_STENCIL_OPERATION_ON_Z_PASS = 1 << 18, RESEND_WRITE_TO_COLOR_BUFFER = 1 << 19, - RESEND_BATCHING_MODE = 1 << 20, }; } // Anonymous namespace @@ -143,10 +142,7 @@ Renderer::Renderer() mBlendMode( BlendMode::AUTO ), mDepthWriteMode( DepthWriteMode::AUTO ), mDepthTestMode( DepthTestMode::AUTO ), - mResourcesReady( false ), - mFinishedResourceAcquisition( false ), mPremultipledAlphaEnabled( false ), - mBatchingEnabled( false ), mDepthIndex( 0 ) { mUniformMapChanged[0] = false; @@ -178,21 +174,8 @@ void Renderer::operator delete( void* ptr ) void Renderer::PrepareRender( BufferIndex updateBufferIndex ) { - mResourcesReady = false; - mFinishedResourceAcquisition = false; - - // Can only be considered ready when all the scene graph objects are connected to the renderer - if( mGeometry && mShader ) - { - mResourcesReady = true; - mFinishedResourceAcquisition = true; - } - if( mRegenerateUniformMap > UNIFORM_MAP_READY ) { - DALI_ASSERT_DEBUG( mGeometry != NULL && "No geometry available in PrepareRender()" ); - DALI_ASSERT_DEBUG( mShader != NULL && "No shader available in PrepareRender()" ); - if( mRegenerateUniformMap == REGENERATE_UNIFORM_MAP) { CollectedUniformMap& localMap = mCollectedUniformMap[ updateBufferIndex ]; @@ -240,7 +223,6 @@ void Renderer::PrepareRender( BufferIndex updateBufferIndex ) { typedef MessageValue1< Render::Renderer, Render::Geometry* > DerivedType; unsigned int* slot = mSceneController->GetRenderQueue().ReserveMessageSlot( updateBufferIndex, sizeof( DerivedType ) ); - new (slot) DerivedType( mRenderer, &Render::Renderer::SetGeometry, mGeometry ); } @@ -260,9 +242,9 @@ void Renderer::PrepareRender( BufferIndex updateBufferIndex ) if( mResendFlag & RESEND_BLEND_COLOR ) { - typedef MessageValue1< Render::Renderer, const Vector4* > DerivedType; + typedef MessageValue1< Render::Renderer, Vector4 > DerivedType; unsigned int* slot = mSceneController->GetRenderQueue().ReserveMessageSlot( updateBufferIndex, sizeof( DerivedType ) ); - new (slot) DerivedType( mRenderer, &Render::Renderer::SetBlendColor, mBlendColor ); + new (slot) DerivedType( mRenderer, &Render::Renderer::SetBlendColor, GetBlendColor() ); } if( mResendFlag & RESEND_PREMULTIPLIED_ALPHA ) @@ -363,13 +345,6 @@ void Renderer::PrepareRender( BufferIndex updateBufferIndex ) new (slot) DerivedType( mRenderer, &Render::Renderer::SetStencilOperationOnZPass, mStencilParameters.stencilOperationOnZPass ); } - if( mResendFlag & RESEND_BATCHING_MODE ) - { - typedef MessageValue1< Render::Renderer, bool > DerivedType; - unsigned int* slot = mSceneController->GetRenderQueue().ReserveMessageSlot( updateBufferIndex, sizeof( DerivedType ) ); - new (slot) DerivedType( mRenderer, &Render::Renderer::SetBatchingEnabled, mBatchingEnabled ); - } - mResendFlag = 0; } } @@ -442,13 +417,20 @@ void Renderer::SetBlendingOptions( unsigned int options ) void Renderer::SetBlendColor( const Vector4& blendColor ) { - if( !mBlendColor ) + if( blendColor == Color::TRANSPARENT ) { - mBlendColor = new Vector4( blendColor ); + mBlendColor = NULL; } else { - *mBlendColor = blendColor; + if( !mBlendColor ) + { + mBlendColor = new Vector4( blendColor ); + } + else + { + *mBlendColor = blendColor; + } } mResendFlag |= RESEND_BLEND_COLOR; @@ -538,12 +520,6 @@ void Renderer::SetStencilOperationOnZPass( StencilOperation::Type stencilOperati mResendFlag |= RESEND_STENCIL_OPERATION_ON_Z_PASS; } -void Renderer::SetBatchingEnabled( bool batchingEnabled ) -{ - mBatchingEnabled = batchingEnabled; - mResendFlag |= RESEND_BATCHING_MODE; -} - //Called when SceneGraph::Renderer is added to update manager ( that happens when an "event-thread renderer" is created ) void Renderer::ConnectToSceneGraph( SceneController& sceneController, BufferIndex bufferIndex ) { @@ -551,7 +527,7 @@ void Renderer::ConnectToSceneGraph( SceneController& sceneController, BufferInde mSceneController = &sceneController; RenderDataProvider* dataProvider = NewRenderDataProvider(); - mRenderer = Render::Renderer::New( dataProvider, mGeometry, mBlendBitmask, mBlendColor, static_cast< FaceCullingMode::Type >( mFaceCullingMode ), + mRenderer = Render::Renderer::New( dataProvider, mGeometry, mBlendBitmask, GetBlendColor(), static_cast< FaceCullingMode::Type >( mFaceCullingMode ), mPremultipledAlphaEnabled, mDepthWriteMode, mDepthTestMode, mDepthFunction, mStencilParameters ); mSceneController->GetRenderMessageDispatcher().AddRenderer( *mRenderer ); @@ -578,12 +554,12 @@ RenderDataProvider* Renderer::NewRenderDataProvider() if( mTextureSet ) { - size_t textureCount = mTextureSet->GetNewTextureCount(); - dataProvider->mNewTextures.resize( textureCount ); + size_t textureCount = mTextureSet->GetTextureCount(); + dataProvider->mTextures.resize( textureCount ); dataProvider->mSamplers.resize( textureCount ); for( unsigned int i(0); imNewTextures[i] = mTextureSet->GetNewTexture(i); + dataProvider->mTextures[i] = mTextureSet->GetTexture(i); dataProvider->mSamplers[i] = mTextureSet->GetTextureSampler(i); } } @@ -591,6 +567,15 @@ RenderDataProvider* Renderer::NewRenderDataProvider() return dataProvider; } +const Vector4& Renderer::GetBlendColor() const +{ + if( mBlendColor ) + { + return *mBlendColor; + } + return Color::TRANSPARENT; +} + Render::Renderer& Renderer::GetRenderer() { return *mRenderer; @@ -601,12 +586,6 @@ const CollectedUniformMap& Renderer::GetUniformMap( BufferIndex bufferIndex ) co return mCollectedUniformMap[bufferIndex]; } -void Renderer::GetReadyAndComplete( bool& ready, bool& complete ) const -{ - ready = mResourcesReady; - complete = mFinishedResourceAcquisition; -} - Renderer::Opacity Renderer::GetOpacity( BufferIndex updateBufferIndex, const Node& node ) const { Renderer::Opacity opacity = Renderer::OPAQUE; @@ -655,6 +634,12 @@ void Renderer::TextureSetChanged() mResendFlag |= RESEND_DATA_PROVIDER; } +void Renderer::TextureSetDeleted() +{ + mTextureSet = NULL; + + mResendFlag |= RESEND_DATA_PROVIDER; +} void Renderer::ConnectionsChanged( PropertyOwner& object ) { // One of our child objects has changed it's connections. Ensure the uniform @@ -678,11 +663,7 @@ void Renderer::UniformMappingsChanged( const UniformMap& mappings ) void Renderer::ObservedObjectDestroyed(PropertyOwner& owner) { - if( reinterpret_cast(mTextureSet) == &owner ) - { - mTextureSet = NULL; - } - else if( reinterpret_cast(mShader) == &owner ) + if( reinterpret_cast(mShader) == &owner ) { mShader = NULL; }