Advance native Windows RR integration, kernel tooling and local packaging
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.
This commit is contained in:
1 parent
3345fffcd3
commit
247fe1092d
60 files changed
+7168
-66
No files matched your search
@@ -0,0 +1,53 @@
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory=$true)][string]$Probe,
|
||||
[Parameter(Mandatory=$true)][string]$ModelDirectory,
|
||||
[Parameter(Mandatory=$true)][string]$InputDirectory,
|
||||
[Parameter(Mandatory=$true)][string]$ReferenceDirectory,
|
||||
[Parameter(Mandatory=$true)][string]$OutputDirectory
|
||||
)
|
||||
$ErrorActionPreference='Stop'
|
||||
$repo=[IO.Path]::GetFullPath((Join-Path $PSScriptRoot '../..'))
|
||||
foreach($name in @('Probe','ModelDirectory','InputDirectory','ReferenceDirectory')){
|
||||
Set-Variable -Name $name -Value ((Get-Item -LiteralPath (Get-Variable -Name $name -ValueOnly)).FullName)
|
||||
}
|
||||
$OutputDirectory=[IO.Path]::GetFullPath($OutputDirectory)
|
||||
if(!$OutputDirectory.StartsWith([IO.Path]::GetFullPath((Join-Path $repo 'build'))+'\',[StringComparison]::OrdinalIgnoreCase)){
|
||||
throw 'RR bridge outputs must stay under ignored build/.'
|
||||
}
|
||||
if(Test-Path -LiteralPath $OutputDirectory){throw 'Use a fresh RR bridge output directory.'}
|
||||
New-Item -ItemType Directory -Path $OutputDirectory | Out-Null
|
||||
$frames=@(Get-Content -LiteralPath (Join-Path $InputDirectory 'frames.txt') | Where-Object {$_ -match '^frame '}).Count
|
||||
if(!$frames -or $frames -gt 32){throw 'Need 1..32 RR fixture frames.'}
|
||||
$arguments=@('--rr-model',$ModelDirectory,'--rr-inputs',$InputDirectory,'--rr-reference',$ReferenceDirectory,
|
||||
'--rr-output',(Join-Path $OutputDirectory 'frames'))
|
||||
foreach($value in $arguments){if($value.Contains('"')){throw 'Embedded quotes are not supported in probe paths.'}}
|
||||
$quoted=($arguments | ForEach-Object {'"'+$_+'"'}) -join ' '
|
||||
$process=Start-Process -FilePath $Probe -ArgumentList $quoted -WindowStyle Hidden -PassThru `
|
||||
-RedirectStandardOutput (Join-Path $OutputDirectory 'stdout.log') `
|
||||
-RedirectStandardError (Join-Path $OutputDirectory 'stderr.log')
|
||||
try{
|
||||
$deadline=[DateTime]::UtcNow.AddSeconds(180)
|
||||
while(!$process.WaitForExit(1000)){
|
||||
if([DateTime]::UtcNow -ge $deadline){Stop-Process -Id $process.Id;throw 'Exact RR bridge process stopped at 180-second limit.'}
|
||||
}
|
||||
$process.WaitForExit()
|
||||
$text=Get-Content -LiteralPath (Join-Path $OutputDirectory 'stdout.log') -Raw
|
||||
Get-Content -LiteralPath (Join-Path $OutputDirectory 'stdout.log')
|
||||
$records=[regex]::Matches($text,'(?m)^RR_BRIDGED_FRAME .*finite=1 nonuniform=1 standalone_exact=1 ')
|
||||
if($process.ExitCode -ne 0 -or $records.Count -ne $frames -or $text -notmatch 'PASS RR_BRIDGED_INFERENCE'){
|
||||
Get-Content -LiteralPath (Join-Path $OutputDirectory 'stderr.log')
|
||||
throw "RR bridged inference failed ($($process.ExitCode)); see $OutputDirectory"
|
||||
}
|
||||
$outputs=@(Get-ChildItem -LiteralPath (Join-Path $OutputDirectory 'frames') -Filter '*-out.bin')
|
||||
if($outputs.Count -ne $frames){throw 'Incomplete RR output file set.'}
|
||||
foreach($output in $outputs){
|
||||
if((Get-FileHash -LiteralPath $output.FullName).Hash -ne (Get-FileHash -LiteralPath (Join-Path $ReferenceDirectory $output.Name)).Hash){
|
||||
throw 'Independent bridged/reference output hash comparison failed.'
|
||||
}
|
||||
}
|
||||
@{passed=$true;frames=$frames;guides=7;standaloneExact=$true;gpuFenceHandoff=$true;
|
||||
gameAccessed=$false;qualityReference=$false;d3d12Textures=$true;probeSha256=(Get-FileHash -LiteralPath $Probe).Hash;
|
||||
model=$ModelDirectory;inputs=$InputDirectory;reference=$ReferenceDirectory} |
|
||||
ConvertTo-Json -Depth 4 | Set-Content -LiteralPath (Join-Path $OutputDirectory 'summary.json') -Encoding UTF8
|
||||
}finally{$process.Dispose()}
|
||||
Reference in new issue
Block a user