TargetSettingsIniSectionName

TargetSettingsIniSectionName

#Overview

name: TargetSettingsIniSectionName

The value of this variable can be defined or overridden in .ini config files. 8 .ini config files referencing this setting variable.

It is referenced in 5 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of TargetSettingsIniSectionName is to specify the name of the INI section used to load target platform settings in Unreal Engine 5. This variable is primarily used for platform-specific configurations and settings.

This setting variable is relied upon by several Unreal Engine subsystems and modules, including:

  1. Core module (DataDrivenPlatformInfoRegistry)
  2. Engine module (AudioCompressionSettingsUtils)
  3. RenderCore module (RenderUtils)

The value of this variable is set in the DataDrivenPlatformInfoRegistry, specifically in the LoadDDPIIniSettings function. It is loaded from an INI file using the DDPIGetString function.

TargetSettingsIniSectionName interacts with other platform-specific variables and settings, such as bIsConfidential, bIsFakePlatform, and HardwareCompressionFormat. It is used to determine the appropriate INI section for loading platform-specific settings.

Developers must be aware that:

  1. This variable is crucial for platform-specific configurations.
  2. An empty TargetSettingsIniSectionName may indicate that the platform doesn’t support certain features (e.g., compression overrides).
  3. The value of this variable affects various subsystems, including audio compression and rendering.

Best practices when using this variable include:

  1. Ensure that the correct INI section name is set for each supported platform.
  2. Use this variable consistently when accessing platform-specific settings across different modules.
  3. Check if the variable is empty before attempting to load platform-specific settings to avoid errors.
  4. Keep the INI sections organized and up-to-date for all supported platforms to maintain proper functionality across the engine.

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/Android/DataDrivenPlatformInfo.ini:3, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/IOS/DataDrivenPlatformInfo.ini:3, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/Linux/DataDrivenPlatformInfo.ini:3, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/LinuxArm64/DataDrivenPlatformInfo.ini:3, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/Mac/DataDrivenPlatformInfo.ini:3, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/TVOS/DataDrivenPlatformInfo.ini:4, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/Windows/DataDrivenPlatformInfo.ini:5, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Platforms/VisionOS/Config/DataDrivenPlatformInfo.ini:4, section: [DataDrivenPlatformInfo]

#References in C++ code

#Callsites

This variable is referenced in the following C++ source code:

#Loc: <Workspace>/Engine/Source/Runtime/Core/Private/Misc/DataDrivenPlatformInfoRegistry.cpp:338

Scope (from outer to inner):

file
function     static void LoadDDPIIniSettings

Source code excerpt:

	DDPIGetBool(IniFile, TEXT("bIsConfidential"), Info.bIsConfidential);
	DDPIGetBool(IniFile, TEXT("bIsFakePlatform"), Info.bIsFakePlatform);
	DDPIGetString(IniFile, TEXT("TargetSettingsIniSectionName"), Info.TargetSettingsIniSectionName);
	DDPIGetString(IniFile, TEXT("HardwareCompressionFormat"), Info.HardwareCompressionFormat);
	DDPIGetStringArray(IniFile, TEXT("AdditionalRestrictedFolders"), Info.AdditionalRestrictedFolders);

	DDPIGetBool(IniFile, TEXT("Freezing_b32Bit"), Info.Freezing_b32Bit);
	DDPIGetUInt(IniFile, Info.Freezing_b32Bit ? TEXT("Freezing_MaxFieldAlignment32") : TEXT("Freezing_MaxFieldAlignment64"), Info.Freezing_MaxFieldAlignment);
	DDPIGetBool(IniFile, TEXT("Freezing_bForce64BitMemoryImagePointers"), Info.Freezing_bForce64BitMemoryImagePointers);

#Loc: <Workspace>/Engine/Source/Runtime/Core/Public/Misc/DataDrivenPlatformInfoRegistry.h:131

Scope: file

Source code excerpt:


	// the name of the ini section to use to load target platform settings (used at runtime and cooktime)
	FString TargetSettingsIniSectionName;

	// list of additional restricted folders
	TArray<FString> AdditionalRestrictedFolders;

	// GUID to represent this platform forever
	FGuid GlobalIdentifier;

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/AudioCompressionSettingsUtils.cpp:89

Scope (from outer to inner):

file
function     void CacheAudioCookOverrides

Source code excerpt:

	// now use that platform name to get the ini section out of DDPI
	const FDataDrivenPlatformInfo& PlatformInfo = FDataDrivenPlatformInfoRegistry::GetPlatformInfo(PlatformName);
	const FString& CategoryName = PlatformInfo.TargetSettingsIniSectionName;

	// if we don't support platform overrides, then return 
	if (CategoryName.Len() == 0)
	{
		OutOverrides = FPlatformAudioCookOverrides();
		return;

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/AudioCompressionSettingsUtils.cpp:241

Scope (from outer to inner):

file
function     static bool PlatformSupportsCompressionOverrides

Source code excerpt:

static bool PlatformSupportsCompressionOverrides(const FString& PlatformName)
{
	return FDataDrivenPlatformInfoRegistry::GetPlatformInfo(PlatformName).TargetSettingsIniSectionName.Len() > 0;
}

static inline FString GetCookOverridePlatformName(const TCHAR* PlatformName)
{
	return PlatformName ? FString(PlatformName) : FString(FPlatformProperties::IniPlatformName());
}

#Loc: <Workspace>/Engine/Source/Runtime/RenderCore/Private/RenderUtils.cpp:848

Scope (from outer to inner):

file
function     void RenderUtilsInit

Source code excerpt:

	const FDataDrivenPlatformInfo& PlatformInfo = FDataDrivenPlatformInfoRegistry::GetPlatformInfo(PlatformName);

	const FString CategoryName = PlatformInfo.TargetSettingsIniSectionName;
	if (!CategoryName.IsEmpty())
	{
		FConfigFile PlatformIniFile;
		if (FConfigCacheIni::LoadLocalIniFile(PlatformIniFile, TEXT("Engine"), /*bIsBaseIniName*/ true, *PlatformName))
		{
			bool bDistanceFields = false;