Files
UnrealEngineUWP/Engine/Config/VulkanPC/DataDrivenPlatformInfo.ini
giacomo serafini 4ed9852e51 NNE - Settle hardware capability support for NNERuntimeHlsl
Problems:
* Hardware capability support is not enforced explicitly

Solutions:
* Put platform support checks in shader base's `ShouldCompilePermutation()` to skip compiling NNE shaders when target platform doesn't support them.
* Put current system support checks in `CanCreateModelRDG()`, disallowing model creation on unsupported systems
* Introduce WITH_NNE_RUNTIME_HLSL define enabling registration of the runtime only for supported systems (non-editor builds).

Tests:
* Win64 Editor PCD3D_SM6: manually checked that Hlsl OPs are getting executed
* Win64 Editor PCD3D_SM5: manually checked that shaders don't get compiled and that model creation fails with unsupported messages.
* Win64 Editor VULKAN_SM5: manually checked that shaders don't get compiled and that model creation fails with unsupported messages.
* Win64 Editor VULKAN_SM6: manually checked that shaders don't get compiled and that model creation fails with unsupported messages.
* Win64 Standalone PCD3D_SM6: manually checked that Hlsl OPs are getting executed
* Win64 Standalone PCD3D_SM5: manually checked that shaders don't get compiled, that Hlsl runtime doesn't get registered and that proper messages are emitted
* Win64 Standalone VULKAN_SM5: manually checked that shaders don't get compiled, that Hlsl runtime doesn't get registered and that proper messages are emitted
* Win64 Standalone VULKAN_SM6:manually checked that shaders don't get compiled, that Hlsl runtime doesn't get registered and that proper messages are emitted
* Supported Consoles: manually checked that Hlsl OPs are getting executed
* Mac Editor METAL_SM5: manually checked that shaders don't get compiled and that model creation fails with unsupported messages.
* Mac Editor METAL_SM6: manually checked that shaders are getting compiled (although compilation fails for an unrelated reason)
* Linux Editor VULKAN_SM5: manually checked that shaders don't get compiled and that model creation fails with unsupported messages.
* Linux Editor VULKAN_SM6: manually checked that shaders don't get compiled and that model creation fails with unsupported messages.
* Linux Standalone VULKAN_SM6:manually checked that shaders don't get compiled, that Hlsl runtime doesn't get registered and that proper messages are emitted

#rnx
#jira UE-218576
#rb florent.guinier

[CL 35491250 by giacomo serafini in ue5-main branch]
2024-08-13 08:38:20 -04:00

294 lines
6.7 KiB
INI

