RTL text containing two different script types could sometimes lead to HarfBuzz returning non-monotonic cluster IDs, which could cause an assertion in the code that tries to count the number of graphemes and characters in each glyph.
This assertion can be prevented by moving the logic for performing that calculation to after each sub-section, as then the calculation is always bound to the correct character ranges from the source buffer.
Additionally this change prevents a transient FString being constructed by FSlateTextShaper::PerformHarfBuzzTextShaping each time it called HarfBuzzUtils::AppendStringToBuffer, as the shaper is working with a const TCHAR* rather than an FString (HarfBuzzUtils::AppendStringToBuffer now uses FStringView instead).
#jira UE-91619
[FYI] Matt.Kuhlenschmidt
#rb none
#ROBOMERGE-SOURCE: CL 12875935 in //UE4/Release-4.25/... via CL 12875938 via CL 12875940
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v681-12776863)
[CL 12875943 by jamie dale in Main branch]
#ROBOMERGE-SOURCE: CL 12488116 via CL 12488120 via CL 12488122 via CL 12488123
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v673-12478461)
[CL 12488124 by nick darnell in Main branch]
- 450ms to 111ms in warm
- 2.5s to 378ms in cold (No AV exclusions)
- 1.4s to 128ms in cold (AV exclusions on png files)
- Cold cache = Cleared standby pages, mostly equivalent to a reboot
- Warm cache = 2nd run of 2 consecutive runs
#rnx
#rb Matt.Kuhlenschmidt
#ROBOMERGE-OWNER: danny.couture
#ROBOMERGE-AUTHOR: danny.couture
#ROBOMERGE-SOURCE: CL 12486169 via CL 12486621 via CL 12486623 via CL 12486624
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v673-12478461)
[CL 12487559 by danny couture in Main branch]
#jira UE-86062
#rb Emil.Persson
#ROBOMERGE-SOURCE: CL 12470734 in //UE4/Release-4.25/... via CL 12470736 via CL 12470747
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v672-12450963)
[CL 12470765 by kenzo terelst in Main branch]
PIE sessions which launch a new standalone window no longer double render debug safe zones and all PIE options are more consistent with handling r.DebugSafeZone.XXXX cvars.
#Jira UE-89101 UE-89108 UE-87689
#rb lauren.barnes
#ROBOMERGE-SOURCE: CL 11968084 in //UE4/Release-4.25/... via CL 11968102
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v656-11643781)
[CL 11968114 by brooke hubert in Main branch]
[FYI] Nick.Darnell
#ROBOMERGE-SOURCE: CL 11459874 via CL 11459877 via CL 11459880
#ROBOMERGE-BOT: (v654-11333218)
[CL 11459881 by lukasz furman in Main branch]
#rb [at]Dan.Hertzka
#ROBOMERGE-SOURCE: CL 11294962 via CL 11294963 via CL 11296120 via CL 11296175
#ROBOMERGE-BOT: (v647-11244347)
[CL 11296220 by josh gross in Main branch]
Slate - Deprecating float GetRelativeLayoutScale(const FSlotBase& Child, float LayoutScaleMultiplier), Long Live float GetRelativeLayoutScale(const int32 ChildIndex, float LayoutScaleMultiplier), you must also set bHasRelativeLayoutScale to true in your constructor for your SWidget if you need this function called. This removes 2 virtual calls from almost every widget's prepass, and only now requires 1 for every widget that needs to implement GetRelativeLayoutScale, which very few actually do.
Matt.Kuhlenschmidt
#ROBOMERGE-SOURCE: CL 11291134 via CL 11291179 via CL 11291189 via CL 11291196
#ROBOMERGE-BOT: (v647-11244347)
[CL 11291217 by nick darnell in Main branch]
Add a move function for assigning a delegate to a slate event.
#jira
#rb Matt.Kuhlenschmidt, Steve.Robb
#ROBOMERGE-SOURCE: CL 11219715 via CL 11219751
#ROBOMERGE-BOT: (v644-11213502)
[CL 11241060 by marc audy in Main branch]
#rb andrew.ladenberger
#ROBOMERGE-SOURCE: CL 11162764 via CL 11162767 via CL 11162770
#ROBOMERGE-BOT: (v640-11091645)
[CL 11164921 by jordan cristiano in Main branch]
Improved CSV stats we're tracking for cached elements. This version should fix the issue with weakptrs getting corrupted.
Removing memstacks and using inline allocators with enough slack, the memstacks don't work as expected over multiple frames.
Cleaning up cached lists from the new array when the corresponding widget's handle is cleaned up.
#author Matt.Kuhlenschmidt
#editor Nick.Darnell
#rb Nick.Darnell
[FYI] Matt.Kuhlenschmidt, Andrew.Ladenberger
#ROBOMERGE-SOURCE: CL 11068394 via CL 11068413 via CL 11068420
#ROBOMERGE-BOT: (v637-11041722)
[CL 11068429 by nick darnell in Main branch]
[FYI] Nick.Darnell
#ROBOMERGE-SOURCE: CL 11025062 via CL 11025214 via CL 11025315
#ROBOMERGE-BOT: (v633-10983880)
[CL 11025423 by bob tellez in Main branch]