Scrub 'OLD code' comment framing and a getenv warning from tooling

The vk_capture_perf_test comments described its synchronous reference
arm as "the OLD code"; it is a deliberately-constructed slow baseline
the test compares against, not removed history -- reworded to say so.

Replace the last std::getenv (tone_source.hpp) with
GetEnvironmentVariableA, dropping the C4996 deprecation warning from
every audio-tone build, and drop the now-unused cstdint/cstdlib
includes. Generalize a game-name aside in the header comment.
This commit is contained in:
2026-07-12 09:17:52 +02:00
parent 4636f4bb64
commit 246289e386
2 changed files with 14 additions and 15 deletions

View File

@@ -8,13 +8,13 @@
//
// This test builds a known gradient image (in PRESENT_SRC layout) on a real device and measures the
// time the *present thread* spends per capture for two implementations:
// * a synchronous reference that mirrors the OLD code (copy + WaitForFences + read the
// HOST_COHERENT mapping + swizzle, all inline) -> reproduces the stall, and
// * coop::hook::VkCapture (the fix: present thread only records+submits; a reaper thread does the
// * a synchronous reference (copy + WaitForFences + read the HOST_COHERENT mapping + swizzle, all
// inline) -> reproduces the stall, and
// * coop::hook::VkCapture (present thread only records+submits; a reaper thread does the
// HOST_CACHED read-back + swizzle + upload off the critical path).
// It asserts the fixed present-thread cost is a small fraction of the synchronous cost, and that the
// captured image is byte-correct (BGRA->RGBA swizzle). `--sync` routes the measured path through the
// synchronous reference so the same assertion FAILS, demonstrating the test catches the regression.
// It asserts VkCapture's present-thread cost is a small fraction of the synchronous cost, and that
// the captured image is byte-correct (BGRA->RGBA swizzle). `--sync` routes the measured path through
// the synchronous reference so the same assertion FAILS, demonstrating the test catches the regression.
//
// Needs a working Vulkan ICD (the dev box has one). With no vulkan-1.dll / no device it SKIPs.
#include <cstdint>
@@ -391,7 +391,7 @@ int main(int argc, char** argv)
submit_wait(cb);
}
// --- Synchronous reference (mirrors the OLD code: HOST_COHERENT staging, inline read-back) ------
// --- Synchronous reference (HOST_COHERENT staging, inline read-back on the present thread) ------
VkBuffer ref_buf = VK_NULL_HANDLE;
VkDeviceMemory ref_mem = VK_NULL_HANDLE;
void* ref_mapped = nullptr;
@@ -443,8 +443,8 @@ int main(int argc, char** argv)
}
};
// Time the synchronous reference (a few iterations; this is the per-present cost the OLD code put
// on the game's present thread).
// Time the synchronous reference (a few iterations; this is the per-present cost an inline
// read-back puts on the game's present thread).
sync_capture(); // warm
double sync_ms = 0;
const int iters = 8;
@@ -527,7 +527,7 @@ int main(int argc, char** argv)
}
// The core assertion: the measured present-thread cost must be a small fraction of the synchronous
// read-back cost (the fix moves the read-back off the present thread). In --sync repro mode the
// read-back cost (VkCapture moves the read-back off the present thread). In --sync repro mode the
// measured path IS the synchronous one, so this fails -- demonstrating the test catches the bug.
std::printf("present-thread cost: measured %.3f ms vs synchronous %.2f ms (ratio %.3f)\n", sut_ms, sync_ms,
sut_ms / sync_ms);

View File

@@ -1,13 +1,11 @@
// Configurable WASAPI sine-tone render source, shared by coop_tone.exe and the audio
// render-hook self-test. Opens a shared-mode render client at a requested format
// (sample rate / channels / bits / float vs PCM) using AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM,
// so it can render formats that differ from the device mix format -- exactly how games
// like Godot render 44100 Hz on a 48000 Hz endpoint, the case the hook must detect.
// so it can render formats that differ from the device mix format -- exactly the case a
// game rendering 44100 Hz on a 48000 Hz endpoint creates, which the hook must detect.
#pragma once
#include <cmath>
#include <cstdint>
#include <cstdlib>
#include <windows.h>
@@ -91,7 +89,8 @@ public:
// Optional: give each channel genuinely different content (a per-channel frequency scale),
// so a downstream test can *recover* the channel count by correlation (identical channels
// are ambiguous: 2ch@R looks like 1ch@2R). Off by default -> the usual single-tone source.
if (const char* d = std::getenv("COOP_TONE_DISTINCT_CH"); d != nullptr && d[0] == '1')
char d[2] = {};
if (GetEnvironmentVariableA("COOP_TONE_DISTINCT_CH", d, sizeof(d)) > 0 && d[0] == '1')
{
distinct_ = true;
}