; Have a single source of truth for all desktop class Vulkan platforms
; This is done so all the platforms using SP_VULKAN_SM5/SM6 can share the same DDC
; If your Vulkan platform needs its own settings, create a new SP for it
[DataDrivenPlatformInfo]
bIsConfidential=false
bIsFakePlatform=true
GlobalIdentifier=97F8C85EF1B0424792D201C893358C8F
[ShaderPlatform VULKAN_SM5]
Language=Vulkan
MaxFeatureLevel=SM5
ShaderFormat=SF_VULKAN_SM5
bIsMobile = false
bIsMetalMRT = false
bIsPC = true
bIsConsole = false
bIsAndroidOpenGLES = false
bSupportsDxc = true
bIsSPIRV=true
bSupportsDebugViewShaders=true
; //#todo-vulkanddpi
bSupportsMobileMultiView = false
; //#todo-vulkanddpi
bSupportsArrayTextureCompression = false
bSupportsDistanceFields = true
bSupportsDiaphragmDOF = true
bSupportsRGBColorBuffer = true
bSupportsCapsuleShadows = true
bSupportsPercentageCloserShadows=true
bSupportsIndexBufferUAVs = true
bSupportsInstancedStereo = true
SupportsMultiViewport = RuntimeDependent
bSupportsMSAA = true
; //#todo-vulkanddpi
bSupports4ComponentUAVReadWrite = false
; //#todo-vulkanddpi
bSupportsRenderTargetWriteMask = false
bSupportsRayTracing = true
bSupportsRayTracingShaders = false
bSupportsInlineRayTracing = true
bSupportsRayTracingIndirectInstanceData = true
bSupportsByteBufferComputeShaders = true
bSupportsGPUScene = true
; //#todo-vulkanddpi
bSupportsPrimitiveShaders = false
bSupportsUInt64ImageAtomics = false
; //#todo-vulkanddpi
bRequiresVendorExtensionsForAtomics = false
bSupportsNanite = false
bSupportsSceneDataCompressedTransforms = true
bSupportsLumenGI = true
; //#todo-vulkanddpi
bSupportsSSDIndirect = false
; //#todo-vulkanddpi
bSupportsTemporalHistoryUpscale = false
; //#todo-vulkanddpi
bSupportsRTIndexFromVS = false
; //#todo-vulkanddpi
bSupportsIntrinsicWaveOnce = false
; //#todo-vulkanddpi
bSupportsConservativeRasterization = false
bSupportsWaveOperations=RuntimeDependent
MinimumWaveSize=4
MaximumWaveSize=128
; //#todo-vulkanddpi
bRequiresExplicit128bitRT = false
bTargetsTiledGPU = false
bNeedsOfflineCompiler = false
bSupportsComputeFramework = true
; //#todo-vulkanddpi
bSupportsDualSourceBlending = true
; //#todo-vulkanddpi
bRequiresGeneratePrevTransformBuffer = false
bRequiresRenderTargetDuringRaster = true
; //#todo-vulkanddpi
bRequiresDisableForwardLocalLights = true
bCompileSignalProcessingPipeline = true
bSupportsGen5TemporalAA=true
; //#todo-vulkanddpi
bSupportsPerPixelDBufferMask = false
bSupportsVariableRateShading = true
NumberOfComputeThreads = 64
bSupportsHairStrandGeometry=true
bSupportsFFTBloom=true
bSupportsDiaphragmDOF=true
; shaderOutputLayer is optional in our baseline VK version
bSupportsVertexShaderLayer=false
bSupportsAnisotropicMaterials=true
; disable until DXC -> SPRIV ROV support is implemented
bSupportsROV=false
bSupportsOIT=false
EnablesHLSL2021ByDefault=1
FriendlyName=LOCTEXT("FriendlyShaderPlatformName_VulkanPC_SM5", "PC Vulkan SM5")
BindlessSupport=Unsupported
bSupportsNNEShaders=false
bSupportsUniformBufferObjects = true
bSupportsRealTypes=Unsupported
bSupportsIndependentSamplers=true
[ShaderPlatform VULKAN_SM6]
Language=Vulkan
MaxFeatureLevel=SM6
ShaderFormat=SF_VULKAN_SM6
bIsMobile = false
bIsMetalMRT = false
bIsPC = true
bIsConsole = false
bIsAndroidOpenGLES = false
bSupportsDxc = true
bIsSPIRV=true
bSupportsDebugViewShaders=true
bSupportsMobileMultiView = false
bSupportsArrayTextureCompression = false
bSupportsDistanceFields = true
bSupportsDiaphragmDOF = true
bSupportsRGBColorBuffer = true
bSupportsCapsuleShadows = true
bSupportsPercentageCloserShadows=true
bSupportsVolumetricFog = true
bSupportsIndexBufferUAVs = true
bSupportsInstancedStereo = true
SupportsMultiViewport = RuntimeDependent
bSupportsMSAA = true
bSupports4ComponentUAVReadWrite = false
bSupportsRenderTargetWriteMask = false
bSupportsRayTracing = true
bSupportsInlineRayTracing = true
bSupportsRayTracingIndirectInstanceData = true
bSupportsByteBufferComputeShaders = true
; Enable full Vulkan ray tracing
bSupportsRayTracingShaders = true
bSupportsPathTracing = true
bSupportsRayTracingCallableShaders = true
bSupportsRayTracingProceduralPrimitive = true
bSupportsHighEndRayTracingEffects=true
bSupportsGPUScene = true
bSupportsPrimitiveShaders = false
bSupportsUInt64ImageAtomics = true
bRequiresVendorExtensionsForAtomics = false
bSupportsNanite = true
bSupportsSceneDataCompressedTransforms = true
bSupportsLumenGI = true
; //#todo-vulkanddpi
bSupportsSSDIndirect = false
; //#todo-vulkanddpi
bSupportsTemporalHistoryUpscale = false
; //#todo-vulkanddpi
bSupportsRTIndexFromVS = false
; //#todo-vulkanddpi
bSupportsIntrinsicWaveOnce = false
; //#todo-vulkanddpi
bSupportsConservativeRasterization = false
bSupportsWaveOperations=RuntimeGuaranteed
MinimumWaveSize=4
MaximumWaveSize=128
; //#todo-vulkanddpi
bRequiresExplicit128bitRT = false
bTargetsTiledGPU = false
bNeedsOfflineCompiler = false
bSupportsComputeFramework = true
; //#todo-vulkanddpi
bSupportsDualSourceBlending = true
; //#todo-vulkanddpi
bRequiresGeneratePrevTransformBuffer = false
bRequiresRenderTargetDuringRaster = true
; //#todo-vulkanddpi
bRequiresDisableForwardLocalLights = true
bCompileSignalProcessingPipeline = true
bSupportsGen5TemporalAA=true
; //#todo-vulkanddpi
bSupportsPerPixelDBufferMask = false
bSupportsVariableRateShading = true
NumberOfComputeThreads = 64
bSupportsHairStrandGeometry=true
bSupportsFFTBloom=true
bSupportsDiaphragmDOF=true
; todo-jn: shaderOutputLayer is optional in our baseline VK version
bSupportsVertexShaderLayer=false
bSupportsAnisotropicMaterials=true
; disable until DXC -> SPRIV ROV support is implemented
bSupportsROV=false
bSupportsOIT=false
EnablesHLSL2021ByDefault=1
FriendlyName=LOCTEXT("FriendlyShaderPlatformName_VulkanPC_SM6", "PC Vulkan SM6")
BindlessSupport=AllShaderTypes
bSupportsNNEShaders=false
bSupportsUniformBufferObjects = true
bSupportsRealTypes=Unsupported
bSupportsIndependentSamplers=true
SupportsBarycentricsSemantic=RuntimeGuaranteed
[ShaderPlatform VULKAN_PCES3_1]
Language=Vulkan
MaxFeatureLevel=ES3_1
ShaderFormat=SF_VULKAN_ES31
bIsPC=true
bIsMobile=true
bSupportsMobileMultiView=true
bSupportsIndexBufferUAVs=true
bSupportsManualVertexFetch=false
; The support really is conditional, the runtime code needs to also test GRHISupportsArrayIndexFromAnyShader
bSupportsVertexShaderLayer=true
bSupportsSceneDataCompressedTransforms=true
bSupportsShaderPipelines = false
bSupportsVertexShaderSRVs = false
bSupportsUniformBufferObjects = true
bSupportsDualSourceBlending = true
bSupportsIndependentSamplers=true
FriendlyName=LOCTEXT("FriendlyShaderPlatformName_VulkanPC_Mobile", "PC Vulkan Mobile")
[PreviewPlatform VULKAN_SM5]
PlatformName=PC
ShaderFormat=SF_VULKAN_SM5
ShaderPlatform=VULKAN_SM5
MenuTooltip=LOCTEXT("PreviewMenuTooltip_VulkanPC_SM5", "Linux using SM5 profile")