Removed redundant resource loading & rendering code
[platform/core/uifw/dali-core.git] / dali / internal / update / rendering / scene-graph-texture-set.cpp
index e9ffa53..65aa913 100644 (file)
 #include "scene-graph-texture-set.h"
 
 // INTERNAL HEADERS
-#include <dali/devel-api/rendering/texture-set.h>
-#include <dali/integration-api/resource-declarations.h>
 #include <dali/internal/common/internal-constants.h>
-#include <dali/internal/update/resources/texture-metadata.h>
-#include <dali/internal/update/resources/resource-manager.h>
 #include <dali/internal/common/memory-pool-object-allocator.h>
 #include <dali/internal/update/rendering/scene-graph-renderer.h>
 
@@ -48,11 +44,7 @@ TextureSet* TextureSet::New()
 
 TextureSet::TextureSet()
 : mSamplers(),
-  mTextureId(),
   mRenderers(),
-  mResourcesReady( false ),
-  mFinishedResourceAcquisition( false ),
-  mChanged( true ),
   mHasAlpha( false )
 {
 }
@@ -66,118 +58,53 @@ void TextureSet::operator delete( void* ptr )
   gTextureSetMemoryPool.FreeThreadSafe( static_cast<TextureSet*>( ptr ) );
 }
 
-void TextureSet::Prepare( const ResourceManager& resourceManager )
-{
-  if( mChanged )
-  {
-    unsigned int opaqueCount = 0;
-    unsigned int completeCount = 0;
-    unsigned int failedCount = 0;
-    unsigned int frameBufferCount = 0;
-    const std::size_t textureCount( mTextureId.Count() );
-    if( textureCount > 0 )
-    {
-      for( unsigned int i(0); i<textureCount; ++i )
-      {
-        const ResourceId textureId = mTextureId[ i ];
-        TextureMetadata* metadata = NULL;
-        if( textureId != Integration::InvalidResourceId )
-        {
-          // if there is metadata, resource is loaded
-          if( resourceManager.GetTextureMetadata( textureId, metadata ) )
-          {
-            DALI_ASSERT_DEBUG( metadata );
-            // metadata is valid pointer from now on
-            if( metadata->IsFullyOpaque() )
-            {
-              ++opaqueCount;
-            }
-
-            if( metadata->IsFramebuffer() )
-            {
-              if( metadata->HasFrameBufferBeenRenderedTo() )
-              {
-                ++completeCount;
-              }
-              else
-              {
-                frameBufferCount++;
-              }
-            }
-            else
-            {
-              // loaded so will complete this frame
-              ++completeCount;
-            }
-            // no point checking failure as there is no metadata for failed loads
-          }
-          // if no metadata, loading can be failed
-          else if( resourceManager.HasResourceLoadFailed( textureId ) )
-          {
-            ++failedCount;
-          }
-        }
-        else
-        {
-          //If the texture is not valid it is considerer opaque and complete
-          ++opaqueCount;
-          ++completeCount;
-        }
-      }
-    }
-
-    mHasAlpha = ( opaqueCount != textureCount );
-
-    // ready for rendering when all textures are either successfully loaded or they are FBOs
-    mResourcesReady = (completeCount + frameBufferCount >= textureCount);
-
-    // Texture set is complete if all resources are either loaded or failed or, if they are FBOs have been rendererd to
-    mFinishedResourceAcquisition = ( completeCount + failedCount == textureCount );
-
-    if( mFinishedResourceAcquisition )
-    {
-      // Texture set is now considered not changed
-      mChanged = false;
-    }
-  }
-}
-
-void TextureSet::SetImage( size_t index,  ResourceId imageId )
+void TextureSet::SetSampler( size_t index, Render::Sampler* sampler )
 {
-  size_t textureCount( mTextureId.Size() );
-  if( textureCount < index + 1 )
+  size_t samplerCount( mSamplers.Size() );
+  if( samplerCount < index + 1 )
   {
-    mTextureId.Resize( index + 1 );
     mSamplers.Resize( index + 1 );
-    for( size_t i(textureCount); i<=index; ++i )
+    for( size_t i(samplerCount); i<=index; ++i )
     {
-      mTextureId[i] = Integration::InvalidResourceId;
       mSamplers[i] = NULL;
     }
   }
 
-  mTextureId[index] = imageId;
-  mChanged = true;
+  mSamplers[index] = sampler;
   NotifyChangeToRenderers();
 }
 
-void TextureSet::SetSampler( size_t index, Render::Sampler* sampler )
+void TextureSet::SetTexture( size_t index, Render::Texture* texture )
 {
-  size_t samplerCount( mSamplers.Size() );
-  if( samplerCount < index + 1 )
+  const size_t textureCount( mTextures.Size() );
+  if( textureCount < index + 1 )
   {
-    mSamplers.Resize( index + 1 );
-    mTextureId.Resize( index + 1 );
-    for( size_t i(samplerCount); i<=index; ++i )
+    mTextures.Resize( index + 1 );
+
+    bool samplerExist = true;
+    if( mSamplers.Size() < index + 1 )
     {
-      mTextureId[i] = Integration::InvalidResourceId;
-      mSamplers[i] = NULL;
+      mSamplers.Resize( index + 1 );
+      samplerExist = false;
+    }
+
+    for( size_t i(textureCount); i<=index; ++i )
+    {
+      mTextures[i] = 0;
+
+      if( !samplerExist )
+      {
+        mSamplers[i] = 0;
+      }
     }
   }
 
-  mSamplers[index] = sampler;
+  mTextures[index] = texture;
+  if( texture )
+  {
+    mHasAlpha |= texture->HasAlphaChannel();
+  }
 
-  mChanged = true;
   NotifyChangeToRenderers();
 }
 
@@ -186,12 +113,6 @@ bool TextureSet::HasAlpha() const
   return mHasAlpha;
 }
 
-void TextureSet::GetResourcesStatus( bool& resourcesReady, bool& finishedResourceAcquisition )
-{
-  resourcesReady = mResourcesReady;
-  finishedResourceAcquisition = mFinishedResourceAcquisition;
-}
-
 void TextureSet::AddObserver( Renderer* renderer )
 {
   size_t rendererCount( mRenderers.Size() );