[Docs] (MG_IntegrationTest): the capture-buffer note described a bug that is fixed and pinned elsewhere now

This commit is contained in:
2026-08-12 09:22:17 -04:00
parent 2787d15706
commit 442e7eec1c
@@ -139,16 +139,18 @@ void main() {
// As CapturePoints, but through the baseInstance entry point, and on a capture buffer // As CapturePoints, but through the baseInstance entry point, and on a capture buffer
// of its own. // of its own.
// //
// Kept separate from CapturePoints rather than defaulting a parameter, for two // Kept separate from CapturePoints rather than defaulting a parameter, so that every
// reasons. Every existing caller stays on the draw command that carries no // existing caller stays on the draw command that carries no baseInstance at all: the
// baseInstance at all, so the negative control is a DIFFERENT command rather than // negative control is then a DIFFERENT command rather than the same one passed a zero.
// the same one passed a zero. And baseInstance is the first thing here that needs //
// several captures in ONE test, which the shared helper cannot currently do: a // The buffer per capture is a leftover. baseInstance was the first thing here that
// second capture into the same buffer object comes back empty on DirectVulkan // needed several captures in ONE test, and at the time a second capture into the same
// (respecifying a buffer that is bound to a transform-feedback binding point does // buffer object came back empty on DirectVulkan - respecifying a buffer whose bytes the
// not reach that binding - reproduced with two plain CapturePoints calls, so it is // backend had handed the frontend a pointer into replaced the storage under that
// neither about baseInstance nor about this helper). A fresh buffer per capture // pointer, so the capture wrote one store and the readback read another. That is fixed
// sidesteps it; without that, this scenario would be pinning that bug instead. // and pinned by XfbCaptureBufferReuseScenario, which owns the shape now; a buffer per
// capture is simply the cheapest thing that still isolates these three draws from each
// other.
std::vector<float> CaptureOwnBufferBaseInstance(GLuint program, int vertexCount, int instanceCount, std::vector<float> CaptureOwnBufferBaseInstance(GLuint program, int vertexCount, int instanceCount,
GLuint baseInstance, bool useBaseInstanceCommand) { GLuint baseInstance, bool useBaseInstanceCommand) {
const std::size_t floats = static_cast<std::size_t>(vertexCount) * instanceCount * 16; const std::size_t floats = static_cast<std::size_t>(vertexCount) * instanceCount * 16;