bRequiresVendorExtensionsForAtomics
bRequiresVendorExtensionsForAtomics
#Overview
name: bRequiresVendorExtensionsForAtomics
The value of this variable can be defined or overridden in .ini config files. 4
.ini config files referencing this setting variable.
It is referenced in 3
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of bRequiresVendorExtensionsForAtomics is to indicate whether a specific shader platform requires vendor extensions to support atomic operations. This setting is related to the rendering system, specifically the shader capabilities of different graphics hardware.
This setting variable is primarily used within the RHI (Rendering Hardware Interface) module of Unreal Engine 5. It’s part of the DataDrivenShaderPlatformInfo system, which provides information about various shader platforms’ capabilities.
The value of this variable is set during the parsing of data-driven shader information. It’s parsed in the ParseDataDrivenShaderInfo function within the FGenericDataDrivenShaderPlatformInfo class.
This variable interacts with other shader platform capability flags, such as bSupportsPrimitiveShaders, bSupportsUInt64ImageAtomics, and bSupportsNanite. It’s part of a larger set of flags that describe the features and requirements of different shader platforms.
Developers must be aware that this variable is platform-specific. Its value may differ depending on the target hardware and graphics API. When developing shaders or graphics features that use atomic operations, developers should check this flag to ensure compatibility across different platforms.
Best practices when using this variable include:
- Always check this flag before using atomic operations in shaders that need to work across multiple platforms.
- Consider providing alternative implementations for platforms that don’t support vendor extensions for atomics.
- Use the provided GetRequiresVendorExtensionsForAtomics function to retrieve the value, rather than accessing the variable directly.
- Be aware of the performance implications of using vendor extensions for atomics, and optimize accordingly.
- Keep up-to-date with graphics hardware and driver developments, as support for atomic operations without vendor extensions may change over time.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/VulkanPC/DataDrivenPlatformInfo.ini:64, section: [ShaderPlatform VULKAN_SM5]
- INI Section:
ShaderPlatform VULKAN_SM5
- Raw value:
false
- Is Array:
False
Location: <Workspace>/Engine/Config/VulkanPC/DataDrivenPlatformInfo.ini:183, section: [ShaderPlatform VULKAN_SM6]
- INI Section:
ShaderPlatform VULKAN_SM6
- Raw value:
false
- Is Array:
False
Location: <Workspace>/Engine/Config/Windows/DataDrivenPlatformInfo.ini:57, section: [ShaderPlatform PCD3D_SM5]
- INI Section:
ShaderPlatform PCD3D_SM5
- Raw value:
true
- Is Array:
False
Location: <Workspace>/Engine/Config/Windows/DataDrivenPlatformInfo.ini:113, section: [ShaderPlatform PCD3D_SM6]
- INI Section:
ShaderPlatform PCD3D_SM6
- Raw value:
false
- Is Array:
False
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/RHI/Private/DataDrivenShaderPlatformInfo.cpp:232
Scope (from outer to inner):
file
function void FGenericDataDrivenShaderPlatformInfo::ParseDataDrivenShaderInfo
Source code excerpt:
GET_SECTION_BOOL_HELPER(bSupportsPrimitiveShaders);
GET_SECTION_BOOL_HELPER(bSupportsUInt64ImageAtomics);
GET_SECTION_BOOL_HELPER(bRequiresVendorExtensionsForAtomics);
GET_SECTION_BOOL_HELPER(bSupportsNanite);
GET_SECTION_BOOL_HELPER(bSupportsLumenGI);
GET_SECTION_BOOL_HELPER(bSupportsSSDIndirect);
GET_SECTION_BOOL_HELPER(bSupportsTemporalHistoryUpscale);
GET_SECTION_BOOL_HELPER(bSupportsRTIndexFromVS);
GET_SECTION_BOOL_HELPER(bSupportsIntrinsicWaveOnce);
#Loc: <Workspace>/Engine/Source/Runtime/RHI/Public/DataDrivenShaderPlatformInfo.h:56
Scope (from outer to inner):
file
class class FGenericDataDrivenShaderPlatformInfo
Source code excerpt:
uint32 bSupportsPrimitiveShaders : 1;
uint32 bSupportsUInt64ImageAtomics : 1;
uint32 bRequiresVendorExtensionsForAtomics : 1;
uint32 bSupportsNanite : 1;
uint32 bSupportsLumenGI : 1;
uint32 bSupportsSSDIndirect : 1;
uint32 bSupportsTemporalHistoryUpscale : 1;
uint32 bSupportsRTIndexFromVS : 1;
uint32 bSupportsWaveOperations : int32(ERHIFeatureSupport::NumBits);
#Loc: <Workspace>/Engine/Source/Runtime/RHI/Public/DataDrivenShaderPlatformInfo.h:479
Scope (from outer to inner):
file
class class FGenericDataDrivenShaderPlatformInfo
function static const bool GetRequiresVendorExtensionsForAtomics
Source code excerpt:
{
check(IsValid(Platform));
return Infos[Platform].bRequiresVendorExtensionsForAtomics;
}
static FORCEINLINE_DEBUGGABLE const bool GetSupportsNanite(const FStaticShaderPlatform Platform)
{
check(IsValid(Platform));
return Infos[Platform].bSupportsNanite;