GLView using NativeImageSurface GLView
authorDaekwang Ryu <dkdk.ryu@samsung.com>
Wed, 3 Mar 2021 05:50:27 +0000 (14:50 +0900)
committerDaekwang Ryu <dkdk.ryu@samsung.com>
Thu, 4 Mar 2021 10:08:34 +0000 (19:08 +0900)
Change-Id: Ie5bb01ab2b910b6b3f58251595ddfeadbc2bb40e

dali-toolkit/internal/controls/gl-view/gl-surface-view-impl.cpp
dali-toolkit/internal/controls/gl-view/gl-surface-view-thread.cpp
dali-toolkit/internal/controls/gl-view/gl-surface-view-thread.h

index 4db99d3..1fc2c4f 100644 (file)
@@ -239,20 +239,20 @@ void GLSurfaceView::CreateGLView()
   self.SetProperty(Actor::Property::SIZE, Vector2(mViewWidth, mViewHeight));
 
   //Get the  Tbm queue, created internally by NativeImageSourceQueue.
-  tbm_surface_queue_h tbmQueue = AnyCast<tbm_surface_queue_h>(mTargetSurface->GetNativeImageSourceQueue());
+  // tbm_surface_queue_h tbmQueue = AnyCast<tbm_surface_queue_h>(mTargetSurface->GetNativeImageSourceQueue());
   // void* tbmQueue = AnyCast<void*>(mTargetSurface->GetNativeImageSourceQueue());
   // void* tbmQueue = AnyCast<tbm_surface_queue_h>(mTargetSurface->GetNativeImageSourceQueue());
 
-  if(!tbmQueue)
-  {
-    DALI_LOG_ERROR("Tbm Surface queue is NULL");
-    return;
-  }
+  // if(!tbmQueue)
+  // {
+  //   DALI_LOG_ERROR("Tbm Surface queue is NULL");
+  //   return;
+  // }
 
   // EnqueueDefaultTbmSurface(tbmQueue);
 
   //Create and Start Render Thread.
-  mGLRenderer = new GLRenderer(mViewWidth, mViewHeight, tbmQueue);
+  mGLRenderer = new GLRenderer(mViewWidth, mViewHeight, mTargetSurface->GetNativeImageSourceQueue());
   mGLRenderer->Start();
 
   //Adding VisibilityChange Signal.
index 726fdb0..f48be29 100644 (file)
@@ -12,7 +12,7 @@
 // CLASS HEADER
 #include "gl-surface-view-thread.h"
 
-#include <dali/integration-api/adaptor-framework/native-render-surface-factory.h>
+// #include <dali/integration-api/adaptor-framework/native-render-surface-factory.h>
 
 //EXTERNAL INCLUDES
 #include <dali/devel-api/adaptor-framework/thread-settings.h>
@@ -33,49 +33,30 @@ namespace
 const unsigned int DEFAULT_SLEEP_TIME = 16u;
 }
 
-GLRenderer::GLRenderer(unsigned int viewWidth, unsigned viewHeight, tbm_surface_queue_h tbmSurfaceQueue)
-: mSurface(nullptr),
+GLRenderer::GLRenderer(unsigned int viewWidth, unsigned viewHeight, Any tbmSurfaceQueue)
+: mSurface(),
   mViewWidth(viewWidth),
   mViewHeight(viewHeight),
   mTbmSurfaceQueue(tbmSurfaceQueue),
-  // mGLInitCallback(NULL),
-  // mGLDrawCallback(NULL),
-  // mGLTerminateCallback(NULL),
   mSleepTime(DEFAULT_SLEEP_TIME),
   mMode(RENDER_MODE::RENDER_MODE_ONDEMAND),
   mRenderOnce(false),
   mPauseThread(true),
   mQuitThread(false),
   mColorDepth(Dali::NativeImageSourceQueue::COLOR_DEPTH_32),
-  // mGLInitCallback(),
-  // mGLRenderFrameCallback(),
-  // mGLTerminateCallback(),
-  // mInitCallback(false),
   mDepth(false),
   mStencil(false),
   mIsEGLInitialize(false),
   mMSAA(0)
 {
-  // bool ret = InitializeEGL();
-  // if(ret == false)
-  // {
-  //   DALI_LOG_ERROR("EGL Initilization Failed, Could not start GLRender Thread");
-  //   return;
-  // }
 }
 
 bool GLRenderer::InitializeEGL()
 {
   DALI_LOG_ERROR("DKDK InitializeEGL()");
 
-  // TODO: Check third parameter the translucent
-  mSurface = std::unique_ptr<RenderSurfaceInterface>(CreateNativeSurface(SurfaceSize(mViewWidth, mViewHeight), mTbmSurfaceQueue, true));
-  // mSurface.get()->SetAdaptor(Dali::Adaptor::Get());
-  NativeRenderSurface* nativeSurface = dynamic_cast<NativeRenderSurface*>(mSurface.get());
-  nativeSurface->SetGLView(true);
-  nativeSurface->InitializeGraphics();
-
-  DALI_LOG_ERROR("DKDK mTbmSurfaceQueue %p, mSurface %p", mTbmSurfaceQueue, mSurface.get());
+  mSurface = Dali::Integration::NativeImageSurface::New(Dali::Integration::NativeImageSurface::SurfaceSize(mViewWidth, mViewHeight), mTbmSurfaceQueue, true);
+  // mSurface.InitializeGraphics();
 
   return true;
 }
