mirror of
https://github.com/tangerineturtle1/NX2navi.git
synced 2026-11-15 19:19:58 -04:00
The driver keeps the prepared shaders' libraries in its shader cache, and under Windows that cache has a size limit set in NVIDIA's settings. A limit smaller than the set drops the oldest libraries as new ones come in (a 2048 MB cache could not hold them on the reporter's RTX 5070 Ti), so every start builds them again in the background and play stutters until that is done. The cold lines of the library warm now say so on NVIDIA under Windows, most plainly when the cache is cold right after a warm that finished on the same driver; the build kit's notes and the example file say it too. tests/warm_hint_check.py checks which hint each case gets. From pull request #403 by tarballz; two conflicts resolved (an include and the build kit's notes). Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
"""Build and run tests/warm_hint_check.c: runtime/vk_warm_hint.h, what the library warm's log adds when the driver's
|
|
cache of stage libraries is cold, by GPU vendor and by why it is cold.
|
|
|
|
Usage: warm_hint_check.py
|
|
"""
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
sys.path.insert(0, str(ROOT / 'tests' / 'diff'))
|
|
from common import MSYS_BIN, compiler # noqa: E402
|
|
|
|
|
|
def main():
|
|
work = ROOT / 'build' / 'test' / 'warm_hint'
|
|
work.mkdir(parents=True, exist_ok=True)
|
|
exe = work / ('warm_hint_check.exe' if os.name == 'nt' else 'warm_hint_check')
|
|
env = dict(os.environ)
|
|
if os.name == 'nt' and MSYS_BIN.exists():
|
|
env['PATH'] = str(MSYS_BIN) + os.pathsep + env.get('PATH', '')
|
|
# both platforms' text is checked through lw_cold_hint's windows argument; LW_ON_WINDOWS on the one built for
|
|
subprocess.check_call([compiler(), '-O1', '-Wall', '-Werror', '-I', str(ROOT / 'runtime'),
|
|
str(ROOT / 'tests' / 'warm_hint_check.c'), '-o', str(exe)], env=env)
|
|
return subprocess.run([str(exe)], env=env).returncode
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|