fix(agc): look up cached draws at the fixed pixel push slot

With graphics pipeline libraries a draw places the pixel shader's push
constants at the fixed fragment slot (Graphics::StagePushOffset) and the
draw cache records that offset, but lookupDraw still expected the stacked
offset after the vertex shader's push bytes. Every pixel stage then missed
as a layout mismatch, so no cached draw or draw recipe was reused and each
draw was captured and materialized again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
JAB-dev 2026-10-10 20:11:36 +02:00
parent 9f87be5cc0
commit 5abc86f3d5
1 changed files with 1 additions and 0 deletions

View File

@ -89,6 +89,7 @@ void Driver::lookupDraw(const Submission& submission, const std::shared_ptr<Vulk
for (std::size_t i = 0; !miss && i < programs.size(); ++i) {
if (roles[i] == Role::GeometryBack) continue;
++stageValidations;
cursor = Graphics::StagePushOffset(cursor, programs[i].binary.stage, localDevice->GraphicsPipelineLibraries());
const auto& variants = entry->stages[i];
auto outcome = EntryOutcome::Differing;
bool anyLayout = false;