Implement native NGX feature-13 RR through a LUID-matched D3D12/Vulkan shared-memory and timeline-fence bridge. Add owned parameter snapshots, GPU resource lifetime handling, inherited/enhanced barriers, optional guides, sampled input formats and depth-plane support with stencil preservation. Separate RR initialization from the SR CUDA runtime and expose explicit backend/model selection through player configuration. Add synthetic bridge, snapshot and NGX lifecycle harnesses covering camera/history/reset, parameter mutation, delayed submission, early release, capability gating and unsupported-input rejection. Add exact gfx11 D/E model generation, verified caches, versioned local deployment with configuration backups, and isolated portable model tools with pinned Python, NumPy and glslang dependencies. Extend Windows K benchmarking and private native-cache selection. Fix LLVM 22 emitter/helper compatibility and preserve exact-output validation for local output-kernel optimization. Add native FSR RR provider diagnostics, local development package refresh tooling, installer/checker updates, FidelityFX headers and Windows parity documentation. Keep NVIDIA binaries, derived models and private optimized kernels out of distributable packages. Native RR evidence remains synthetic; game validation, FSR RR dispatch, installer integration and Linux performance parity remain incomplete.
46 lines
2.3 KiB
PowerShell
46 lines
2.3 KiB
PowerShell
[CmdletBinding()]
|
|
param(
|
|
[Parameter(Mandatory=$true)][string]$Probe,
|
|
[Parameter(Mandatory=$true)][string]$DenoiserDll,
|
|
[Parameter(Mandatory=$true)][string]$OutputDirectory,
|
|
[switch]$QueryOnly,
|
|
[ValidateRange(1,600)][int]$TimeoutSeconds=120
|
|
)
|
|
$ErrorActionPreference='Stop'
|
|
$repo=[IO.Path]::GetFullPath((Join-Path $PSScriptRoot '../..'))
|
|
$Probe=(Get-Item -LiteralPath $Probe).FullName
|
|
$DenoiserDll=(Get-Item -LiteralPath $DenoiserDll).FullName
|
|
$expected='48f1e5888ba6a0a3d59a98b9751e37c392b0f7b8c223d0082d5c1f40642879d3'
|
|
if((Get-FileHash -LiteralPath $DenoiserDll -Algorithm SHA256).Hash.ToLowerInvariant() -ne $expected){
|
|
throw 'Expected unmodified AMD SDK 2.3 denoiser 1.2.0.2740.'
|
|
}
|
|
$OutputDirectory=[IO.Path]::GetFullPath($OutputDirectory)
|
|
$buildRoot=[IO.Path]::GetFullPath((Join-Path $repo 'build'))
|
|
if(!$OutputDirectory.StartsWith($buildRoot+'\',[StringComparison]::OrdinalIgnoreCase)){
|
|
throw 'Probe output must stay under the ignored build directory.'
|
|
}
|
|
if(Test-Path -LiteralPath $OutputDirectory){throw 'Use a new probe output directory.'}
|
|
New-Item -ItemType Directory -Path $OutputDirectory | Out-Null
|
|
# Start-Process joins arguments into one command line. Reject embedded quotes;
|
|
# quote absolute file paths so spaces in the workspace are supported.
|
|
foreach($path in @($DenoiserDll,$OutputDirectory)){
|
|
if($path.Contains('"')){throw 'Embedded quotes are not supported in probe paths.'}
|
|
}
|
|
$arguments='"'+$DenoiserDll+'" "'+$OutputDirectory+'" --size 64x64 --frames 48'
|
|
if($QueryOnly){$arguments+=' --query-only'}
|
|
$process=Start-Process -FilePath $Probe -ArgumentList $arguments -WindowStyle Hidden -PassThru `
|
|
-RedirectStandardOutput (Join-Path $OutputDirectory 'stdout.log') `
|
|
-RedirectStandardError (Join-Path $OutputDirectory 'stderr.log')
|
|
try{
|
|
$deadline=[DateTime]::UtcNow.AddSeconds($TimeoutSeconds)
|
|
while(!$process.WaitForExit(1000)){
|
|
if([DateTime]::UtcNow -ge $deadline){
|
|
Stop-Process -Id $process.Id -ErrorAction SilentlyContinue
|
|
throw "FSR RR probe timed out after $TimeoutSeconds seconds; exact probe process stopped."
|
|
}
|
|
}
|
|
$process.WaitForExit()
|
|
Get-Content -LiteralPath (Join-Path $OutputDirectory 'stdout.log')
|
|
if($process.ExitCode -ne 0){throw "FSR RR probe failed ($($process.ExitCode)); see $OutputDirectory"}
|
|
}finally{$process.Dispose()}
|