Repository navigation
Conversation
…s; lock diagnostics (builds with NotRexed#1831 and NotRexed#1833) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…SS frame generation (NGX), FSR 4 fallback (builds with NotRexed#1833 and NotRexed#1834) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…R), before the HUD or before the upscaler (builds with NotRexed#1831 and NotRexed#1834) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
c840080 to
702d9b9
Compare
|
Thanks for going through the whole series; it changed a lot. I rebuilt it on main at d7a7306. The descriptions are rewritten. How the series fits together: #1830 now builds on its own. Its What the rebase hit:
Bugs:
Your list for NotRexed:
Nits:
Tests: |
Joey-Magnus
left a comment
There was a problem hiding this comment.
With #1831 closed in favour of #2118, this plumbing no longer has the series it was built for, so I'd close it. It includes vk_dlssg.h, vk_ffx.h and framegen_methods.h from #1831 and vk_dlssnr*.h / vk_opennr.h from #1833. It also conflicts with main in seven files: vk_menu.cpp, vk_menu.h, vk_replay.cpp, nx2/build.py, two present tests and test_shader_stamp_cache.py. Two pieces stand on their own and would be welcome as small PRs on main. One is the upload hitch fix: no pool import for a single upload_unswizzle_gpu, and the threaded CPU unswizzle from 4 MB. The other is the lock diagnostics. If the vk_main.cpp default for __GL_SHADER_DISK_CACHE_SIZE / SKIP_CLEANUP comes back, it needs its own PR and a maintainer decision, as hckrman101 noted, since it changes disk use for every Windows NVIDIA player.
|
Closing, as suggested. With #1831 gone this plumbing has no series left, so its pieces went where they belong:
Thanks for the reviews. |
The upscaling (#1831) and neural rendering (#1833) work needs menu rows, renderer hooks and build changes; this PR is those. It also fixes two upload hitches and adds the lock diagnostics
docs/performance.mdis built on.#1831, #1833 and this PR build only together. This PR includes
vk_dlssg.h,vk_ffx.h,framegen_methods.h,vk_dlssnr*.handvk_opennr.h, and the other two use this one's rows and hooks. Please review and merge the three as one unit;FIocker:super-build/allis the three together, and it's what was built and tested. #1830 is separate and builds alone.super-build/shaders(#1830)super-build/upscaling-framegen(#1831)super-build/neural(#1833)super-build/core(#1834)What it does
Insert menu (
vk_menu.*):TAB_NEURAL = 5, after main's Audio tab (TAB_COUNT = 6), with its rows, including Stage (after or before the upscaler).nr_<name>(nr_model,nr_style,nr_preset, …) by one rule inini_key. The switch itself keepsneural_rendering.framegen_methods.h).ffx::upscale_supported).Renderer:
vk_main.cpp: device features and extensions for NGX and OpenDLSS-NR.vk_replay.cpp: the present's NR pass is skipped when the chain already ran it. The headless present now uses the same call and guard (nr::applybehind!dlss_nr_before_hud()), so a headless run with Stage = Before upscaler no longer applies NR twice.vk_draw.cpp: the scene's view-projection capture, and skinned-draw detection for the new actor formats.scene_depth.frame).scene_frame_inputsanswers only for this frame's or the last one's.scene_depthandscene_vpare written under a lock, sinceRX_VK_PARALLEL's workers resolve targets too.Upload hitches (
vk_texture.cpp,vk_memory.cpp):upload_unswizzle_gpuuses the GPU path only from a pool that is already imported (memory_guest_contained). An import made for one upload took 22-25 ms on the replay thread, and three of them, when the camera turns to the Deku Tree, made a 60 ms hitch.RX_VK_UNSWIZZLE_IMPORT=1brings back the import.Lock diagnostics (
vk_internal.h,vk_memory.cpp,vk_texture.*):ParLockcounts by file and line, andmemory_pool_lock_reasonsandtexture_touch_missescount why the two busiest sites take the lock. These cost nothing while parallel replay is off.docs/performance.mdhas the numbers; it no longer contradicts itself and names functions instead of line numbers.NVIDIA's shader disk cache is opt-in:
nvidia_shader_cache_gb=<GB>inhookshot_options.ini, with no menu row. It sets__GL_SHADER_DISK_CACHE_SIZEand turns trimming off, only when asked and only where the environment doesn't set them. It's documented indocs/performance.md.Host:
nn_vi.c'sHOS_DISPLAY_VRR=1(opt-in) tells the game the display does variable refresh, which lifts its 60 fps limiter, andSetDisplay120HzRefreshRateCapabilityis answered.Build (
nx2/build.py): NGX flags for every file that sees NVIDIA's headers (vk_dlss,vk_ngx,vk_dlssg,vk_dlssnr_ngx), OpenDLSS-NR's PTX kernels, and Streamline's SDK path for the NR backend.Tests: main's fixtures that cut our changed functions out get the stubs they now need (
direct_buffer_writes,dlss_sdk_cache,framegen_preset,present_geometry_trace,present_source_crop,stick_dead_zone,temporal_jitter,upscale_independent,audio_output_menu,rumble_menu,shader_stamp_cache). None of their checks are weakened.Taken out since the first review
Everything below is gone from the series:
--repository-url,package.json,repository.txt/HOOKSHOT_REPOSITORY, the prebuilt-renderer path, and the Linux workflow's NGX SDK fetch. Main has moved to release-please, and the rest was inactive on Windows anyway.old_upscaling3/4) and the extratx_upscalelabels.tx_upscaleis main's.hos_sdl_refresh_hz()and theHOS_VSYNC_HZmention: neither was used.vk_main.cppandvk_menu.cpp.vk_slfg.cpp,nx2_sl.hand its hooks in Reflex, the device and the present (see feat(vk): DLSS frame generation (NGX), more actor motion for DLSS, FidelityFX FSR 4 fallback (builds with #1833, #1834) #1831).Testing
tests/run_all.pyon the three together (super-build/all), locally (clang targeting MSVC, the CPM Vulkan headers, glslang 11.12): 328 passed. The only failures are the same 18 that main at d7a7306 has on this machine, all down to this PC's toolchain.🤖 Generated with Claude Code