Eliminate shader creation per Atlas. 23/42123/2
authorRichard Underhill <r.underhill@partner.samsung.com>
Tue, 23 Jun 2015 12:16:03 +0000 (13:16 +0100)
committerFrancisco Santos <f1.santos@samsung.com>
Wed, 24 Jun 2015 14:11:32 +0000 (15:11 +0100)
Change-Id: I13f2f215aa841be3b548f34d8172e4ba0e740626
Signed-off-by: Richard Underhill <r.underhill@partner.samsung.com>
dali-toolkit/internal/atlas-manager/atlas-manager-impl.cpp
dali-toolkit/internal/atlas-manager/atlas-manager-impl.h

index 9ef43a9..15baf37 100644 (file)
@@ -74,7 +74,7 @@ namespace
   }
   );
 
   }
   );
 
-  const char* FRAGMENT_SHADER_BGRA = MAKE_SHADER(
+  const char* FRAGMENT_SHADER_RGBA = MAKE_SHADER(
   uniform         sampler2D sTexture;
   varying mediump vec2      vTexCoord;
 
   uniform         sampler2D sTexture;
   varying mediump vec2      vTexCoord;
 
@@ -94,6 +94,8 @@ AtlasManager::AtlasManager()
   mNewAtlasSize.mHeight = DEFAULT_ATLAS_HEIGHT;
   mNewAtlasSize.mBlockWidth = DEFAULT_BLOCK_WIDTH;
   mNewAtlasSize.mBlockHeight = DEFAULT_BLOCK_HEIGHT;
   mNewAtlasSize.mHeight = DEFAULT_ATLAS_HEIGHT;
   mNewAtlasSize.mBlockWidth = DEFAULT_BLOCK_WIDTH;
   mNewAtlasSize.mBlockHeight = DEFAULT_BLOCK_HEIGHT;
+  mShaderL8 = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER_L8 );
+  mShaderRgba = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER_RGBA );
 }
 
 AtlasManagerPtr AtlasManager::New()
 }
 
 AtlasManagerPtr AtlasManager::New()
@@ -173,16 +175,7 @@ Toolkit::AtlasManager::AtlasId AtlasManager::CreateAtlas( const Toolkit::AtlasMa
 
   Sampler sampler = Sampler::New( atlas, "sTexture" );
   sampler.SetProperty( Sampler::Property::AFFECTS_TRANSPARENCY, true );
 
   Sampler sampler = Sampler::New( atlas, "sTexture" );
   sampler.SetProperty( Sampler::Property::AFFECTS_TRANSPARENCY, true );
-  Shader shader;
-  if ( pixelformat == Pixel::BGRA8888 )
-  {
-    shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER_BGRA );
-  }
-  else
-  {
-    shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER_L8 );
-  }
-  atlasDescriptor.mMaterial = Material::New( shader );
+  atlasDescriptor.mMaterial = Material::New( pixelformat == Pixel::L8 ? mShaderL8 : mShaderRgba );
   atlasDescriptor.mMaterial.AddSampler( sampler );
   atlasDescriptor.mSampler = sampler;
   atlasDescriptor.mMaterial.SetBlendMode( BlendingMode::ON );
   atlasDescriptor.mMaterial.AddSampler( sampler );
   atlasDescriptor.mSampler = sampler;
   atlasDescriptor.mMaterial.SetBlendMode( BlendingMode::ON );
index a24bba0..5336e1b 100644 (file)
@@ -224,6 +224,9 @@ private:
 
   void OnUpload( Image image );
 
 
   void OnUpload( Image image );
 
+  Shader mShaderL8;
+  Shader mShaderRgba;
+
 };
 
 } // namespace Internal
 };
 
 } // namespace Internal