Merge "Add ApplyCustomFragmentPrefix" into devel/master
authorSeungho BAEK <sbsh.baek@samsung.com>
Wed, 21 Jul 2021 06:30:00 +0000 (06:30 +0000)
committerGerrit Code Review <gerrit@review>
Wed, 21 Jul 2021 06:30:00 +0000 (06:30 +0000)
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-native-image.h
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-native-image-source.cpp
dali-toolkit/internal/controls/camera-view/camera-view-impl.cpp
dali-toolkit/internal/controls/camera-view/camera-view-impl.h

index d134942..fb9451c 100644 (file)
@@ -83,6 +83,23 @@ public:
     mCallStack.PushCall("GetCustomFragmentPrefix", "");
     return "#extension GL_OES_EGL_image_external:require\n";
   };
+  inline virtual bool ApplyNativeFragmentShader(std::string& shader)
+  {
+    mCallStack.PushCall("ApplyNativeFragmentShader", "");
+    shader = "#extension GL_OES_EGL_image_external:require\n" + shader;
+
+    //Get custom sampler type name
+    const char* customSamplerTypename = GetCustomSamplerTypename();
+    if(customSamplerTypename)
+    {
+      size_t samplerPosition = shader.find("sampler2D");
+      if(samplerPosition != std::string::npos)
+      {
+        shader.replace(samplerPosition, strlen("sampler2D"), customSamplerTypename);
+      }
+    }
+    return true;
+  };
   inline const char* GetCustomSamplerTypename() const override
   {
     mCallStack.PushCall("GetCustomSamplerTypename", "");
index 11bd75b..29ea5d5 100755 (executable)
@@ -105,6 +105,11 @@ const char* NativeImageSource::GetCustomFragmentPrefix() const
   return "";
 }
 
+bool NativeImageSource::ApplyNativeFragmentShader(std::string& shader)
+{
+  return true;
+}
+
 const char* NativeImageSource::GetCustomSamplerTypename() const
 {
   return "";
index 9ca121b..772c1a0 100644 (file)
@@ -145,7 +145,7 @@ void CameraView::SetNativeImageTarget()
   mNativeTexture                                  = Dali::Texture::New(*nativeImageSourcePtr);
 
   Dali::Geometry   geometry   = VisualFactoryCache::CreateQuadGeometry();
-  Dali::Shader     shader     = CreateShader(nativeImageSourcePtr->GetCustomFragmentPrefix());
+  Dali::Shader     shader     = CreateShader(nativeImageSourcePtr);
   Dali::TextureSet textureSet = Dali::TextureSet::New();
   textureSet.SetTexture(0u, mNativeTexture);
 
@@ -181,13 +181,12 @@ void CameraView::UpdateDisplayArea(Dali::PropertyNotification& source)
   mCameraPlayer.SetDisplayArea(mDisplayArea);
 }
 
-Dali::Shader CameraView::CreateShader(const char* fragmentPrefix)
+Dali::Shader CameraView::CreateShader(Dali::NativeImageSourcePtr nativeImageSourcePtr)
 {
-  std::string fragmentShader = fragmentPrefix;
-  std::string vertexShader;
+  std::string vertexShader = SHADER_VIDEO_VIEW_TEXTURE_VERT.data();
+  std::string fragmentShader = SHADER_VIDEO_VIEW_TEXTURE_FRAG.data();
 
-  vertexShader = SHADER_VIDEO_VIEW_TEXTURE_VERT.data();
-  fragmentShader += SHADER_VIDEO_VIEW_TEXTURE_FRAG.data();
+  nativeImageSourcePtr->ApplyNativeFragmentShader(fragmentShader);
 
   return Dali::Shader::New(vertexShader, fragmentShader);
 }
index 6c77889..cc5ba82 100644 (file)
@@ -101,10 +101,10 @@ private:
 
   /**
    * @brief CreateShader for native image target
-   * @param[in] fragmentPrefix prefix of fragment
+   * @param[in] nativeImageSourcePtr to apply custom fragment prefix
    * @return Returns the shader for NativeImage.
    */
-  Dali::Shader CreateShader(const char* fragmentPrefix);
+  Dali::Shader CreateShader(Dali::NativeImageSourcePtr nativeImageSourcePtr);
 
 private:
   Dali::CameraPlayer mCameraPlayer;