From: Eunki, Hong Date: Fri, 11 Nov 2022 13:51:03 +0000 (+0900) Subject: Make SceneView FBO multisampling + Sync utc harness X-Git-Tag: dali_2.2.4~1^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=3774f6413507122016054dc4426687cfcff5328b Make SceneView FBO multisampling + Sync utc harness Let we make SceneView's FBO usecase use multisampling as default. Change-Id: Ibaafba7cd384fcf4162c6ccc126dd76228c0e98f Signed-off-by: Eunki, Hong --- diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.cpp index 7a31046..6021026 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.cpp @@ -166,6 +166,11 @@ bool TestGlAbstraction::IsAdvancedBlendEquationSupported() return true; } +bool TestGlAbstraction::IsMultisampledRenderToTextureSupported() +{ + return true; +} + bool TestGlAbstraction::IsBlendEquationSupported(DevelBlendEquation::Type blendEquation) { return true; diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h index f6878ae..5e5fde3 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h @@ -72,6 +72,8 @@ public: bool IsAdvancedBlendEquationSupported() override; + bool IsMultisampledRenderToTextureSupported() override; + bool IsBlendEquationSupported(DevelBlendEquation::Type blendEquation) override; std::string GetShaderVersionPrefix(); @@ -1702,6 +1704,12 @@ public: { } + inline void FramebufferTexture2DMultisample(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) override + { + // TODO : Check it if need + FramebufferTexture2D(target, attachment, textarget, texture, level); + } + inline void FramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) override { } diff --git a/dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp b/dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp index 1457e19..e8fb48e 100644 --- a/dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp +++ b/dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -60,6 +61,8 @@ DALI_TYPE_REGISTRATION_END() Property::Index RENDERING_BUFFER = Dali::Toolkit::Control::CONTROL_PROPERTY_END_INDEX + 1; constexpr int32_t DEFAULT_ORIENTATION = 0; +constexpr uint8_t DEFAULT_FRAME_BUFFER_MULTI_SAMPLING_LEVEL = 4u; + static constexpr std::string_view SKYBOX_INTENSITY_STRING = "uIntensity"; Dali::Actor CreateSkybox(const std::string& skyboxUrl) @@ -255,7 +258,7 @@ void SceneView::SelectCamera(const std::string& name) UpdateCamera(GetCamera(name)); } -void SceneView::RegisterSceneItem(Scene3D::Internal::ImageBasedLightObserver *item) +void SceneView::RegisterSceneItem(Scene3D::Internal::ImageBasedLightObserver* item) { if(item) { @@ -264,7 +267,7 @@ void SceneView::RegisterSceneItem(Scene3D::Internal::ImageBasedLightObserver *it } } -void SceneView::UnregisterSceneItem(Scene3D::Internal::ImageBasedLightObserver *item) +void SceneView::UnregisterSceneItem(Scene3D::Internal::ImageBasedLightObserver* item) { if(item) { @@ -430,7 +433,7 @@ void SceneView::OnSceneDisconnection() if(mRenderTask) { taskList.RemoveTask(mRenderTask); - mRenderTarget.Reset(); + mFrameBuffer.Reset(); } } mWindow.Reset(); @@ -538,10 +541,11 @@ void SceneView::UpdateRenderTask() mRenderTask.SetViewport(Dali::Viewport(Vector4::ZERO)); // create offscreen buffer of new size to render our child actors to - mTexture = Dali::Texture::New(TextureType::TEXTURE_2D, Pixel::RGBA8888, unsigned(size.width), unsigned(size.height)); - mRenderTarget = FrameBuffer::New(size.width, size.height, FrameBuffer::Attachment::DEPTH_STENCIL); - mRenderTarget.AttachColorTexture(mTexture); - Dali::Toolkit::ImageUrl imageUrl = Dali::Toolkit::Image::GenerateUrl(mRenderTarget, 0u); + mTexture = Dali::Texture::New(TextureType::TEXTURE_2D, Pixel::RGBA8888, unsigned(size.width), unsigned(size.height)); + mFrameBuffer = FrameBuffer::New(size.width, size.height, FrameBuffer::Attachment::DEPTH_STENCIL); + mFrameBuffer.AttachColorTexture(mTexture); + DevelFrameBuffer::SetMultiSamplingLevel(mFrameBuffer, DEFAULT_FRAME_BUFFER_MULTI_SAMPLING_LEVEL); + Dali::Toolkit::ImageUrl imageUrl = Dali::Toolkit::Image::GenerateUrl(mFrameBuffer, 0u); Property::Map imagePropertyMap; imagePropertyMap.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE); @@ -552,7 +556,7 @@ void SceneView::UpdateRenderTask() Toolkit::DevelControl::RegisterVisual(*this, RENDERING_BUFFER, mVisual); - mRenderTask.SetFrameBuffer(mRenderTarget); + mRenderTask.SetFrameBuffer(mFrameBuffer); mRenderTask.SetClearEnabled(true); mRenderTask.SetClearColor(Color::TRANSPARENT); } @@ -569,7 +573,7 @@ void SceneView::UpdateRenderTask() Toolkit::DevelControl::UnregisterVisual(*this, RENDERING_BUFFER); mVisual.Reset(); - mRenderTarget.Reset(); + mFrameBuffer.Reset(); mTexture.Reset(); } } diff --git a/dali-scene3d/internal/controls/scene-view/scene-view-impl.h b/dali-scene3d/internal/controls/scene-view/scene-view-impl.h index 7632d80..f5e4f82 100644 --- a/dali-scene3d/internal/controls/scene-view/scene-view-impl.h +++ b/dali-scene3d/internal/controls/scene-view/scene-view-impl.h @@ -251,7 +251,7 @@ private: CameraActor mSelectedCamera; std::vector mCameras; std::vector mItems; - Dali::FrameBuffer mRenderTarget; + Dali::FrameBuffer mFrameBuffer; Dali::Texture mTexture; Dali::RenderTask mRenderTask; Layer mRootLayer;