Fix a custom shader issue 58/186658/2
authorHeeyong Song <heeyong.song@samsung.com>
Mon, 13 Aug 2018 07:55:03 +0000 (16:55 +0900)
committerHeeyong Song <heeyong.song@samsung.com>
Mon, 13 Aug 2018 09:22:22 +0000 (18:22 +0900)
- Fix a hash key generation in the texture manager
- Set a pre-multiplied state according to the flag

Change-Id: I22481d3a01f9634f8ec2d85506034d8142b2ceaa

automated-tests/src/dali-toolkit-internal/utc-Dali-TextureManager.cpp
dali-toolkit/internal/visuals/image/image-visual.cpp
dali-toolkit/internal/visuals/npatch/npatch-visual.cpp
dali-toolkit/internal/visuals/texture-manager-impl.cpp

index af5f1a6..d72bf17 100644 (file)
@@ -72,3 +72,30 @@ int UtcTextureManagerRequestLoad(void)
 
   END_TEST;
 }
+
+int UtcTextureManagerGenerateHash(void)
+{
+  ToolkitTestApplication application;
+
+  TextureManager textureManager; // Create new texture manager
+
+  TestObserver observer;
+  std::string filename( "image.png" );
+  auto preMultiply = TextureManager::MultiplyOnLoad::LOAD_WITHOUT_MULTIPLY;
+  TextureManager::TextureId textureId = textureManager.RequestLoad(
+    filename,
+    ImageDimensions(),
+    FittingMode::SCALE_TO_FILL,
+    SamplingMode::BOX_THEN_LINEAR,
+    TextureManager::USE_ATLAS,
+    &observer,
+    true,
+    TextureManager::ReloadPolicy::CACHED,
+    preMultiply);
+
+  VisualUrl url = textureManager.GetVisualUrl( textureId );
+
+  DALI_TEST_EQUALS( url.GetUrl().compare( filename ), 0, TEST_LOCATION );
+
+  END_TEST;
+}
index faeeaec..2fb7e5d 100644 (file)
@@ -689,10 +689,7 @@ void ImageVisual::CreateRenderer( TextureSet& textureSet )
   //Register transform properties
   mImpl->mTransform.RegisterUniforms( mImpl->mRenderer, Direction::LEFT_TO_RIGHT );
 
-  if( IsPreMultipliedAlphaEnabled() )
-  {
-    EnablePreMultipliedAlpha( true );
-  }
+  EnablePreMultipliedAlpha( IsPreMultipliedAlphaEnabled() );
 }
 
 void ImageVisual::CreateNativeImageRenderer( NativeImage& nativeImage )
@@ -779,9 +776,9 @@ void ImageVisual::LoadTexture( bool& atlasing, Vector4& atlasRect, TextureSet& t
                                          mWrapModeV, textureObserver, atlasUploadObserver, atlasManager,
                                          mOrientationCorrection, forceReload, preMultiplyOnLoad);
 
-  if( textures && preMultiplyOnLoad == TextureManager::MultiplyOnLoad::MULTIPLY_ON_LOAD)
+  if( textures )
   {
-    EnablePreMultipliedAlpha( true );
+    EnablePreMultipliedAlpha( preMultiplyOnLoad == TextureManager::MultiplyOnLoad::MULTIPLY_ON_LOAD );
   }
 
   if( atlasing ) // Flag needs to be set before creating renderer
@@ -1087,10 +1084,8 @@ void ImageVisual::UploadComplete( bool loadingSuccess, int32_t textureId, Textur
       {
         mImpl->mRenderer.RegisterProperty( ATLAS_RECT_UNIFORM_NAME, mAtlasRect );
       }
-      else if( preMultiplied )
-      {
-        EnablePreMultipliedAlpha( true );
-      }
+
+      EnablePreMultipliedAlpha( preMultiplied );
 
       actor.AddRenderer( mImpl->mRenderer );
       // reset the weak handle so that the renderer only get added to actor once
index dcf734e..6ae1d8e 100755 (executable)
@@ -295,10 +295,7 @@ void NPatchVisual::LoadImages()
 
     mId = mLoader.Load( mImageUrl.GetUrl(), mBorder, preMultiplyOnLoad );
 
-    if( preMultiplyOnLoad )
-    {
-      EnablePreMultipliedAlpha( true );
-    }
+    EnablePreMultipliedAlpha( preMultiplyOnLoad );
   }
 
   if( ! mAuxiliaryPixelBuffer && mAuxiliaryUrl.IsValid() && mAuxiliaryUrl.IsLocalResource() )
index c617a51..1ea95a9 100644 (file)
@@ -932,8 +932,21 @@ TextureManager::TextureHash TextureManager::GenerateHash(
   {
     // We are not including sizing information, but we still need an extra byte for atlasing.
     hashTarget.resize( urlLength + 1u );
+
     // Add the atlasing to the hash input.
-    hashTarget[ urlLength ] = useAtlas;
+    switch( useAtlas )
+    {
+      case UseAtlas::NO_ATLAS:
+      {
+        hashTarget[ urlLength ] = 'f';
+        break;
+      }
+      case UseAtlas::USE_ATLAS:
+      {
+        hashTarget[ urlLength ] = 't';
+        break;
+      }
+    }
   }
 
   if( maskTextureId != INVALID_TEXTURE_ID )