@@ -102,10 +83,10 @@ void GLRenderer::RegisterGLCallback(CallbackBase* initCallback, CallbackBase* re
   mGLTerminateCallback   = std::unique_ptr<CallbackBase>(terminateCallback);
 }
 
-NativeRenderSurface* GLRenderer::GetNativeRenderSurface() const
-{
-  return dynamic_cast<NativeRenderSurface*>(mSurface.get());
-}
+// NativeRenderSurface* GLRenderer::GetNativeRenderSurface() const
+// {
+//   return dynamic_cast<NativeRenderSurface*>(mSurface.get());
+// }
 
 void GLRenderer::SetRenderingMode(RENDER_MODE mode)
 {
@@ -141,10 +122,6 @@ void GLRenderer::Run()
 {
   Dali::SetThreadName("DKDKGLViewRenderer");
   DALI_LOG_ERROR("DKDK GLRenderer::Run()");
-  // DALI_LOG_ERROR("initCallback [%p] renderFrameCallback[%p] terminateCallback[%p]",
-  //                mGLInitCallback,
-  //                mGLRenderFrameCallback,
-  //                mGLTerminateCallback);
   bool ret = InitializeEGL();
   if(ret == false)
   {
@@ -182,14 +159,8 @@ void GLRenderer::Run()
       // initRet  = mGLInitCallback(mViewWidth, mViewHeight);
       //TODO: check callback parameter
 
-      NativeRenderSurface* surface = GetNativeRenderSurface();
-
-      if(!surface)
-      {
-        return;
-      }
       Rect<int> rect;
-      surface->PreRender(false, std::vector<Rect<int>>(), rect);
+      mSurface.PreRender();
 
       CallbackBase::Execute(*mGLInitCallback);
 
@@ -200,21 +171,14 @@ void GLRenderer::Run()
     // Calling GLDraw callback, per frame depending on RenderMde set.
     if(initRet == true)
     {
-      NativeRenderSurface* surface = GetNativeRenderSurface();
-
-      if(!surface)
-      {
-        return;
-      }
       // virtual bool PreRender(bool resizingSurface, const std::vector<Rect<int>>& damagedRects, Rect<int>& clippingRect) = 0;
-      Rect<int> rect;
-      surface->PreRender(false, std::vector<Rect<int>>(), rect);
+      mSurface.PreRender();
       //TODO: check callback parameter
       CallbackBase::Execute(*mGLRenderFrameCallback);
 
       // virtual void PostRender(bool renderToFbo, bool replacingSurface, bool resizingSurface, const std::vector<Rect<int>>& damagedRects) = 0;
 
-      surface->PostRender(false, false, false, std::vector<Rect<int>>());
+      mSurface.PostRender();
     }
 
     {
index da4af96..5768f3e 100644 (file)
@@ -15,6 +15,7 @@
 #include <dali/public-api/signals/callback.h>
 #include <tbm_surface_queue.h>
 
+#include <dali/integration-api/adaptor-framework/native-image-surface.h>
 #include <dali/integration-api/adaptor-framework/render-surface-interface.h>
 
 #include <dali/devel-api/adaptor-framework/native-image-source-queue.h>
@@ -43,7 +44,8 @@ public:
     RENDER_MODE_CONTINUOUSLY,
     RENDER_MODE_ONDEMAND
   };
-  GLRenderer(unsigned int viewWidth, unsigned viewHeight, tbm_surface_queue_h tbmSurfaceQueue);
+  // GLRenderer(unsigned int viewWidth, unsigned viewHeight, tbm_surface_queue_h tbmSurfaceQueue);
+  GLRenderer(unsigned int viewWidth, unsigned viewHeight, Any tbmSurfaceQueue);
 
   virtual ~GLRenderer();
   void RegisterGLCallback(CallbackBase* initCallback, CallbackBase* renderFrameCallback, CallbackBase* terminateCallback);
@@ -62,16 +64,17 @@ private:
   bool InitializeEGL();
   void DeInitializeEGL();
 
-  NativeRenderSurface* GetNativeRenderSurface() const;
-
 private:
-  std::unique_ptr<Dali::RenderSurfaceInterface> mSurface; ///< The window rendering surface
+  // std::unique_ptr<Dali::RenderSurfaceInterface> mSurface; ///< The window rendering surface
+  // std::unique_ptr<Dali::NativeRenderSurface> mSurface;
+  Dali::Integration::NativeImageSurface mSurface;
+  // std::unique_ptr<Dali::Integration::NativeImageSurface> mSurface;
 
   unsigned mViewWidth;
   unsigned mViewHeight;
 
   // tbm_surface_queue_h mTbmSurfaceQueue;
-  tbm_surface_queue_h mTbmSurfaceQueue;
+  Any mTbmSurfaceQueue;
 
   Dali::ConditionalWait mConditionalWait;
   // EglData*              mEglData;