From 17f74b8a57a90bbe94a9e1ed630acbe931e4897f Mon Sep 17 00:00:00 2001 From: "Eunki, Hong" Date: Thu, 29 Dec 2022 22:28:01 +0900 Subject: [PATCH] [Text] Add some more trace marker for text Change-Id: Id0d9161cce9af8cfcbeb891d9dee18d477be2b46 Signed-off-by: Eunki, Hong --- .../controller/text-controller-event-handler.cpp | 10 ++++++++-- .../text-controller-impl-model-updater.cpp | 6 ++++++ .../text/controller/text-controller-relayouter.cpp | 20 ++++++++++++++++++++ .../internal/text/rendering/text-typesetter.cpp | 6 ++++++ dali-toolkit/internal/visuals/text/text-visual.cpp | 7 +++++++ 5 files changed, 47 insertions(+), 2 deletions(-) diff --git a/dali-toolkit/internal/text/controller/text-controller-event-handler.cpp b/dali-toolkit/internal/text/controller/text-controller-event-handler.cpp index ca6d7f5..812b38e 100644 --- a/dali-toolkit/internal/text/controller/text-controller-event-handler.cpp +++ b/dali-toolkit/internal/text/controller/text-controller-event-handler.cpp @@ -22,12 +22,13 @@ #include #include #include +#include // INTERNAL INCLUDES -#include #include #include #include +#include #include namespace @@ -36,6 +37,8 @@ namespace Debug::Filter* gLogFilter = Debug::Filter::New(Debug::NoLogging, true, "LOG_TEXT_CONTROLS"); #endif +DALI_INIT_TRACE_FILTER(gTraceFilter, DALI_TRACE_PERFORMANCE_MARKER, false); + const std::string KEY_C_NAME = "c"; const std::string KEY_V_NAME = "v"; const std::string KEY_X_NAME = "x"; @@ -604,6 +607,8 @@ void Controller::EventHandler::ProcessModifyEvents(Controller& controller) return; } + DALI_TRACE_BEGIN(gTraceFilter, "DALI_TEXT_MODIFY_EVENTS"); + for(Vector::ConstIterator it = events.Begin(), endIt = events.End(); it != endIt; @@ -653,6 +658,7 @@ void Controller::EventHandler::ProcessModifyEvents(Controller& controller) // DISCARD temporary text events.Clear(); + DALI_TRACE_END(gTraceFilter, "DALI_TEXT_MODIFY_EVENTS"); } void Controller::EventHandler::TextReplacedEvent(Controller& controller) @@ -827,7 +833,7 @@ InputMethodContext::CallbackData Controller::EventHandler::OnInputMethodContextE case InputMethodContext::SELECTION_SET: { uint32_t start = static_cast(inputMethodContextEvent.startIndex); - uint32_t end = static_cast(inputMethodContextEvent.endIndex); + uint32_t end = static_cast(inputMethodContextEvent.endIndex); if(start == end) { controller.SetPrimaryCursorPosition(start, true); diff --git a/dali-toolkit/internal/text/controller/text-controller-impl-model-updater.cpp b/dali-toolkit/internal/text/controller/text-controller-impl-model-updater.cpp index 91d7eaa..48546c9 100644 --- a/dali-toolkit/internal/text/controller/text-controller-impl-model-updater.cpp +++ b/dali-toolkit/internal/text/controller/text-controller-impl-model-updater.cpp @@ -20,6 +20,7 @@ // EXTERNAL INCLUDES #include +#include #include // INTERNAL INCLUDES @@ -40,6 +41,8 @@ namespace Debug::Filter* gLogFilter = Debug::Filter::New(Debug::NoLogging, true, "LOG_TEXT_CONTROLS"); #endif +DALI_INIT_TRACE_FILTER(gTraceFilter, DALI_TRACE_PERFORMANCE_MARKER, false); + // The relative luminance of a color is defined as (L = 0.2126 * R + 0.7152 * G + 0.0722 * B) // based on W3C Recommendations (https://www.w3.org/TR/WCAG20/) constexpr float BRIGHTNESS_THRESHOLD = 0.179f; @@ -67,6 +70,7 @@ bool ControllerImplModelUpdater::Update(Controller::Impl& impl, OperationsMask o // Nothing to do if no operations are pending and required. return false; } + DALI_TRACE_BEGIN(gTraceFilter, "DALI_TEXT_MODEL_UPDATE"); Vector& srcCharacters = impl.mModel->mLogicalModel->mText; Vector displayCharacters; @@ -602,6 +606,8 @@ bool ControllerImplModelUpdater::Update(Controller::Impl& impl, OperationsMask o // Set the previous number of characters for the next time the text is updated. impl.mTextUpdateInfo.mPreviousNumberOfCharacters = numberOfCharacters; + DALI_TRACE_END(gTraceFilter, "DALI_TEXT_MODEL_UPDATE"); + return updated; } diff --git a/dali-toolkit/internal/text/controller/text-controller-relayouter.cpp b/dali-toolkit/internal/text/controller/text-controller-relayouter.cpp index a2ebc3f..f792ad5 100644 --- a/dali-toolkit/internal/text/controller/text-controller-relayouter.cpp +++ b/dali-toolkit/internal/text/controller/text-controller-relayouter.cpp @@ -20,6 +20,7 @@ // EXTERNAL INCLUDES #include +#include #include #include @@ -34,6 +35,8 @@ namespace Debug::Filter* gLogFilter = Debug::Filter::New(Debug::NoLogging, true, "LOG_TEXT_CONTROLS"); #endif +DALI_INIT_TRACE_FILTER(gTraceFilter, DALI_TRACE_PERFORMANCE_MARKER, false); + constexpr float MAX_FLOAT = std::numeric_limits::max(); float ConvertToEven(float value) @@ -157,6 +160,7 @@ Size Controller::Relayouter::CalculateLayoutSizeOnRequiredControllerSize(Control Vector3 Controller::Relayouter::GetNaturalSize(Controller& controller) { DALI_LOG_INFO(gLogFilter, Debug::Verbose, "-->Controller::GetNaturalSize\n"); + DALI_TRACE_BEGIN(gTraceFilter, "DALI_TEXT_GET_NATURAL_SIZE"); Vector3 naturalSizeVec3; // Make sure the model is up-to-date before layouting @@ -195,6 +199,8 @@ Vector3 Controller::Relayouter::GetNaturalSize(Controller& controller) naturalSizeVec3.x = ConvertToEven(naturalSizeVec3.x); naturalSizeVec3.y = ConvertToEven(naturalSizeVec3.y); + DALI_TRACE_END(gTraceFilter, "DALI_TEXT_GET_NATURAL_SIZE"); + return naturalSizeVec3; } @@ -245,6 +251,7 @@ void Controller::Relayouter::FitPointSizeforLayout(Controller& controller, const const OperationsMask operations = impl.mOperationsPending; if(NO_OPERATION != (UPDATE_LAYOUT_SIZE & operations) || impl.mTextFitContentSize != layoutSize) { + DALI_TRACE_BEGIN(gTraceFilter, "DALI_TEXT_FIT_LAYOUT"); ModelPtr& model = impl.mModel; bool actualellipsis = model->mElideEnabled; @@ -315,12 +322,15 @@ void Controller::Relayouter::FitPointSizeforLayout(Controller& controller, const impl.mFontDefaults->mFitPointSize = bestPointSize; impl.mFontDefaults->sizeDefined = true; impl.ClearFontData(); + + DALI_TRACE_END(gTraceFilter, "DALI_TEXT_FIT_LAYOUT"); } } float Controller::Relayouter::GetHeightForWidth(Controller& controller, float width) { DALI_LOG_INFO(gLogFilter, Debug::Verbose, "-->Controller::GetHeightForWidth %p width %f\n", &controller, width); + DALI_TRACE_BEGIN(gTraceFilter, "DALI_TEXT_GET_HEIGHT_FOR_WIDTH"); // Make sure the model is up-to-date before layouting EventHandler::ProcessModifyEvents(controller); @@ -350,6 +360,8 @@ float Controller::Relayouter::GetHeightForWidth(Controller& controller, float wi DALI_LOG_INFO(gLogFilter, Debug::Verbose, "<--Controller::GetHeightForWidth cached %f\n", layoutSize.height); } + DALI_TRACE_END(gTraceFilter, "DALI_TEXT_GET_HEIGHT_FOR_WIDTH"); + return layoutSize.height; } @@ -361,6 +373,7 @@ Controller::UpdateTextType Controller::Relayouter::Relayout(Controller& controll TextUpdateInfo& textUpdateInfo = impl.mTextUpdateInfo; DALI_LOG_INFO(gLogFilter, Debug::Verbose, "-->Controller::Relayout %p size %f,%f, autoScroll[%s]\n", &controller, size.width, size.height, impl.mIsAutoScrollEnabled ? "true" : "false"); + DALI_TRACE_BEGIN(gTraceFilter, "DALI_TEXT_RELAYOUT"); UpdateTextType updateTextType = NONE_UPDATED; @@ -377,6 +390,7 @@ Controller::UpdateTextType Controller::Relayouter::Relayout(Controller& controll // Not worth to relayout if width or height is equal to zero. DALI_LOG_INFO(gLogFilter, Debug::Verbose, "<--Controller::Relayout (skipped)\n"); + DALI_TRACE_END(gTraceFilter, "DALI_TEXT_RELAYOUT"); return updateTextType; } @@ -531,6 +545,7 @@ Controller::UpdateTextType Controller::Relayouter::Relayout(Controller& controll // Clear the update info. This info will be set the next time the text is updated. textUpdateInfo.Clear(); DALI_LOG_INFO(gLogFilter, Debug::Verbose, "<--Controller::Relayout\n"); + DALI_TRACE_END(gTraceFilter, "DALI_TEXT_RELAYOUT"); return updateTextType; } @@ -538,6 +553,7 @@ Controller::UpdateTextType Controller::Relayouter::Relayout(Controller& controll bool Controller::Relayouter::DoRelayout(Controller::Impl& impl, const Size& size, OperationsMask operationsRequired, Size& layoutSize) { DALI_LOG_INFO(gLogFilter, Debug::Verbose, "-->Controller::Relayouter::DoRelayout %p size %f,%f\n", &impl, size.width, size.height); + DALI_TRACE_BEGIN(gTraceFilter, "DALI_TEXT_DORELAYOUT"); bool viewUpdated(false); // Calculate the operations to be done. @@ -580,6 +596,8 @@ bool Controller::Relayouter::DoRelayout(Controller::Impl& impl, const Size& size DALI_LOG_ERROR("Current text is: %s\n", currentText.c_str()); DALI_LOG_ERROR("startIndex: %u, lastIndex: %u, requestedNumberOfCharacters: %u, charactersToGlyph.Count = %lu, glyphsPerCharacter.Count = %lu\n", startIndex, lastIndex, requestedNumberOfCharacters, charactersToGlyph.Count(), glyphsPerCharacter.Count()); + DALI_TRACE_END(gTraceFilter, "DALI_TEXT_DORELAYOUT"); + return false; } @@ -595,6 +613,7 @@ bool Controller::Relayouter::DoRelayout(Controller::Impl& impl, const Size& size // Nothing else to do if there is no glyphs. DALI_LOG_INFO(gLogFilter, Debug::Verbose, "<--Controller::DoRelayout no glyphs, view updated true\n"); + DALI_TRACE_END(gTraceFilter, "DALI_TEXT_DORELAYOUT"); return true; } @@ -693,6 +712,7 @@ bool Controller::Relayouter::DoRelayout(Controller::Impl& impl, const Size& size DALI_LOG_INFO(gLogFilter, Debug::Concise, "Controller::Relayouter::DoRelayout [%p] mImpl->mIsTextDirectionRTL[%s] [%s]\n", &impl, (impl.mIsTextDirectionRTL) ? "true" : "false", currentText.c_str()); #endif DALI_LOG_INFO(gLogFilter, Debug::Verbose, "<--Controller::Relayouter::DoRelayout, view updated %s\n", (viewUpdated ? "true" : "false")); + DALI_TRACE_END(gTraceFilter, "DALI_TEXT_DORELAYOUT"); return viewUpdated; } diff --git a/dali-toolkit/internal/text/rendering/text-typesetter.cpp b/dali-toolkit/internal/text/rendering/text-typesetter.cpp index aaa3911..4a3474b 100644 --- a/dali-toolkit/internal/text/rendering/text-typesetter.cpp +++ b/dali-toolkit/internal/text/rendering/text-typesetter.cpp @@ -20,6 +20,7 @@ // EXTERNAL INCLUDES #include +#include #include #include #include @@ -41,6 +42,8 @@ namespace Text { namespace { +DALI_INIT_TRACE_FILTER(gTraceFilter, DALI_TRACE_PERFORMANCE_MARKER, false); + const float HALF(0.5f); const float ONE_AND_A_HALF(1.5f); @@ -882,6 +885,7 @@ ViewModel* Typesetter::GetViewModel() PixelData Typesetter::Render(const Vector2& size, Toolkit::DevelText::TextDirection::Type textDirection, RenderBehaviour behaviour, bool ignoreHorizontalAlignment, Pixel::Format pixelFormat) { + DALI_TRACE_BEGIN(gTraceFilter, "DALI_TEXT_RENDERING_TYPESETTER"); // @todo. This initial implementation for a TextLabel has only one visible page. // Elides the text if needed. @@ -1071,6 +1075,8 @@ PixelData Typesetter::Render(const Vector2& size, Toolkit::DevelText::TextDirect // Create the final PixelData for the combined image buffer PixelData pixelData = Devel::PixelBuffer::Convert(imageBuffer); + DALI_TRACE_END(gTraceFilter, "DALI_TEXT_RENDERING_TYPESETTER"); + return pixelData; } diff --git a/dali-toolkit/internal/visuals/text/text-visual.cpp b/dali-toolkit/internal/visuals/text/text-visual.cpp index 3c6bdf3..64be4ad 100644 --- a/dali-toolkit/internal/visuals/text/text-visual.cpp +++ b/dali-toolkit/internal/visuals/text/text-visual.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include // INTERNAL HEADER @@ -51,6 +52,8 @@ namespace Internal { namespace { +DALI_INIT_TRACE_FILTER(gTraceFilter, DALI_TRACE_PERFORMANCE_MARKER, false); + const int CUSTOM_PROPERTY_COUNT(5); // anim,premul,size,offset,multicol const Vector4 FULL_TEXTURE_RECT(0.f, 0.f, 1.f, 1.f); @@ -660,6 +663,8 @@ void TextVisual::AddRenderer(Actor& actor, const Vector2& size, bool hasMultiple Shader shader = GetTextShader(mFactoryCache, TextVisualShaderFeature::FeatureBuilder().EnableMultiColor(hasMultipleTextColors).EnableEmoji(containsColorGlyph).EnableStyle(styleEnabled).EnableOverlay(isOverlayStyle)); mImpl->mRenderer.SetShader(shader); + DALI_TRACE_BEGIN(gTraceFilter, "DALI_TEXT_VISUAL_UPDATE_RENDERER"); + // Get the maximum size. const int maxTextureSize = Dali::GetMaxTextureSize(); @@ -789,6 +794,8 @@ void TextVisual::AddRenderer(Actor& actor, const Vector2& size, bool hasMultiple } } } + + DALI_TRACE_END(gTraceFilter, "DALI_TEXT_VISUAL_UPDATE_RENDERER"); } TextureSet TextVisual::GetTextTexture(const Vector2& size) -- 2.7.4