From 75dc5bc84c354f48d84898dce956342afd040ae1 Mon Sep 17 00:00:00 2001 From: Breno Assis Date: Sat, 10 Oct 2026 19:48:54 -0400 Subject: [PATCH 1/3] Refactor DrawId and Motion Vector Preparation Logic - Introduced multi-threading support in draw_ids.h for non-blocking GPU timestamp spans, including new methods PrepareBegin and PrepareEnd to manage preparation of draw IDs. - Updated the Forget method to include a preparation wait to ensure thread safety. - Enhanced performance tracking by adding new tick counters for various preparation stages in draw_ids.h. - Modified the DidPrepare method in motion_vectors.cpp to utilize the new PrepareBegin and PrepareEnd methods, improving clarity and separation of concerns. - Updated the DidStatsTag function in inject.cpp to report detailed CPU timing metrics for preparation stages. - Adjusted motion_vectors.h to include flags for tracking preparation state, ensuring proper synchronization between preparation and execution phases. --- .gitignore | 1 + src/draw_ids.cpp | 403 +++++++++++++++++++++++++++++++++++++++++ src/draw_ids.h | 42 ++++- src/inject.cpp | 11 +- src/motion_vectors.cpp | 40 ++-- src/motion_vectors.h | 5 + 6 files changed, 487 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index 496ad15..e1ab186 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /build/ +/build-x64/ *.log *.user *.suo diff --git a/src/draw_ids.cpp b/src/draw_ids.cpp index 1401f8e..5021af4 100644 --- a/src/draw_ids.cpp +++ b/src/draw_ids.cpp @@ -3398,6 +3398,8 @@ float DrawIdMv::SnapPx() { return g_snapPx; } DrawIdMv::DrawIdMv() {} DrawIdMv::~DrawIdMv() { + PrepWait(); + PrepStopThread(); delete[] m_prevFull; delete[] m_prevLoose; delete[] m_prevFlags; delete[] m_curFull; delete[] m_curLoose; delete[] m_curFlags; delete[] m_ent; delete[] m_orph; @@ -3412,6 +3414,51 @@ DrawIdMv::~DrawIdMv() { delete[] m_dump; } +bool DrawIdMv::PrepEnsureThread() { + if (m_prepThread.joinable()) return true; + if (m_prepThreadFailed) return false; + try { + m_prepStop = false; + m_prepJobReady = false; + m_prepJobRunning = false; + m_prepThread = std::thread([this]() { PrepWorkerLoop(); }); + return true; + } catch (...) { + m_prepThreadFailed = true; + Log("MV draw-ids: prepare worker thread create failed -- prepare stays on the render thread"); + return false; + } +} + +void DrawIdMv::PrepStopThread() { + { + std::lock_guard lock(m_prepMutex); + m_prepStop = true; + m_prepKickCv.notify_one(); + } + if (m_prepThread.joinable()) m_prepThread.join(); + m_prepStop = false; + m_prepJobReady = false; + m_prepJobRunning = false; + m_prepWorkN = 0; +} + +void DrawIdMv::PrepWorkerLoop() { + std::unique_lock lock(m_prepMutex); + for (;;) { + m_prepKickCv.wait(lock, [this]() { return m_prepStop || m_prepJobReady; }); + if (m_prepStop) break; + const uint32_t ne = m_prepWorkN; + m_prepJobReady = false; + m_prepJobRunning = true; + lock.unlock(); + PrepWorker(ne); + lock.lock(); + m_prepJobRunning = false; + m_prepDoneCv.notify_all(); + } +} + bool DrawIdMv::Init(ID3D11Device* dev) { if (m_ready) return true; if (m_failed || !dev) return false; @@ -3816,6 +3863,362 @@ void DrawIdMv::Poll(ID3D11DeviceContext* ctx) { } } +void DrawIdMv::PrepWorker(uint32_t ne) { + auto byKey = [](const Ent& a, const Ent& b) { return a.key < b.key || (a.key == b.key && a.sideIdx < b.sideIdx); }; + constexpr uint32_t kGroupCap = 1024; + const int64_t tFull = Qpc(); + std::sort(m_ent, m_ent + ne, byKey); + m_nGroups = 0; m_nList = 0; + uint32_t no = 0; + m_prepBigGroupLast = 0; + auto emit = [&](const Ent* e, uint32_t a, uint32_t b, bool loose) { + uint32_t c = 0, p = 0; + for (uint32_t q = a; q < b; ++q) { if (e[q].sideIdx & 0x80000000u) ++p; else ++c; } + if (!c || !p) return false; + if (c > kGroupCap || p > kGroupCap) { + m_prepBigGroupLast += c; + for (uint32_t q = a; q < b; ++q) if (!(e[q].sideIdx & 0x80000000u)) m_curBig[e[q].sideIdx] = 1; + return true; + } + uint32_t* g = &m_groupData[m_nGroups * 4u]; + g[0] = m_nList; g[1] = c; + uint32_t r = 0; + for (uint32_t q = a; q < b; ++q) { + if (e[q].sideIdx & 0x80000000u) continue; + const uint32_t i = e[q].sideIdx; + m_listData[m_nList++] = i; + m_curGroup[i] = m_nGroups; m_curRank[i] = r++; m_curLooseG[i] = loose ? 1u : 0u; + } + g[2] = m_nList; g[3] = p; + r = 0; + for (uint32_t q = a; q < b; ++q) { + if (!(e[q].sideIdx & 0x80000000u)) continue; + const uint32_t j = e[q].sideIdx & 0x7FFFFFFFu; + m_listData[m_nList++] = j; + m_prevGroup[j] = m_nGroups; m_prevRank[j] = r++; + } + ++m_nGroups; + return true; + }; + for (uint32_t a = 0; a < ne;) { + uint32_t b = a + 1; + while (b < ne && m_ent[b].key == m_ent[a].key) ++b; + if (!emit(m_ent, a, b, false)) { + for (uint32_t q = a; q < b; ++q) { + const uint32_t si = m_ent[q].sideIdx; + const uint64_t lk = (si & 0x80000000u) ? m_prevLoose[si & 0x7FFFFFFFu] : m_curLoose[si]; + m_orph[no++] = { lk, si }; + } + } + a = b; + } + m_prepFullTicksLast = (uint64_t)(Qpc() - tFull); + const int64_t tLoose = Qpc(); + std::sort(m_orph, m_orph + no, byKey); + for (uint32_t a = 0; a < no;) { + uint32_t b = a + 1; + while (b < no && m_orph[b].key == m_orph[a].key) ++b; + emit(m_orph, a, b, true); + a = b; + } + m_prepLooseTicksLast = (uint64_t)(Qpc() - tLoose); +} + +void DrawIdMv::PrepWait() { + std::unique_lock lock(m_prepMutex); + if (!m_prepThread.joinable()) return; + m_prepDoneCv.wait(lock, [this]() { return !m_prepJobReady && !m_prepJobRunning; }); +} + +bool DrawIdMv::PrepareBegin(ID3D11DeviceContext* ctx, const DrawIdRecord* rec, uint32_t fullW, uint32_t fullH, + const DrawIdRecord* fwd, float nearM, bool freshMedoid, uint32_t noMedoid, bool idsBound) { + PrepWait(); + m_prepPending = false; + m_prepN = 0; m_prepNG = 0; m_prepNF = 0; + if (m_dumpPrep) { m_dumpPrep = false; m_dumpArm = true; } + if (!ctx || !m_ready) return false; + const int64_t tPoll = Qpc(); + Poll(ctx); + m_stats.pollTicks += (uint64_t)(Qpc() - tPoll); + const int64_t t0 = Qpc(); + if (!rec || !rec->Usable()) { + m_prevN = 0; + if (!m_quiet) StaticClear(kStatClrRecord); + return false; + } + const uint32_t nG = (uint32_t)rec->Count(); + m_prepStatN = 0; + if (!m_quiet && g_statFrames > 0u) { + if (!m_prepStatKey) { + m_prepStatKey = new (std::nothrow) uint64_t[kMax]; + m_rbStatKey = new (std::nothrow) uint64_t[(size_t)kRb * kMax]; + if (!m_prepStatKey || !m_rbStatKey) { delete[] m_prepStatKey; delete[] m_rbStatKey; m_prepStatKey = m_rbStatKey = nullptr; } + } + if (m_prepStatKey && !m_statReg) + for (DrawIdMv*& u : g_statUnit) if (!u) { u = this; m_statReg = true; break; } + if (m_prepStatKey) { + const uint8_t notCand = DrawIdRecord::kFInstanced | DrawIdRecord::kFNoMvp | DrawIdRecord::kFCabin; + for (uint32_t i = 0; i < nG; ++i) m_prepStatKey[i] = (rec->Flags((int)i) & notCand) ? 0ull : rec->FullKey((int)i); + m_prepStatN = nG; + } + } + uint32_t nF = 0; + if (fwd && fwd->Count() > 0) { + if (fwd->Usable() && fwd->Segments() > 0 && fwd->PendingReplay() == 0 && !fwd->ReplayFailed() && + fwd->IdBase() == nG && nG < (uint32_t)kMax) { + nF = (uint32_t)fwd->Count(); + if (nF > (uint32_t)kMax - nG) nF = (uint32_t)kMax - nG; + } else ++m_stats.fwdDropped; + } + const uint32_t n = nG + nF; + auto src = [&](uint32_t i) -> const DrawIdRecord* { return i < nG ? rec : fwd; }; + auto idx = [&](uint32_t i) -> int { return i < nG ? (int)i : (int)(i - nG); }; + const uint32_t m = m_prevN; + const uint8_t kNoPair = DrawIdRecord::kFInstanced | DrawIdRecord::kFNoMvp; + uint32_t elig = 0, ne = 0; + m_prepInstN = 0; + for (uint32_t i = 0; i < n; ++i) { + if (g_instReplay && i < nG && (rec->Flags((int)i) & kNoPair) && m_prepInstN < (uint32_t)kRbInst) { + m_prepInstIdx[m_prepInstN] = i; m_prepInstKey[m_prepInstN] = rec->ShapeKey((int)i); ++m_prepInstN; + } + m_curFull[i] = src(i)->FullKey(idx(i)); + m_curLoose[i] = src(i)->LooseKey(idx(i)); + m_curFlags[i] = (uint8_t)(src(i)->Flags(idx(i)) | (i >= nG ? DrawIdRecord::kFFwd : 0)); + m_curGroup[i] = kNone; m_curRank[i] = 0; m_curLooseG[i] = 0; m_curBig[i] = 0; + if (m_curFlags[i] & kNoPair) continue; + ++elig; + m_ent[ne++] = { m_curFull[i], i }; + } + for (uint32_t j = 0; j < m; ++j) { + m_prevGroup[j] = kNone; m_prevRank[j] = 0; + if (m_prevFlags[j] & kNoPair) continue; + m_ent[ne++] = { m_prevFull[j], 0x80000000u | j }; + } + const uint64_t scanTicks = (uint64_t)(Qpc() - t0); + m_stats.prepScanTicks += scanTicks; + m_prepRec = rec; m_prepFwd = fwd; + m_prepReqW = fullW; m_prepReqH = fullH; + m_prepNearM = nearM; m_prepFreshMedoid = freshMedoid; m_prepNoMedoid = noMedoid; + m_prepIdsBoundReq = idsBound; + m_prepCpuBaseTicks = scanTicks; + m_prepFullTicksLast = 0; m_prepLooseTicksLast = 0; m_prepBigGroupLast = 0; + m_prepN = n; m_prepNG = nG; m_prepNF = nF; m_prepElig = elig; m_prepHist = m != 0; + m_prepPending = true; + if (PrepEnsureThread()) { + std::lock_guard lock(m_prepMutex); + m_prepWorkN = ne; + m_prepJobReady = true; + m_prepKickCv.notify_one(); + } else { + PrepWorker(ne); + } + return true; +} + +uint32_t DrawIdMv::PrepareEnd(ID3D11DeviceContext* ctx) { + if (!m_prepPending || !ctx || !m_ready) return 0; + const int64_t t0 = Qpc(); + const int64_t tWait = Qpc(); + PrepWait(); + m_stats.prepWaitTicks += (uint64_t)(Qpc() - tWait); + m_prepPending = false; + m_stats.prepFullTicks += m_prepFullTicksLast; + m_stats.prepLooseTicks += m_prepLooseTicksLast; + m_stats.bigGroup += m_prepBigGroupLast; + const DrawIdRecord* rec = m_prepRec; + const DrawIdRecord* fwd = m_prepFwd; + const uint32_t fullW = m_prepReqW, fullH = m_prepReqH; + const float nearM = m_prepNearM; + const bool freshMedoid = m_prepFreshMedoid; + const uint32_t noMedoid = m_prepNoMedoid; + const bool idsBound = m_prepIdsBoundReq; + const uint32_t n = m_prepN, nG = m_prepNG, nF = m_prepNF, m = m_prevN, elig = m_prepElig; + const uint8_t kNoPair = DrawIdRecord::kFInstanced | DrawIdRecord::kFNoMvp; + auto src = [&](uint32_t i) -> const DrawIdRecord* { return i < nG ? rec : fwd; }; + auto idx = [&](uint32_t i) -> int { return i < nG ? (int)i : (int)(i - nG); }; + if (!rec || !rec->Usable()) { m_prevN = 0; return 0; } + if (!m_prepVs) { + m_prepVs = new (std::nothrow) const void*[kMax]; + m_prepHint = new (std::nothrow) uint8_t[kMax]; + m_rbVs = new (std::nothrow) const void*[(size_t)kRb * kMax]; + m_rbHint = new (std::nothrow) uint8_t[(size_t)kRb * kMax]; + if (!m_prepVs || !m_prepHint || !m_rbVs || !m_rbHint) { + delete[] m_prepVs; delete[] m_prepHint; delete[] m_rbVs; delete[] m_rbHint; + m_prepVs = nullptr; m_prepHint = nullptr; m_rbVs = nullptr; m_rbHint = nullptr; + } + } + const bool layOn = !LayoutOff() && m_prepVs; + const int64_t tUpload = Qpc(); + D3D11_MAPPED_SUBRESOURCE mp{}; + if (FAILED(ctx->Map(m_tab.Get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &mp))) { m_prevN = 0; return 0; } + { + uint32_t* t = (uint32_t*)mp.pData; + uint64_t looseN = 0, noGroup = 0; + const void* lastVs = nullptr; + uint32_t lastHint = 0; + for (uint32_t i = 0; i < n; ++i) { + const uint8_t fl = m_curFlags[i]; + uint32_t f = 0; + if (fl & DrawIdRecord::kFInstanced) f |= 1u; + if (fl & DrawIdRecord::kFNoMvp) f |= 2u; + if (fl & DrawIdRecord::kFCabin) f |= 4u; + if (m_curLooseG[i]) { f |= 256u; ++looseN; } + if (fl & DrawIdRecord::kFFwd) f |= 512u; + if (layOn) { + const void* vs = (fl & kNoPair) ? nullptr : src(i)->Vs(idx(i)); + if (vs != lastVs) { + const VsLay* le = VsLayFind(vs, false); + lastHint = (le && le->row >= 4u && le->row <= 8u) ? le->row : 0u; + lastVs = vs; + } + const uint32_t hint = vs ? lastHint : 0u; + const UINT rows = src(i)->MirrorRows(idx(i)); + f |= ((rows < 15u ? rows : 15u) << 16) | (hint << 20); + m_prepVs[i] = vs; m_prepHint[i] = (uint8_t)hint; + } + if (!(fl & kNoPair) && m_curGroup[i] == kNone) ++noGroup; + const float vmin = src(i)->VpMin(idx(i)), vmax = src(i)->VpMax(idx(i)); + t[i * 8 + 0] = src(i)->MirrorOff(idx(i)); + t[i * 8 + 1] = m_curGroup[i]; + t[i * 8 + 2] = f; + t[i * 8 + 3] = m_curRank[i]; + memcpy(&t[i * 8 + 4], &vmin, 4); + memcpy(&t[i * 8 + 5], &vmax, 4); + t[i * 8 + 6] = (src(i)->IndexCount(idx(i)) & 0xFFFFFFu) | ((src(i)->InstanceCount(idx(i)) < 255u ? src(i)->InstanceCount(idx(i)) : 255u) << 24); + t[i * 8 + 7] = src(i)->VpJitterPacked(idx(i)); + } + m_stats.looseDraws += looseN; + m_stats.noGroup += m != 0 ? noGroup : 0; + } + ctx->Unmap(m_tab.Get(), 0); + if (m) { + if (FAILED(ctx->Map(m_ptab.Get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &mp))) { m_prevN = 0; return 0; } + uint32_t* t = (uint32_t*)mp.pData; + for (uint32_t j = 0; j < m; ++j) { t[j * 4 + 0] = m_prevGroup[j]; t[j * 4 + 1] = m_prevFlags[j]; t[j * 4 + 2] = m_prevRank[j]; t[j * 4 + 3] = 0; } + ctx->Unmap(m_ptab.Get(), 0); + } + if (m_nGroups) { + if (FAILED(ctx->Map(m_groups.Get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &mp))) { m_prevN = 0; return 0; } + memcpy(mp.pData, m_groupData, (size_t)m_nGroups * 16u); + ctx->Unmap(m_groups.Get(), 0); + if (FAILED(ctx->Map(m_lists.Get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &mp))) { m_prevN = 0; return 0; } + memcpy(mp.pData, m_listData, (size_t)m_nList * 4u); + ctx->Unmap(m_lists.Get(), 0); + } + uint32_t cand[kCandWorld + kCandCabin] = {}; + uint32_t candW = 0, candC = 0; + if (m && m_nGroups) { + uint32_t* tmp = m_candTmp; + for (int L = 0; L < 2; ++L) { + uint32_t ne2 = 0; + for (uint32_t i = 0; i < nG; ++i) { + const uint8_t fl = m_curFlags[i]; + if ((fl & kNoPair) || m_curGroup[i] == kNone) continue; + if (((fl & DrawIdRecord::kFCabin) != 0) != (L == 1)) continue; + tmp[ne2++] = i; + } + const uint32_t capC = g_consCands / 2u < (uint32_t)kCandCabin ? g_consCands / 2u : (uint32_t)kCandCabin; + const uint32_t cap = L == 0 ? g_consCands : capC; + const uint32_t take = ne2 < cap ? ne2 : cap; + for (uint32_t j = 0; j < take; ++j) cand[(L == 0 ? 0 : candW) + j] = tmp[(uint32_t)(((uint64_t)j * ne2) / take)]; + if (L == 0) candW = take; else candC = take; + } + } + if (FAILED(ctx->Map(m_cb.Get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &mp))) { m_prevN = 0; return 0; } + { + const uint32_t counts[4] = { n, m, m_nGroups, nG }; + const float params[4] = { g_maxM, g_snapPx, (float)fullW, (float)fullH }; + const float params2[4] = { g_trackM, g_snapPx > 0.05f ? g_snapPx : 0.05f, nearM, g_attachM }; + const uint32_t cons[4] = { candW, candC, (uint32_t)kConsMin, + (g_consensus ? 1u : 0u) | (freshMedoid ? 2u : 0u) | (g_twin ? 4u : 0u) | ((noMedoid & 3u) << 3) }; + memcpy(mp.pData, counts, sizeof(counts)); + memcpy((uint8_t*)mp.pData + 16, params, sizeof(params)); + memcpy((uint8_t*)mp.pData + 32, params2, sizeof(params2)); + memcpy((uint8_t*)mp.pData + 48, cons, sizeof(cons)); + memcpy((uint8_t*)mp.pData + 64, cand, sizeof(cand)); + const float par[4] = { (g_parentMut & 2) ? 1e30f : kParDepthTol, kParMinVotes, kParMinShare, kParVoteCap }; + const uint32_t parU[4] = { (g_parent ? 1u : 0u) | ((g_parentMut & 1) ? 2u : 0u) | (g_instancedVote ? 4u : 0u) | + (g_voteRes > kParStride ? 8u : 0u) | (rec->StaticSkipped() > 0 ? 16u : 0u), + g_voteRes, g_parReach ? g_parReach : kParReachPx, kParMarchBudget }; + memcpy((uint8_t*)mp.pData + 64 + sizeof(cand), par, sizeof(par)); + memcpy((uint8_t*)mp.pData + 64 + sizeof(cand) + 16, parU, sizeof(parU)); + const float par2[4] = { (g_parentMut & 2) ? 1e30f : kParEdgeTol, kParFineSamples, + g_marchCap ? (float)g_marchCap * (5.0f / 6.0f) : 0.0f, + g_marchCap ? (float)g_marchCap * (1.0f / 6.0f) : 0.0f }; + memcpy((uint8_t*)mp.pData + 64 + sizeof(cand) + 32, par2, sizeof(par2)); + uint32_t clip[4] = { 0u, 0u, fullW, fullH }; + if (rec->Clipped()) { + const D3D11_RECT r = rec->ClipRect(); + const uint32_t x0 = r.left > 0 ? (uint32_t)r.left : 0u, y0 = r.top > 0 ? (uint32_t)r.top : 0u; + const uint32_t x1 = r.right > 0 ? (uint32_t)r.right : 0u, y1 = r.bottom > 0 ? (uint32_t)r.bottom : 0u; + clip[0] = (x0 < fullW ? x0 : fullW) & ~3u; clip[1] = (y0 < fullH ? y0 : fullH) & ~3u; + clip[2] = x1 < fullW ? x1 : fullW; clip[3] = y1 < fullH ? y1 : fullH; + if (clip[2] < clip[0]) clip[2] = clip[0]; + if (clip[3] < clip[1]) clip[3] = clip[1]; + } + const uint32_t fwdMode[4] = { (nF && fwd) ? fwd->Shift() : 0u, g_consMinCabin, g_cabinSmall, 0u }; + const bool pickOn = m && m_nGroups && (candW + candC) && g_consensus; + const bool twinOn = g_twin && m, attachOn = g_attachM > 0.0f && m; + const bool parentOn = g_parent && m && idsBound && fullW && fullH; + ID3D11Device* devC = nullptr; + if (parentOn && g_voteCompact && m_csParCollect && m_csParMarch && !m_parListUav && !m_parListFailed) ctx->GetDevice(&devC); + if (devC) { EnsureParList(devC); devC->Release(); } + const bool compact = parentOn && g_voteCompact && m_parListUav && m_marchArgsUav; + const uint32_t fold = (pickOn ? 1u : 0u) | ((twinOn || attachOn) ? 2u : 0u) | (parentOn ? 4u : 0u) | (twinOn ? 8u : 0u) | + (attachOn ? 16u : 0u) | (compact ? 32u : 0u); + m_prepCompact = compact; + const uint32_t S = g_voteRes, cw = clip[2] - clip[0], chh = clip[3] - clip[1]; + m_prepGrid = ((cw + S - 1u) / S + 7u) / 8u * (((chh + S - 1u) / S + 7u) / 8u); + uint32_t epsBits = 0; + memcpy(&epsBits, &g_statEps, 4); + const uint32_t holdBits = ((parentOn && m_uhold[0] && m_uholdValid[1 - m_ping]) ? 1u : 0u) | + ((g_parentMut & 4) ? 2u : 0u) | ((g_parentMut & 8) ? 4u : 0u) | ((g_parentMut & 16) ? 8u : 0u) | + ((g_parentMut & 32) ? 16u : 0u) | ((g_parentMut & 64) ? 32u : 0u); + const uint32_t foldU[4] = { fold, g_parMaxListed, epsBits, holdBits }; + memcpy((uint8_t*)mp.pData + 64 + sizeof(cand) + 48, clip, sizeof(clip)); + memcpy((uint8_t*)mp.pData + 64 + sizeof(cand) + 64, fwdMode, sizeof(fwdMode)); + memcpy((uint8_t*)mp.pData + 64 + sizeof(cand) + 80, foldU, sizeof(foldU)); + memcpy(m_prepClip, clip, sizeof(clip)); + m_prepFold = fold; + m_prepIds = idsBound; + } + ctx->Unmap(m_cb.Get(), 0); + m_stats.prepUploadTicks += (uint64_t)(Qpc() - tUpload); + m_prepW = fullW; m_prepH = fullH; + if (m_dumpArm && !m_dumpPending && m_dump) { + m_dumpArm = false; m_dumpPrep = true; m_dumpN = 0; m_dumpSkipped = 0; + m_dumpNG = nG; m_dumpNAll = n; m_dumpM = m; m_dumpW = fullW; m_dumpH = fullH; m_dumpHist = m != 0; + for (uint32_t i = 0; i < n; ++i) { + const DrawIdRecord* r = src(i); + const int k = idx(i); + const UINT ic = r->IndexCount(k); + if (m_dumpN >= (uint32_t)kMax) { ++m_dumpSkipped; continue; } + DumpEnt& d = m_dump[m_dumpN++]; + d.big = m_curBig[i]; d.i = i; d.ic = ic; r->CbWindow(k, &d.cbFirst, &d.cbNum); + d.mirrorOff = r->MirrorOff(k); d.group = m_curGroup[i]; + d.gCur = d.group != kNone ? m_groupData[d.group * 4u + 1u] : 0u; + d.gPrev = d.group != kNone ? m_groupData[d.group * 4u + 3u] : 0u; + d.full = m_curFull[i]; d.loose = m_curLoose[i]; + d.flags = (uint8_t)(m_curFlags[i] | (m_curLooseG[i] ? 0x80 : 0)); + d.ps = r->Ps(k); d.psInfo = DrawIdRecord::PsInfo(d.ps); + d.vpMin = r->VpMin(k); d.vpMax = r->VpMax(k); d.inst = r->InstanceCount(k); + d.vs = r->Vs(k); d.rows = (uint8_t)r->MirrorRows(k); d.hint = layOn ? m_prepHint[i] : 0u; + } + } + m_prepLay = layOn; + m_prepCandW = candW; m_prepCandC = candC; m_prepElig = elig; m_prepHist = m != 0; + if (noMedoid & 1u) ++m_stats.noMedoidFrames[0]; + if (noMedoid & 2u) ++m_stats.noMedoidFrames[1]; + ++m_stats.frames; + m_stats.draws += n; + m_stats.fwdDraws += nF; + m_stats.instanced += (uint64_t)rec->Instanced(); + m_stats.noMvp += (uint64_t)rec->NoMvp(); + if (m) ++m_stats.histFrames; + m_stats.cpuTicks += m_prepCpuBaseTicks + (uint64_t)(Qpc() - t0); + return n; +} + uint32_t DrawIdMv::Prepare(ID3D11DeviceContext* ctx, const DrawIdRecord* rec, uint32_t fullW, uint32_t fullH, const DrawIdRecord* fwd, float nearM, bool freshMedoid, uint32_t noMedoid, bool idsBound) { m_prepN = 0; m_prepNG = 0; m_prepNF = 0; diff --git a/src/draw_ids.h b/src/draw_ids.h index 9f18e5e..dfab003 100644 --- a/src/draw_ids.h +++ b/src/draw_ids.h @@ -102,7 +102,10 @@ #include #include +#include #include +#include +#include // Non-blocking GPU timestamp span (same pattern as SceneDlaa's SnapTimer): Begin / End around GPU work, polled with // DONOTFLUSH; Take() returns the window average since the last Take. @@ -482,6 +485,10 @@ class DrawIdMv { // ConsHealthy): pass A wrote nothing for it, so a consensus found here also writes that layer's info rows (world: R_ego = // the camera R, InvRow3 from the winning draw); no consensus = the solve buffer keeps the last frame's R of that layer. // v0.10.0 phase 9: `idsBound` = Dispatch will get the pass's draw-id target (the rigid-parent bit of the folded dispatch) + bool PrepareBegin(ID3D11DeviceContext* ctx, const DrawIdRecord* rec, uint32_t fullW, uint32_t fullH, + const DrawIdRecord* fwd = nullptr, float nearM = 30.0f, bool freshMedoid = true, + uint32_t noMedoid = 0, bool idsBound = true); + uint32_t PrepareEnd(ID3D11DeviceContext* ctx); uint32_t Prepare(ID3D11DeviceContext* ctx, const DrawIdRecord* rec, uint32_t fullW, uint32_t fullH, const DrawIdRecord* fwd = nullptr, float nearM = 30.0f, bool freshMedoid = true, uint32_t noMedoid = 0, bool idsBound = true); @@ -537,7 +544,7 @@ class DrawIdMv { static void VsLayoutClear(); // device change (VS pointers are not stable across devices) // after pass B: commits the prepared pass as this eye's previous one, queues the diagnostics readback void Finish(ID3D11DeviceContext* ctx); - void Forget() { m_prevN = 0; m_prepN = 0; m_consRun[0] = m_consRun[1] = 0; // no history (the next pass pairs nothing; + void Forget() { PrepWait(); m_prevN = 0; m_prepN = 0; m_consRun[0] = m_consRun[1] = 0; // no history (the next pass pairs nothing; m_uholdValid[0] = m_uholdValid[1] = false; // v0.10.0 phase 8: the consensus health restarts too; if (!m_quiet) StaticClear(kStatClrHistory); } // phase 14: a main unit's lost history also forgets every // static streak; round 4: and the plate-hold table) @@ -583,7 +590,13 @@ class DrawIdMv { uint64_t trackRejects = 0; // mover verdicts of ambiguous groups without a consistent track uint64_t worldPx = 0, idPx = 0, moverPx = 0, unpairedPx = 0; // pass B, 1-in-64 grid uint64_t lowPairFrames = 0; // landed frames with history whose paired share was < 50 % - uint64_t cpuTicks = 0; // QPC ticks in Prepare + uint64_t cpuTicks = 0; // QPC ticks in Prepare visible on the render thread + uint64_t pollTicks = 0; // QPC ticks in Poll (all callers) + uint64_t prepScanTicks = 0; // QPC ticks in Prepare before the key sorts (record scan / setup) + uint64_t prepWaitTicks = 0; // QPC ticks spent waiting for the worker in PrepareEnd + uint64_t prepFullTicks = 0; // QPC ticks in Prepare full-key sort + grouping + uint64_t prepLooseTicks = 0; // QPC ticks in Prepare loose-key sort + regrouping + uint64_t prepUploadTicks = 0; // QPC ticks in Prepare upload maps / cbuffer fill // v0.10.0 phase 3: consensus camera R per layer (0 world, 1 cabin; read back with the diagnostics, frames that landed) uint64_t consFrames[2] = {}, consFallback[2] = {}, consCluster[2] = {}; uint64_t consFallCluster[2] = {}; // v0.10.0 phase 18: the largest agreeing cluster in the fallback frames (sum) @@ -679,6 +692,11 @@ class DrawIdMv { private: void Poll(ID3D11DeviceContext* ctx); + bool PrepEnsureThread(); + void PrepStopThread(); + void PrepWorkerLoop(); + void PrepWorker(uint32_t ne); + void PrepWait(); bool m_ready = false, m_failed = false; Microsoft::WRL::ComPtr m_csGather, m_csMatch, m_csResolve; Microsoft::WRL::ComPtr m_csPair, m_csVote, m_csPick; // v0.10.0 phase 3 (consensus camera R) @@ -745,6 +763,26 @@ class DrawIdMv { bool m_prepLay = false; // m_prepVs / m_prepHint hold the prepared pass (layout detection on) bool m_statReg = false; // registered for PollMain (the destructor unregisters) uint64_t m_rbCtr = 0; + const DrawIdRecord* m_prepRec = nullptr; + const DrawIdRecord* m_prepFwd = nullptr; + uint32_t m_prepReqW = 0, m_prepReqH = 0; + float m_prepNearM = 30.0f; + uint32_t m_prepNoMedoid = 0; + bool m_prepFreshMedoid = true; + bool m_prepPending = false; + bool m_prepIdsBoundReq = false; + bool m_prepThreadFailed = false; + bool m_prepJobReady = false; + bool m_prepJobRunning = false; + bool m_prepStop = false; + uint32_t m_prepWorkN = 0; + uint64_t m_prepCpuBaseTicks = 0; + uint64_t m_prepFullTicksLast = 0, m_prepLooseTicksLast = 0; + uint64_t m_prepBigGroupLast = 0; + std::thread m_prepThread; + std::mutex m_prepMutex; + std::condition_variable m_prepKickCv; + std::condition_variable m_prepDoneCv; // previous committed pass of this eye (CPU keys) uint32_t m_prevN = 0; uint64_t* m_prevFull = nullptr; diff --git a/src/inject.cpp b/src/inject.cpp index cbaaccd..28dd2e8 100644 --- a/src/inject.cpp +++ b/src/inject.cpp @@ -11497,6 +11497,12 @@ void DidStatsTag(char* buf, size_t cap, uint64_t passes) { const double frd = fr > 0 ? fr : 1.0; const double rb = s.rbFrames > s0.rbFrames ? (double)(s.rbFrames - s0.rbFrames) : 0.0; const double rbd = rb > 0 ? rb : 1.0; + const double pollCpu = (double)(s.pollTicks - s0.pollTicks) * 1000.0 / qf / frd; + const double prepScanCpu = (double)(s.prepScanTicks - s0.prepScanTicks) * 1000.0 / qf / frd; + const double prepWaitCpu = (double)(s.prepWaitTicks - s0.prepWaitTicks) * 1000.0 / qf / frd; + const double prepFullCpu = (double)(s.prepFullTicks - s0.prepFullTicks) * 1000.0 / qf / frd; + const double prepLooseCpu = (double)(s.prepLooseTicks - s0.prepLooseTicks) * 1000.0 / qf / frd; + const double prepUploadCpu = (double)(s.prepUploadTicks - s0.prepUploadTicks) * 1000.0 / qf / frd; const uint64_t stD[6] = { 0, s.st[1] - s0.st[1], s.st[2] - s0.st[2], s.st[3] - s0.st[3], s.st[4] - s0.st[4], s.st[5] - s0.st[5] }; const uint64_t elig = stD[1] + stD[2] + stD[3]; @@ -11508,7 +11514,7 @@ void DidStatsTag(char* buf, size_t cap, uint64_t passes) { "pairing (eye 0, %.0f frames, %.0f read back): paired %.1f %% of %.0f draws/frame (movers %.1f, static %.1f, " "unpaired %.1f, instanced %.1f, no-MVP %.1f), via the pointer-free key %.1f draws/frame (%.1f paired), no " "partner group %.1f/frame, oversized groups %.1f/frame, unconfirmed tracks %.1f/frame, frames < 50 %% paired %llu, " - "CPU %.3f ms/frame, GPU " + "CPU %.3f ms/frame (poll %.3f, scan %.3f, wait %.3f, full %.3f, loose %.3f, upload %.3f), GPU " "%.3f ms avg / %.3f max | pass B GPU %.3f ms avg / %.3f max | id coverage %.1f %% of world px (movers %.2f %%, " "unpaired %.2f %%)", g_didOn ? "ACTIVE" : "inactive", g_didHooked.load() ? "instanced hooked" : "instanced NOT hooked", @@ -11524,7 +11530,8 @@ void DidStatsTag(char* buf, size_t cap, uint64_t passes) { (double)(s.loosePaired - s0.loosePaired) / rbd, (double)(s.noGroup - s0.noGroup) / frd, (double)(s.bigGroup - s0.bigGroup) / frd, (double)(s.trackRejects - s0.trackRejects) / rbd, (unsigned long long)(s.lowPairFrames - s0.lowPairFrames), - (double)(s.cpuTicks - s0.cpuTicks) * 1000.0 / qf / frd, pAvg, pMax, bAvg, bMax, + (double)(s.cpuTicks - s0.cpuTicks) * 1000.0 / qf / frd, pollCpu, prepScanCpu, prepWaitCpu, prepFullCpu, prepLooseCpu, + prepUploadCpu, pAvg, pMax, bAvg, bMax, 100.0 * (double)(s.idPx - s0.idPx) / wpxd, 100.0 * (double)(s.moverPx - s0.moverPx) / wpxd, 100.0 * (double)(s.unpairedPx - s0.unpairedPx) / wpxd); // v0.10.0 phase 3: consensus camera R (eye 0) + forward-pass ids diff --git a/src/motion_vectors.cpp b/src/motion_vectors.cpp index 96a391b..f2e0f51 100644 --- a/src/motion_vectors.cpp +++ b/src/motion_vectors.cpp @@ -1533,10 +1533,11 @@ bool CameraMv::Generate(ID3D11DeviceContext* ctx, uint32_t w, uint32_t h, uint32 // v0.9.0 (sets m_objMask for WriteDims; 0 = off). R_world = the last good frame's camera motion, not this frame's: // r2: no "moving" verdicts from it (camOk false -- while the camera turns every static draw would deviate); the ids' // own R (MVP_prev * inverse(MVP_cur)) does not depend on it and is still computed. - ObjPrepare(ctx, objs, fullW, fullH, false); // v0.10.0: per-draw pairs need no camera solve of this frame (R = MVP_prev * inverse(MVP_cur)); the camera R only // predicts duplicates' partners and decides "static", so the last good one is fine here. - const uint32_t didPrep = DidPrepare(ctx, did, didIdSrv, fullW, fullH, didFwd, false); // no fresh medoid + const bool didPrepBegun = DidPrepareBegin(ctx, did, didIdSrv, fullW, fullH, didFwd, false); // no fresh medoid + ObjPrepare(ctx, objs, fullW, fullH, false); + const uint32_t didPrep = didPrepBegun ? DidPrepareEnd(ctx, didIdSrv) : 0; if (!WriteDims(ctx, w, h, x0, y0, fullW, fullH)) { // nothing dispatched: same contract as below ObjNoRun("Generate (reuse path): the dims cbuffer could not be mapped", objs); // v0.9.0 r8 if (candBad) m_prevStale = true; else Commit(ctx, cur); @@ -1730,11 +1731,14 @@ bool CameraMv::Generate(ID3D11DeviceContext* ctx, uint32_t w, uint32_t h, uint32 ctx->Unmap(m_cbPairs.Get(), 0); // v0.9.0 (sets m_objMask for WriteDims; 0 = off). r9: a world miss is a pairing failure for the objects too (mask // hold) + bool didPrepBegun = false; + if ((noMed & 1u) == 0u) + didPrepBegun = DidPrepareBegin(ctx, did, didIdSrv, fullW, fullH, didFwd, !fs.missHeld, noMed); ObjPrepare(ctx, objs, fullW, fullH, !fs.worldMiss, fs.worldMiss, missWhy); // v0.10.0 per-draw MVs: CPU grouping + uploads (sets m_didN for WriteDims); never a history reset for them // (phase 3: + the forward record; pass A writes a fresh medoid unless the world miss is held) const uint32_t didPrep = (noMed & 1u) ? didPrepEarly - : DidPrepare(ctx, did, didIdSrv, fullW, fullH, didFwd, !fs.missHeld, noMed); + : (didPrepBegun ? DidPrepareEnd(ctx, didIdSrv) : 0u); if (!WriteDims(ctx, w, h, x0, y0, fullW, fullH)) { ObjNoRun("Generate: the dims cbuffer could not be mapped", objs); // v0.9.0 r8 diagnostic m_didN = 0; @@ -1787,28 +1791,42 @@ bool CameraMv::Generate(ID3D11DeviceContext* ctx, uint32_t w, uint32_t h, uint32 // v0.10.0: the pass's draw record -> this eye's DrawIdMv (created lazily: a failure leaves per-draw MVs off, the camera // path is untouched). m_didN = the draw count when pass B can use the ids (the pass's draw-id target is complete); the // record still becomes the eye's history without it. Returns the prepared draw count (0 = no dispatch / no commit). -uint32_t CameraMv::DidPrepare(ID3D11DeviceContext* ctx, const DrawIdRecord* did, ID3D11ShaderResourceView* idSrv, - uint32_t fullW, uint32_t fullH, const DrawIdRecord* didFwd, bool freshMedoid, uint32_t noMedoid) { +bool CameraMv::DidPrepareBegin(ID3D11DeviceContext* ctx, const DrawIdRecord* did, ID3D11ShaderResourceView* idSrv, + uint32_t fullW, uint32_t fullH, const DrawIdRecord* didFwd, bool freshMedoid, + uint32_t noMedoid) { m_didN = 0; m_didNG = 0; m_didIdSrv = nullptr; m_didStaticGate = false; // v0.10.0 phase 14 - if (!did || !ctx) { m_did.Forget(); return 0; } + m_didPrepPending = false; + if (!did || !ctx) { m_did.Forget(); return false; } if (!m_did.Ready() && !m_did.Init(m_dev.Get())) { if (!m_didInitTried && ShaderCache::Done()) { m_didInitTried = true; Log("MV draw-ids: the pairing unit could not be created -- per-draw motion vectors off for this unit"); } m_did.Forget(); - return 0; + return false; } - // v0.10.0 phase 3: forward draws only with the ids (idSrv): without the target their pairing would be pointless - const uint32_t n = m_did.Prepare(ctx, did, fullW, fullH, idSrv ? didFwd : nullptr, m_nearReject, freshMedoid, noMedoid, - idSrv != nullptr); // v0.10.0 phase 9: the folded dispatch's rigid-parent bit - if (n && idSrv) { m_didN = n; m_didNG = m_did.PreparedG(); m_didIdSrv = idSrv; m_didStaticGate = did->StaticGated(); } + m_didPrepPending = m_did.PrepareBegin(ctx, did, fullW, fullH, idSrv ? didFwd : nullptr, m_nearReject, freshMedoid, + noMedoid, idSrv != nullptr); + return m_didPrepPending; +} + +uint32_t CameraMv::DidPrepareEnd(ID3D11DeviceContext* ctx, ID3D11ShaderResourceView* idSrv) { + if (!m_didPrepPending) return 0; + m_didPrepPending = false; + const uint32_t n = m_did.PrepareEnd(ctx); + if (n && idSrv) { m_didN = n; m_didNG = m_did.PreparedG(); m_didIdSrv = idSrv; m_didStaticGate = m_didN != 0; } return n; } +uint32_t CameraMv::DidPrepare(ID3D11DeviceContext* ctx, const DrawIdRecord* did, ID3D11ShaderResourceView* idSrv, + uint32_t fullW, uint32_t fullH, const DrawIdRecord* didFwd, bool freshMedoid, uint32_t noMedoid) { + if (!DidPrepareBegin(ctx, did, idSrv, fullW, fullH, didFwd, freshMedoid, noMedoid)) return 0; + return DidPrepareEnd(ctx, idSrv); +} + // =========================================================================================================== // v0.9.0 per-object motion vectors (see ObjRecord / ObjIds in motion_vectors.h and docs/DLAA_INTEGRATION.md) // =========================================================================================================== diff --git a/src/motion_vectors.h b/src/motion_vectors.h index 5574e3a..5ceeaa1 100644 --- a/src/motion_vectors.h +++ b/src/motion_vectors.h @@ -925,8 +925,13 @@ class CameraMv { // static gate (FwdMode.z: the Ctrl+F6 view's id-0 olive) uint32_t m_dimsX0 = 0, m_dimsY0 = 0, m_dimsW = 0, m_dimsH = 0; // v0.10.0 phase 21: pass B's crop (WriteDims; the probe) uint32_t m_probePacked = 0; // v0.10.0 phase 21: FwdMode.w of this pass B (0 = no probe) + bool m_didPrepPending = false; // DrawIdMv::PrepareBegin ran, DrawIdMv::PrepareEnd pending // prepares the record (CPU grouping + uploads); sets m_didN when pass B can use the ids. Returns the draws prepared. // v0.10.0 phase 3: + the forward record and whether pass A wrote this frame's medoid (the consensus statistic). + bool DidPrepareBegin(ID3D11DeviceContext* ctx, const DrawIdRecord* did, ID3D11ShaderResourceView* idSrv, + uint32_t fullW, uint32_t fullH, const DrawIdRecord* didFwd, bool freshMedoid, + uint32_t noMedoid = 0); + uint32_t DidPrepareEnd(ID3D11DeviceContext* ctx, ID3D11ShaderResourceView* idSrv); uint32_t DidPrepare(ID3D11DeviceContext* ctx, const DrawIdRecord* did, ID3D11ShaderResourceView* idSrv, uint32_t fullW, uint32_t fullH, const DrawIdRecord* didFwd, bool freshMedoid, uint32_t noMedoid = 0); }; From c5b98733d0f2a072ba6ff305feeb1673a744040e Mon Sep 17 00:00:00 2001 From: Breno Assis Date: Sat, 10 Oct 2026 21:14:57 -0400 Subject: [PATCH 2/3] Implement shadow state tracking and capture in DrawIdRecord for improved rendering accuracy --- src/draw_ids.cpp | 282 ++++++++++++++++++++++++++++++++++++++++++++--- src/draw_ids.h | 22 ++++ src/inject.cpp | 156 ++++++++++++++++++++++++++ 3 files changed, 442 insertions(+), 18 deletions(-) diff --git a/src/draw_ids.cpp b/src/draw_ids.cpp index 5021af4..4be77e2 100644 --- a/src/draw_ids.cpp +++ b/src/draw_ids.cpp @@ -2433,6 +2433,120 @@ struct DrawIdRecord::PsState { ID3D11SamplerState* smp[kPsSmp]; }; +enum : uint32_t { + kShadowIl = 1u << 0, + kShadowVb = 1u << 1, + kShadowIb = 1u << 2, + kShadowTopo = 1u << 3, + kShadowVs = 1u << 4, + kShadowCb = 1u << 5, + kShadowSrv = 1u << 6, + kShadowSmp = 1u << 7, + kShadowRs = 1u << 8, + kShadowVp = 1u << 9, + kShadowSc = 1u << 10, +}; + +struct DrawShadowState { + uint32_t bits = 0; + uint32_t vbMask = 0, cbMask = 0, srvMask = 0, smpMask = 0; + ID3D11InputLayout* il = nullptr; + ID3D11Buffer* vb[DrawIdRecord::kVb] = {}; UINT vbStride[DrawIdRecord::kVb] = {}, vbOff[DrawIdRecord::kVb] = {}; + ID3D11Buffer* ib = nullptr; DXGI_FORMAT ibFmt = DXGI_FORMAT_UNKNOWN; UINT ibOff = 0; + D3D11_PRIMITIVE_TOPOLOGY topo = D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED; + ID3D11VertexShader* vs = nullptr; + ID3D11Buffer* cb[DrawIdRecord::kVsCb] = {}; UINT cbFirst[DrawIdRecord::kVsCb] = {}, cbNum[DrawIdRecord::kVsCb] = {}; + ID3D11ShaderResourceView* srv[DrawIdRecord::kVsSrv] = {}; + ID3D11SamplerState* smp[DrawIdRecord::kVsSmp] = {}; + ID3D11RasterizerState* rs = nullptr; + UINT nVp = 0, nSc = 0; + D3D11_VIEWPORT vp[DrawIdRecord::kVp] = {}; + D3D11_RECT sc[DrawIdRecord::kSc] = {}; +}; + +DrawShadowState g_drawShadow; +constexpr uint32_t kShadowVbFull = (1u << DrawIdRecord::kVb) - 1u; +constexpr uint32_t kShadowCbFull = (1u << DrawIdRecord::kVsCb) - 1u; +constexpr uint32_t kShadowSrvFull = (1u << DrawIdRecord::kVsSrv) - 1u; +constexpr uint32_t kShadowSmpFull = (1u << DrawIdRecord::kVsSmp) - 1u; +DrawIdRecord::ShadowWindow g_shadowWin; +enum : int { kShIl = 0, kShVb, kShIb, kShTopo, kShVs, kShCb, kShSrv, kShSmp, kShRs, kShVp, kShSc }; + +template void AddRefShadow(T* p) { if (p) p->AddRef(); } + +uint32_t DrawIdRecord::ShadowCapture(State* out) { + uint32_t got = 0; + if (g_drawShadow.bits & kShadowIl) { + out->il = g_drawShadow.il; AddRefShadow(out->il); got |= kShadowIl; + } + if (g_drawShadow.vbMask == kShadowVbFull) { + memcpy(out->vb, g_drawShadow.vb, sizeof(out->vb)); + memcpy(out->vbStride, g_drawShadow.vbStride, sizeof(out->vbStride)); + memcpy(out->vbOff, g_drawShadow.vbOff, sizeof(out->vbOff)); + for (auto* p : out->vb) AddRefShadow(p); + got |= kShadowVb; + } + if (g_drawShadow.bits & kShadowIb) { + out->ib = g_drawShadow.ib; out->ibFmt = g_drawShadow.ibFmt; out->ibOff = g_drawShadow.ibOff; + AddRefShadow(out->ib); got |= kShadowIb; + } + if (g_drawShadow.bits & kShadowTopo) { out->topo = g_drawShadow.topo; got |= kShadowTopo; } + if (g_drawShadow.bits & kShadowVs) { + out->vs = g_drawShadow.vs; AddRefShadow(out->vs); got |= kShadowVs; + } + if (g_drawShadow.cbMask == kShadowCbFull) { + memcpy(out->cb, g_drawShadow.cb, sizeof(out->cb)); + memcpy(out->cbFirst, g_drawShadow.cbFirst, sizeof(out->cbFirst)); + memcpy(out->cbNum, g_drawShadow.cbNum, sizeof(out->cbNum)); + for (auto* p : out->cb) AddRefShadow(p); + got |= kShadowCb; + } + if (g_drawShadow.srvMask == kShadowSrvFull) { + memcpy(out->srv, g_drawShadow.srv, sizeof(out->srv)); + for (auto* p : out->srv) AddRefShadow(p); + got |= kShadowSrv; + } + if (g_drawShadow.smpMask == kShadowSmpFull) { + memcpy(out->smp, g_drawShadow.smp, sizeof(out->smp)); + for (auto* p : out->smp) AddRefShadow(p); + got |= kShadowSmp; + } + if (g_drawShadow.bits & kShadowRs) { + out->rs = g_drawShadow.rs; AddRefShadow(out->rs); got |= kShadowRs; + } + if (g_drawShadow.bits & kShadowVp) { + out->nVp = g_drawShadow.nVp; + memcpy(out->vp, g_drawShadow.vp, sizeof(out->vp)); + got |= kShadowVp; + } + if (g_drawShadow.bits & kShadowSc) { + out->nSc = g_drawShadow.nSc; + memcpy(out->sc, g_drawShadow.sc, sizeof(out->sc)); + got |= kShadowSc; + } + return got; +} + +void DrawIdRecord::ShadowSeed(const State& s) { + g_drawShadow.il = s.il; g_drawShadow.bits |= kShadowIl; + memcpy(g_drawShadow.vb, s.vb, sizeof(g_drawShadow.vb)); + memcpy(g_drawShadow.vbStride, s.vbStride, sizeof(g_drawShadow.vbStride)); + memcpy(g_drawShadow.vbOff, s.vbOff, sizeof(g_drawShadow.vbOff)); + g_drawShadow.vbMask = kShadowVbFull; + g_drawShadow.ib = s.ib; g_drawShadow.ibFmt = s.ibFmt; g_drawShadow.ibOff = s.ibOff; g_drawShadow.bits |= kShadowIb; + g_drawShadow.topo = s.topo; g_drawShadow.bits |= kShadowTopo; + g_drawShadow.vs = s.vs; g_drawShadow.bits |= kShadowVs; + memcpy(g_drawShadow.cb, s.cb, sizeof(g_drawShadow.cb)); + memcpy(g_drawShadow.cbFirst, s.cbFirst, sizeof(g_drawShadow.cbFirst)); + memcpy(g_drawShadow.cbNum, s.cbNum, sizeof(g_drawShadow.cbNum)); + g_drawShadow.cbMask = kShadowCbFull; + memcpy(g_drawShadow.srv, s.srv, sizeof(g_drawShadow.srv)); g_drawShadow.srvMask = kShadowSrvFull; + memcpy(g_drawShadow.smp, s.smp, sizeof(g_drawShadow.smp)); g_drawShadow.smpMask = kShadowSmpFull; + g_drawShadow.rs = s.rs; g_drawShadow.bits |= kShadowRs; + g_drawShadow.nVp = s.nVp; memcpy(g_drawShadow.vp, s.vp, sizeof(g_drawShadow.vp)); g_drawShadow.bits |= kShadowVp; + g_drawShadow.nSc = s.nSc; memcpy(g_drawShadow.sc, s.sc, sizeof(g_drawShadow.sc)); g_drawShadow.bits |= kShadowSc; +} + void DrawIdRecord::ReleasePs(int from, int to) { if (!m_ps) return; for (int i = from; i < to; ++i) { @@ -2495,6 +2609,115 @@ void DrawIdRecord::Reset() { m_srvNext = 0; } +DrawIdRecord::ShadowWindow DrawIdRecord::TakeShadowWindow() { + ShadowWindow out = g_shadowWin; + g_shadowWin = ShadowWindow{}; + return out; +} + +void DrawIdRecord::ShadowInvalidate() { + g_drawShadow = DrawShadowState{}; +} + +void DrawIdRecord::NoteInputLayout(ID3D11InputLayout* il) { + g_drawShadow.il = il; + g_drawShadow.bits |= kShadowIl; +} + +void DrawIdRecord::NoteVertexBuffers(UINT start, UINT num, ID3D11Buffer* const* vb, const UINT* stride, const UINT* off) { + if (!vb || !stride || !off || start >= (UINT)kVb) return; + if (num > (UINT)kVb - start) num = (UINT)kVb - start; + for (UINT i = 0; i < num; ++i) { + const UINT slot = start + i; + g_drawShadow.vb[slot] = vb[i]; + g_drawShadow.vbStride[slot] = stride[i]; + g_drawShadow.vbOff[slot] = off[i]; + g_drawShadow.vbMask |= 1u << slot; + } +} + +void DrawIdRecord::NoteIndexBuffer(ID3D11Buffer* ib, DXGI_FORMAT fmt, UINT off) { + g_drawShadow.ib = ib; g_drawShadow.ibFmt = fmt; g_drawShadow.ibOff = off; + g_drawShadow.bits |= kShadowIb; +} + +void DrawIdRecord::NotePrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY topo) { + g_drawShadow.topo = topo; + g_drawShadow.bits |= kShadowTopo; +} + +void DrawIdRecord::NoteVsShader(ID3D11VertexShader* vs) { + g_drawShadow.vs = vs; + g_drawShadow.bits |= kShadowVs; +} + +void DrawIdRecord::NoteVsConstantBuffers(UINT start, UINT num, ID3D11Buffer* const* cb) { + if (start >= (UINT)kVsCb) return; + if (num > (UINT)kVsCb - start) num = (UINT)kVsCb - start; + for (UINT i = 0; i < num; ++i) { + const UINT slot = start + i; + ID3D11Buffer* const buf = cb ? cb[i] : nullptr; + g_drawShadow.cb[slot] = buf; + g_drawShadow.cbFirst[slot] = 0u; + g_drawShadow.cbNum[slot] = buf ? 4096u : 0u; + g_drawShadow.cbMask |= 1u << slot; + } +} + +void DrawIdRecord::NoteVsConstantBuffers1(UINT start, UINT num, ID3D11Buffer* const* cb, const UINT* first, const UINT* count) { + if (start >= (UINT)kVsCb) return; + if (num > (UINT)kVsCb - start) num = (UINT)kVsCb - start; + for (UINT i = 0; i < num; ++i) { + const UINT slot = start + i; + ID3D11Buffer* const buf = cb ? cb[i] : nullptr; + g_drawShadow.cb[slot] = buf; + g_drawShadow.cbFirst[slot] = buf && first ? first[i] : 0u; + g_drawShadow.cbNum[slot] = buf ? (count ? count[i] : 4096u) : 0u; + g_drawShadow.cbMask |= 1u << slot; + } +} + +void DrawIdRecord::NoteVsShaderResources(UINT start, UINT num, ID3D11ShaderResourceView* const* srv) { + if (!srv || start >= (UINT)kVsSrv) return; + if (num > (UINT)kVsSrv - start) num = (UINT)kVsSrv - start; + for (UINT i = 0; i < num; ++i) { + const UINT slot = start + i; + g_drawShadow.srv[slot] = srv[i]; + g_drawShadow.srvMask |= 1u << slot; + } +} + +void DrawIdRecord::NoteVsSamplers(UINT start, UINT num, ID3D11SamplerState* const* smp) { + if (!smp || start >= (UINT)kVsSmp) return; + if (num > (UINT)kVsSmp - start) num = (UINT)kVsSmp - start; + for (UINT i = 0; i < num; ++i) { + const UINT slot = start + i; + g_drawShadow.smp[slot] = smp[i]; + g_drawShadow.smpMask |= 1u << slot; + } +} + +void DrawIdRecord::NoteRsState(ID3D11RasterizerState* rs) { + g_drawShadow.rs = rs; + g_drawShadow.bits |= kShadowRs; +} + +void DrawIdRecord::NoteViewports(UINT n, const D3D11_VIEWPORT* vp) { + if (n > (UINT)kVp) n = (UINT)kVp; + g_drawShadow.nVp = n; + if (n) memcpy(g_drawShadow.vp, vp, sizeof(D3D11_VIEWPORT) * n); + if (n < (UINT)kVp) memset(g_drawShadow.vp + n, 0, sizeof(D3D11_VIEWPORT) * ((UINT)kVp - n)); + g_drawShadow.bits |= kShadowVp; +} + +void DrawIdRecord::NoteScissorRects(UINT n, const D3D11_RECT* sc) { + if (n > (UINT)kSc) n = (UINT)kSc; + g_drawShadow.nSc = n; + if (n) memcpy(g_drawShadow.sc, sc, sizeof(D3D11_RECT) * n); + if (n < (UINT)kSc) memset(g_drawShadow.sc + n, 0, sizeof(D3D11_RECT) * ((UINT)kSc - n)); + g_drawShadow.bits |= kShadowSc; +} + void DrawIdRecord::Shutdown() { Reset(); m_mirrorSrv.Reset(); m_mirror.Reset(); m_mirrorBytes = 0; @@ -2637,29 +2860,52 @@ bool DrawIdRecord::Record(ID3D11DeviceContext1* ctx, UINT ic, UINT inst, UINT si memset(m_st, 0, sizeof(State) * kMax); } State& s = m_st[m_n]; - ctx->IAGetInputLayout(&s.il); - ctx->IAGetVertexBuffers(0, kVb, s.vb, s.vbStride, s.vbOff); - ctx->IAGetIndexBuffer(&s.ib, &s.ibFmt, &s.ibOff); - ctx->IAGetPrimitiveTopology(&s.topo); - ctx->VSGetShader(&s.vs, nullptr, nullptr); - ctx->VSGetConstantBuffers1(0, kVsCb, s.cb, s.cbFirst, s.cbNum); - ctx->VSGetShaderResources(0, kVsSrv, s.srv); - ctx->VSGetSamplers(0, kVsSmp, s.smp); - ctx->RSGetState(&s.rs); - { + memset(&s, 0, sizeof(s)); + const uint32_t shadow = ShadowCapture(&s); + ++g_shadowWin.calls; + auto markShadow = [&](int field, bool hit) { + if (hit) ++g_shadowWin.shadow[field]; + else ++g_shadowWin.fallback[field]; + }; + markShadow(kShIl, (shadow & kShadowIl) != 0); + markShadow(kShVb, (shadow & kShadowVb) != 0); + markShadow(kShIb, (shadow & kShadowIb) != 0); + markShadow(kShTopo, (shadow & kShadowTopo) != 0); + markShadow(kShVs, (shadow & kShadowVs) != 0); + markShadow(kShCb, (shadow & kShadowCb) != 0); + markShadow(kShSrv, (shadow & kShadowSrv) != 0); + markShadow(kShSmp, (shadow & kShadowSmp) != 0); + markShadow(kShRs, (shadow & kShadowRs) != 0); + markShadow(kShVp, (shadow & kShadowVp) != 0); + markShadow(kShSc, (shadow & kShadowSc) != 0); + if (!(shadow & kShadowIl)) ctx->IAGetInputLayout(&s.il); + if (!(shadow & kShadowVb)) ctx->IAGetVertexBuffers(0, kVb, s.vb, s.vbStride, s.vbOff); + if (!(shadow & kShadowIb)) ctx->IAGetIndexBuffer(&s.ib, &s.ibFmt, &s.ibOff); + if (!(shadow & kShadowTopo)) ctx->IAGetPrimitiveTopology(&s.topo); + if (!(shadow & kShadowVs)) ctx->VSGetShader(&s.vs, nullptr, nullptr); + if (!(shadow & kShadowCb)) ctx->VSGetConstantBuffers1(0, kVsCb, s.cb, s.cbFirst, s.cbNum); + if (!(shadow & kShadowSrv)) ctx->VSGetShaderResources(0, kVsSrv, s.srv); + if (!(shadow & kShadowSmp)) ctx->VSGetSamplers(0, kVsSmp, s.smp); + if (!(shadow & kShadowRs)) ctx->RSGetState(&s.rs); + if (!(shadow & kShadowVp) || !(shadow & kShadowSc)) { D3D11_VIEWPORT vps[D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE]; UINT nv = D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE; - ctx->RSGetViewports(&nv, vps); - if (nv > (UINT)kVp) nv = kVp; - s.nVp = nv; - memcpy(s.vp, vps, sizeof(D3D11_VIEWPORT) * nv); + if (!(shadow & kShadowVp)) { + ctx->RSGetViewports(&nv, vps); + if (nv > (UINT)kVp) nv = kVp; + s.nVp = nv; + memcpy(s.vp, vps, sizeof(D3D11_VIEWPORT) * nv); + } D3D11_RECT scs[D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE]; UINT ns = D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE; - ctx->RSGetScissorRects(&ns, scs); - if (ns > (UINT)kSc) ns = kSc; - s.nSc = ns; - memcpy(s.sc, scs, sizeof(D3D11_RECT) * ns); + if (!(shadow & kShadowSc)) { + ctx->RSGetScissorRects(&ns, scs); + if (ns > (UINT)kSc) ns = kSc; + s.nSc = ns; + memcpy(s.sc, scs, sizeof(D3D11_RECT) * ns); + } } + ShadowSeed(s); s.ic = ic; s.inst = inst; s.si = si; s.sinst = sinst; s.bv = bv; s.instanced = instanced; // v0.10.0 phase 10: the pixel-shader state of a forward draw (the batched forward-depth re-draw needs the game's alpha) if (m_capPs && !m_ps && m_n == 0) { diff --git a/src/draw_ids.h b/src/draw_ids.h index dfab003..15356fb 100644 --- a/src/draw_ids.h +++ b/src/draw_ids.h @@ -292,9 +292,29 @@ class DrawIdRecord { const void* Ps(int i) const; enum : uint8_t { kPsScanned = 1, kPsDiscard = 2, kPsDepth = 4 }; typedef uint8_t (*PsInfoFn)(const void* ps); + enum : int { kShadowFieldCount = 11 }; + struct ShadowWindow { + uint64_t calls = 0; + uint64_t shadow[kShadowFieldCount] = {}; + uint64_t fallback[kShadowFieldCount] = {}; + }; static void NoteGamePs(const void* ps) { s_gamePs = ps; } static void SetPsInfoFn(PsInfoFn fn) { s_psInfo = fn; } static uint8_t PsInfo(const void* ps) { return s_psInfo ? s_psInfo(ps) : 0; } + static ShadowWindow TakeShadowWindow(); + static void ShadowInvalidate(); + static void NoteInputLayout(ID3D11InputLayout* il); + static void NoteVertexBuffers(UINT start, UINT num, ID3D11Buffer* const* vb, const UINT* stride, const UINT* off); + static void NoteIndexBuffer(ID3D11Buffer* ib, DXGI_FORMAT fmt, UINT off); + static void NotePrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY topo); + static void NoteVsShader(ID3D11VertexShader* vs); + static void NoteVsConstantBuffers(UINT start, UINT num, ID3D11Buffer* const* cb); + static void NoteVsConstantBuffers1(UINT start, UINT num, ID3D11Buffer* const* cb, const UINT* first, const UINT* count); + static void NoteVsShaderResources(UINT start, UINT num, ID3D11ShaderResourceView* const* srv); + static void NoteVsSamplers(UINT start, UINT num, ID3D11SamplerState* const* smp); + static void NoteRsState(ID3D11RasterizerState* rs); + static void NoteViewports(UINT n, const D3D11_VIEWPORT* vp); + static void NoteScissorRects(UINT n, const D3D11_RECT* sc); ID3D11ShaderResourceView* MirrorSrv() const { return m_mirrorSrv.Get(); } bool Usable() const { return m_n > 0 && !m_flushFail && !FlushPending() && m_mirrorSrv; } int Instanced() const { return m_nInst; } @@ -337,6 +357,8 @@ class DrawIdRecord { // v0.10.0 phase 22: copies cb0 rows 0 .. min(want, the ring's end) / 16 - 1 of the window at rowBase (row 4..7 must exist); // returns the mirror byte offset of row 4 (or 0xFFFFFFFF) and *rows = the rows mirrored from row 0 UINT AddRing(ID3D11Buffer* cb, UINT rowBase, UINT wantBytes, UINT* rows); + uint32_t ShadowCapture(State* out); + void ShadowSeed(const State& s); bool FlushRing(ID3D11DeviceContext* ctx, int k); bool EnsureMirror(ID3D11DeviceContext* ctx, UINT need); void ReleaseRange(int from, int to); diff --git a/src/inject.cpp b/src/inject.cpp index 28dd2e8..0229d2e 100644 --- a/src/inject.cpp +++ b/src/inject.cpp @@ -1485,9 +1485,31 @@ HRESULT STDMETHODCALLTYPE hkPresent(IDXGISwapChain* sc, UINT sync, UINT flags) { // ---- scene detection + DLAA ------------------------------------------------ typedef void (STDMETHODCALLTYPE* RSSetViewports_t)(ID3D11DeviceContext*, UINT, const D3D11_VIEWPORT*); +typedef void (STDMETHODCALLTYPE* IASetInputLayout_t)(ID3D11DeviceContext*, ID3D11InputLayout*); +typedef void (STDMETHODCALLTYPE* IASetVertexBuffers_t)(ID3D11DeviceContext*, UINT, UINT, ID3D11Buffer* const*, const UINT*, const UINT*); +typedef void (STDMETHODCALLTYPE* IASetIndexBuffer_t)(ID3D11DeviceContext*, ID3D11Buffer*, DXGI_FORMAT, UINT); +typedef void (STDMETHODCALLTYPE* IASetPrimitiveTopology_t)(ID3D11DeviceContext*, D3D11_PRIMITIVE_TOPOLOGY); +typedef void (STDMETHODCALLTYPE* VSSetConstantBuffers_t)(ID3D11DeviceContext*, UINT, UINT, ID3D11Buffer* const*); +typedef void (STDMETHODCALLTYPE* VSSetConstantBuffers1_t)(ID3D11DeviceContext1*, UINT, UINT, ID3D11Buffer* const*, const UINT*, const UINT*); +typedef void (STDMETHODCALLTYPE* VSSetShader_t)(ID3D11DeviceContext*, ID3D11VertexShader*, ID3D11ClassInstance* const*, UINT); +typedef void (STDMETHODCALLTYPE* VSSetShaderResources_t)(ID3D11DeviceContext*, UINT, UINT, ID3D11ShaderResourceView* const*); +typedef void (STDMETHODCALLTYPE* VSSetSamplers_t)(ID3D11DeviceContext*, UINT, UINT, ID3D11SamplerState* const*); +typedef void (STDMETHODCALLTYPE* RSSetState_t)(ID3D11DeviceContext*, ID3D11RasterizerState*); +typedef void (STDMETHODCALLTYPE* RSSetScissorRects_t)(ID3D11DeviceContext*, UINT, const D3D11_RECT*); typedef void (STDMETHODCALLTYPE* Draw_t)(ID3D11DeviceContext*, UINT, UINT); typedef void (STDMETHODCALLTYPE* OMSetRenderTargets_t)(ID3D11DeviceContext*, UINT, ID3D11RenderTargetView* const*, ID3D11DepthStencilView*); +IASetInputLayout_t oIASetInputLayout = nullptr; +IASetVertexBuffers_t oIASetVertexBuffers = nullptr; +IASetIndexBuffer_t oIASetIndexBuffer = nullptr; +IASetPrimitiveTopology_t oIASetPrimitiveTopology = nullptr; +VSSetConstantBuffers_t oVSSetConstantBuffers = nullptr; +VSSetConstantBuffers1_t oVSSetConstantBuffers1 = nullptr; +VSSetShader_t oVSSetShader = nullptr; +VSSetShaderResources_t oVSSetShaderResources = nullptr; +VSSetSamplers_t oVSSetSamplers = nullptr; +RSSetState_t oRSSetState = nullptr; +RSSetScissorRects_t oRSSetScissorRects = nullptr; Draw_t oDraw = nullptr; OMSetRenderTargets_t oOMSetRenderTargets = nullptr; RSSetViewports_t oRSSetViewports = nullptr; @@ -6862,12 +6884,99 @@ void ReconcileViewports(ID3D11DeviceContext* ctx, bool gameJustSet) { v[0].TopLeftY += sy; if (over) { v[0].Width += 1.0f; v[0].Height += 1.0f; } oRSSetViewports(ctx, g_gameVpN, v); +#ifdef WITH_DLAA + DrawIdRecord::NoteViewports(g_gameVpN, v); +#endif } else { oRSSetViewports(ctx, g_gameVpN, g_gameVp); +#ifdef WITH_DLAA + DrawIdRecord::NoteViewports(g_gameVpN, g_gameVp); +#endif } g_vpShifted = shift; g_vpShiftX = sx; g_vpShiftY = sy; g_vpOver = over; } +void STDMETHODCALLTYPE hkIASetInputLayout(ID3D11DeviceContext* ctx, ID3D11InputLayout* il) { +#ifdef WITH_DLAA + if (!t_inDlaa && IsGameCtx(ctx)) DrawIdRecord::NoteInputLayout(il); +#endif + oIASetInputLayout(ctx, il); +} + +void STDMETHODCALLTYPE hkIASetVertexBuffers(ID3D11DeviceContext* ctx, UINT start, UINT num, ID3D11Buffer* const* vb, + const UINT* stride, const UINT* off) { +#ifdef WITH_DLAA + if (!t_inDlaa && IsGameCtx(ctx)) DrawIdRecord::NoteVertexBuffers(start, num, vb, stride, off); +#endif + oIASetVertexBuffers(ctx, start, num, vb, stride, off); +} + +void STDMETHODCALLTYPE hkIASetIndexBuffer(ID3D11DeviceContext* ctx, ID3D11Buffer* ib, DXGI_FORMAT fmt, UINT off) { +#ifdef WITH_DLAA + if (!t_inDlaa && IsGameCtx(ctx)) DrawIdRecord::NoteIndexBuffer(ib, fmt, off); +#endif + oIASetIndexBuffer(ctx, ib, fmt, off); +} + +void STDMETHODCALLTYPE hkIASetPrimitiveTopology(ID3D11DeviceContext* ctx, D3D11_PRIMITIVE_TOPOLOGY topo) { +#ifdef WITH_DLAA + if (!t_inDlaa && IsGameCtx(ctx)) DrawIdRecord::NotePrimitiveTopology(topo); +#endif + oIASetPrimitiveTopology(ctx, topo); +} + +void STDMETHODCALLTYPE hkVSSetShader(ID3D11DeviceContext* ctx, ID3D11VertexShader* vs, + ID3D11ClassInstance* const* ci, UINT n) { +#ifdef WITH_DLAA + if (!t_inDlaa && IsGameCtx(ctx)) DrawIdRecord::NoteVsShader(vs); +#endif + oVSSetShader(ctx, vs, ci, n); +} + +void STDMETHODCALLTYPE hkVSSetConstantBuffers(ID3D11DeviceContext* ctx, UINT start, UINT num, ID3D11Buffer* const* cb) { +#ifdef WITH_DLAA + if (!t_inDlaa && IsGameCtx(ctx)) DrawIdRecord::NoteVsConstantBuffers(start, num, cb); +#endif + oVSSetConstantBuffers(ctx, start, num, cb); +} + +void STDMETHODCALLTYPE hkVSSetConstantBuffers1(ID3D11DeviceContext1* ctx, UINT start, UINT num, + ID3D11Buffer* const* cb, const UINT* first, const UINT* count) { +#ifdef WITH_DLAA + if (!t_inDlaa && IsGameCtx1(ctx)) DrawIdRecord::NoteVsConstantBuffers1(start, num, cb, first, count); +#endif + oVSSetConstantBuffers1(ctx, start, num, cb, first, count); +} + +void STDMETHODCALLTYPE hkVSSetShaderResources(ID3D11DeviceContext* ctx, UINT start, UINT num, + ID3D11ShaderResourceView* const* srv) { +#ifdef WITH_DLAA + if (!t_inDlaa && IsGameCtx(ctx)) DrawIdRecord::NoteVsShaderResources(start, num, srv); +#endif + oVSSetShaderResources(ctx, start, num, srv); +} + +void STDMETHODCALLTYPE hkVSSetSamplers(ID3D11DeviceContext* ctx, UINT start, UINT num, ID3D11SamplerState* const* smp) { +#ifdef WITH_DLAA + if (!t_inDlaa && IsGameCtx(ctx)) DrawIdRecord::NoteVsSamplers(start, num, smp); +#endif + oVSSetSamplers(ctx, start, num, smp); +} + +void STDMETHODCALLTYPE hkRSSetState(ID3D11DeviceContext* ctx, ID3D11RasterizerState* rs) { +#ifdef WITH_DLAA + if (!t_inDlaa && IsGameCtx(ctx)) DrawIdRecord::NoteRsState(rs); +#endif + oRSSetState(ctx, rs); +} + +void STDMETHODCALLTYPE hkRSSetScissorRects(ID3D11DeviceContext* ctx, UINT n, const D3D11_RECT* sc) { +#ifdef WITH_DLAA + if (!t_inDlaa && IsGameCtx(ctx) && sc) DrawIdRecord::NoteScissorRects(n, sc); +#endif + oRSSetScissorRects(ctx, n, sc); +} + void STDMETHODCALLTYPE hkRSSetViewports(ID3D11DeviceContext* ctx, UINT n, const D3D11_VIEWPORT* vps) { if (Ofxr::FromOfxr(_ReturnAddress())) { Ofxr::NotePassed(); oRSSetViewports(ctx, n, vps); return; } // v0.10.0 OFXR Bridge: the layer's own D3D11 work on the game context is not ours to track TraceVp(ctx, n, vps); @@ -11503,6 +11612,7 @@ void DidStatsTag(char* buf, size_t cap, uint64_t passes) { const double prepFullCpu = (double)(s.prepFullTicks - s0.prepFullTicks) * 1000.0 / qf / frd; const double prepLooseCpu = (double)(s.prepLooseTicks - s0.prepLooseTicks) * 1000.0 / qf / frd; const double prepUploadCpu = (double)(s.prepUploadTicks - s0.prepUploadTicks) * 1000.0 / qf / frd; + const DrawIdRecord::ShadowWindow sh = DrawIdRecord::TakeShadowWindow(); const uint64_t stD[6] = { 0, s.st[1] - s0.st[1], s.st[2] - s0.st[2], s.st[3] - s0.st[3], s.st[4] - s0.st[4], s.st[5] - s0.st[5] }; const uint64_t elig = stD[1] + stD[2] + stD[3]; @@ -11534,6 +11644,19 @@ void DidStatsTag(char* buf, size_t cap, uint64_t passes) { prepUploadCpu, pAvg, pMax, bAvg, bMax, 100.0 * (double)(s.idPx - s0.idPx) / wpxd, 100.0 * (double)(s.moverPx - s0.moverPx) / wpxd, 100.0 * (double)(s.unpairedPx - s0.unpairedPx) / wpxd); + if (sh.calls > 0) { + static const char* const kName[DrawIdRecord::kShadowFieldCount] = { + "il", "vb", "ib", "topo", "vs", "cb", "srv", "smp", "rs", "vp", "sc" + }; + char sbuf[512]; + int off = snprintf(sbuf, sizeof(sbuf), "MV draw-ids shadow @blit: Record shadow hit %% over %llu draw(s):", + (unsigned long long)sh.calls); + for (int i = 0; i < DrawIdRecord::kShadowFieldCount && off > 0 && off < (int)sizeof(sbuf) - 24; ++i) { + const double pct = 100.0 * (double)sh.shadow[i] / (double)sh.calls; + off += snprintf(sbuf + off, sizeof(sbuf) - (size_t)off, " %s %.0f", kName[i], pct); + } + Log("%s", sbuf); + } // v0.10.0 phase 3: consensus camera R (eye 0) + forward-pass ids { const size_t used = strlen(buf); @@ -14555,9 +14678,15 @@ bool UpdateGameContext(IDXGISwapChain* sc, uint64_t n, void* caller) { g_gameDev = dev; g_candDev = nullptr; g_candPresents = 0; if (first) { +#ifdef WITH_DLAA + DrawIdRecord::ShadowInvalidate(); +#endif Log("game render context = %p (device %p, ID3D11DeviceContext1 %p, Present #%llu tid=%lu)", (void*)ic, (void*)dev, (void*)ic1, (unsigned long long)n, GetCurrentThreadId()); } else { +#ifdef WITH_DLAA + DrawIdRecord::ShadowInvalidate(); +#endif if (g_cCtxChanges < 5) { ++g_cCtxChanges; Log("game render context changed %p -> %p (device %p -> %p, ID3D11DeviceContext1 %p, Present #%llu tid=%lu)", @@ -14762,6 +14891,9 @@ void AdoptFromPresentLayer(ID3D11DeviceContext* ctx, const PlEvidence& ev, const g_plDraws = 0; g_plGameTid.store(tid, std::memory_order_relaxed); // every frame boundary runs on this thread from now on FrameEndReset(); // the rule's state was the presenting context's until now +#ifdef WITH_DLAA + DrawIdRecord::ShadowInvalidate(); +#endif g_plActiveQpc.store(now, std::memory_order_relaxed); g_plAdopted.store(true, std::memory_order_relaxed); g_plActive.store(true, std::memory_order_release); // hkPresent: count + log only from now on @@ -16035,6 +16167,28 @@ DWORD WINAPI SetupThread(LPVOID) { reinterpret_cast(&oOMSetRenderTargets)); HookFn("RSSetViewports", cvtbl[44], reinterpret_cast(&hkRSSetViewports), reinterpret_cast(&oRSSetViewports)); + #ifdef WITH_DLAA + HookFn("IASetInputLayout", cvtbl[17], reinterpret_cast(&hkIASetInputLayout), + reinterpret_cast(&oIASetInputLayout)); + HookFn("IASetVertexBuffers", cvtbl[18], reinterpret_cast(&hkIASetVertexBuffers), + reinterpret_cast(&oIASetVertexBuffers)); + HookFn("IASetIndexBuffer", cvtbl[19], reinterpret_cast(&hkIASetIndexBuffer), + reinterpret_cast(&oIASetIndexBuffer)); + HookFn("IASetPrimitiveTopology", cvtbl[24], reinterpret_cast(&hkIASetPrimitiveTopology), + reinterpret_cast(&oIASetPrimitiveTopology)); + HookFn("VSSetConstantBuffers", cvtbl[7], reinterpret_cast(&hkVSSetConstantBuffers), + reinterpret_cast(&oVSSetConstantBuffers)); + HookFn("VSSetShader", cvtbl[11], reinterpret_cast(&hkVSSetShader), + reinterpret_cast(&oVSSetShader)); + HookFn("VSSetShaderResources", cvtbl[25], reinterpret_cast(&hkVSSetShaderResources), + reinterpret_cast(&oVSSetShaderResources)); + HookFn("VSSetSamplers", cvtbl[26], reinterpret_cast(&hkVSSetSamplers), + reinterpret_cast(&oVSSetSamplers)); + HookFn("RSSetState", cvtbl[43], reinterpret_cast(&hkRSSetState), + reinterpret_cast(&oRSSetState)); + HookFn("RSSetScissorRects", cvtbl[45], reinterpret_cast(&hkRSSetScissorRects), + reinterpret_cast(&oRSSetScissorRects)); + #endif HookFn("DrawIndexed", cvtbl[12], reinterpret_cast(&hkDrawIndexed), reinterpret_cast(&oDrawIndexed)); // v0.9.0 texture LOD bias: PSSetSamplers = 10. g_lodHooked gates every use of oPSSetSamplers (LodFrameUpdate). @@ -16087,6 +16241,8 @@ DWORD WINAPI SetupThread(LPVOID) { reinterpret_cast(&oDiscardResource)); HookFn("DiscardView", c1vtbl[118], reinterpret_cast(&hkDiscardView), reinterpret_cast(&oDiscardView)); + HookFn("VSSetConstantBuffers1", c1vtbl[119], reinterpret_cast(&hkVSSetConstantBuffers1), + reinterpret_cast(&oVSSetConstantBuffers1)); HookFn("DiscardView1", c1vtbl[133], reinterpret_cast(&hkDiscardView1), reinterpret_cast(&oDiscardView1)); ctx1->Release(); From 7e03d6af06201ba44f469a9b20e0ad03e8409a12 Mon Sep 17 00:00:00 2001 From: Breno Assis Date: Sun, 11 Oct 2026 10:32:24 -0400 Subject: [PATCH 3/3] Add OpenXR swapchain release hook and VR overlay support - Introduced `xr_hook.h` to manage OpenXR swapchain image releases and provide a callback mechanism for D3D11 textures. - Implemented functions for tracking view poses and overlay parameters, enabling VR tuning panel and FPS box as OpenXR quad layers. - Enhanced diagnostics for swapchain releases and view corrections. - Updated `drawid_harness.cpp` to include new VR model shadow tests with union clipping for both eyes. - Added support for new configuration options related to consensus failure tolerance and VR model shadow initialization. --- CMakeLists.txt | 3 +- README.md | 141 ++- docs/DEVELOPMENT.md | 83 +- docs/DLAA_INTEGRATION.md | 44 + docs/KEYS.md | 163 ++- docs/dlaa.ini.sample | 67 +- docs/images/tuning-menu.png | Bin 706303 -> 661936 bytes src/dinput_wrap.cpp | 494 ++++++-- src/dinput_wrap.h | 51 +- src/draw_ids.cpp | 71 +- src/draw_ids.h | 32 +- src/gpu_perf.cpp | 36 +- src/gpu_perf.h | 8 + src/inject.cpp | 2228 ++++++++++++++++++++++++++++++++--- src/menu.cpp | 109 +- src/menu.h | 12 +- src/motion_vectors.cpp | 1 + src/scene_dlaa.cpp | 91 +- src/scene_dlaa.h | 18 + src/xr_hook.cpp | 1518 ++++++++++++++++++++++++ src/xr_hook.h | 150 +++ tests/drawid_harness.cpp | 88 +- 22 files changed, 5015 insertions(+), 393 deletions(-) create mode 100644 src/xr_hook.cpp create mode 100644 src/xr_hook.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 8678696..98c8e23 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.20) -project(ets2_ats_dlaa VERSION 0.10.1 LANGUAGES C CXX) +project(ets2_ats_dlaa VERSION 0.10.3 LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -11,6 +11,7 @@ add_library(dinput8 SHARED src/inject.cpp src/ofxr.cpp # v0.10.0: OFXR Bridge module-range pass-through (compiles with or without WITH_DLAA) src/dinput_wrap.cpp # v0.10.0: tuning menu keys hidden from the game (DirectInput keyboard wrap + window subclass) + src/xr_hook.cpp # v0.10.3 phase 27: OpenXR xrReleaseSwapchainImage hook (VR panel drawn right before the release) ) set_target_properties(dinput8 PROPERTIES PREFIX "" OUTPUT_NAME "dinput8") # Single source of the version string: project(... VERSION 0.10.0) above feeds the diff --git a/README.md b/README.md index 19a9ed5..29629a7 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,6 @@ > - Updates, release notes, the hotkey list and the troubleshooting guide live here and only here. If someone tells you to get the mod > somewhere else, they are wrong. -**I've removed my post from Reddit, you can't be constructive there.** - # ETS2 & ATS: DLAA & DLSS Injection Mod An **ETS2 DLSS mod** and **ATS DLSS mod**: NVIDIA DLAA and DLSS upscaling for @@ -69,6 +67,8 @@ account — a few hotkeys, an in-game tuning menu (`Delete`) and an optional tex to uninstall. - **Debug log** for bug reports (off by default). +![The tuning menu (v0.10.3)](docs/images/tuning-menu.png) + ## ⬇ Download **[Download the latest release here](https://github.com/JRDevo/ETS2-ATS-DLAA-DLSS-Injection-Mod/releases/latest)** @@ -79,7 +79,7 @@ This is an unofficial fan project. It is not affiliated with, or endorsed by, SC Software or NVIDIA. Euro Truck Simulator 2 and American Truck Simulator are trademarks of SCS Software; DLSS and DLAA are trademarks of NVIDIA Corporation. -> Status: v0.10.1. Fixes the dark 1 px line on every silhouette in flat mode (v0.10.0), and `Ctrl+F9` now also saves the picture as it reached the screen. Per-part motion vectors, mirror DLAA, DLAA before the game's tonemap, the tuning menu and the fps counter were tested in ETS2 flat. DLAA itself has been run in ETS2 (VR) and ATS (flat and VR); the newest VR fixes (jitter phase, menu panel in VR) are only partly tested. The DLSS +> Status: v0.10.3. In VR the tuning menu and the fps box are OpenXR quad layers placed by the headset (`menu_vr_layer`): steady, never covered by the game's menus, at a real distance (`menu_vr_dist`), with the fps box optionally fixed in the cab (`fps_vr_lock`). Hold a key or wheel button on a menu row to bind it; Reset to defaults is a 5 s hold; Panel / FPS settings are collapsible groups. v0.10.2 (unpublished): VR performance pass (`mv_cons_fail_tol`, mirror units pre-built on the loading screen, `mv_area_clip`, camera-only mirrors `mirror_mv`), the 7-choice Mirror DLAA row, wheel / D-pad bindings. The DLSS > *upscaling* path (render below native, reconstruct up) runs in VR but is still > being tuned. Treat upscaling as experimental. The OFXR Bridge handling is not yet tested in a headset with the bridge armed. --- @@ -95,6 +95,9 @@ trademarks of SCS Software; DLSS and DLAA are trademarks of NVIDIA Corporation. ## Install +
+Show + 1. **Make a backup** of the game's `bin\win_x64\` folder first. 2. [Download the latest release zip](https://github.com/JRDevo/ETS2-ATS-DLAA-DLSS-Injection-Mod/releases/latest) and unzip it. @@ -120,8 +123,13 @@ trademarks of SCS Software; DLSS and DLAA are trademarks of NVIDIA Corporation. To uninstall, delete `dinput8.dll` (and `dlaa.ini`) from `bin\win_x64\`. +
+ ## Modes — the `End` key +
+Show + Press **`End`** in game (no modifier) to cycle the mode. The choice is saved to `dlaa.ini` immediately and used again next launch. @@ -134,8 +142,13 @@ Press **`End`** in game (no modifier) to cycle the mode. The choice is saved to At 100 % render scale DLAA and DLSS produce the same picture; the difference only shows once you render below native (see render scale below). +
+ ## Flat or VR +
+Show + The mod reads the game's launch options at start. With `-openxr` or `-oculus` it runs in VR mode (one DLAA / DLSS pass per eye; the desktop mirror window is left alone). Without them it runs in flat mode. The log says which: `launch mode: VR` or `launch mode: FLAT`. One `dlaa.ini` serves both. @@ -143,8 +156,13 @@ The log says which: `launch mode: VR` or `launch mode: FLAT`. One `dlaa.ini` ser If the launch options say VR but no headset session starts (the game then runs on the monitor), the mod notices after about one second of driving and switches to flat mode by itself (`launch mode FALLBACK` in the log). +
+ ## OFXR Bridge (VR frame generation) +
+Show + [OFXR Bridge](https://github.com/djules75/OFXR-Bridge) is a separate program that adds in-between frames in VR: it takes the finished picture of each eye and generates the frames between them from optical flow. The mod runs together with it. The mod anti-aliases / upscales each eye as usual; the bridge then works on the finished eye pictures. It needs no motion vectors from @@ -162,8 +180,13 @@ the mod. The mod only makes sure the bridge's own copies inside the game are lef Status: the handling is built but not yet tested in a headset with the bridge armed; report what you see with `debug = 1`. +
+ ## How render scale works +
+Show + The game renders the 3-D scene at `r_scale_x` × `r_scale_y` of the output size and then stretches it up. In **DLSS** mode this injector replaces that stretch with DLSS reconstruction, so lowering the render scale buys performance with little quality @@ -188,8 +211,13 @@ upscaling). `r_scale_y` then shrink the render below that eye size for DLSS to reconstruct back up to it. +
+ ## Models (presets) — which one to use +
+Show + A "model" (NVIDIA calls it a *render preset*) is the neural network that cleans the picture. All four remove jagged edges. They differ in detail, in how they treat thin and moving things, and in GPU time. Switch live with `Shift+F1`..`F4` @@ -275,8 +303,13 @@ What to expect: decides *what resolution* the model works from; the model decides *how* it cleans the picture. +
+ ## Controls +
+Show + **You only need three keys** — or the `Delete` menu, which has every setting on one panel. Everything else is tuning, and the defaults are tuned already. @@ -293,7 +326,8 @@ Everything else is tuning. The defaults are tuned already; you can ignore the re **Every key can be changed.** Open `dlaa.ini`, find the `key_` line for the action and edit the key, e.g. `key_dlaa_toggle = Ctrl+D` (or `none` to turn it -off). Restart the game. Full list: [`docs/KEYS.md`](docs/KEYS.md). +off). Restart the game. Full list: [`docs/KEYS.md`](docs/KEYS.md). A wheel / gamepad button or D-pad can be added after a +comma (`key_menu = Delete, Wheel10`), so the tuning menu can be driven from the wheel. By default every control except `End` and the menu keys (`Delete`, arrows) is an **F-key with one modifier**, so it can be used blind in a headset. The game window must be focused. Each key beeps to confirm (pitch tracks @@ -345,8 +379,13 @@ These need `debug = 1` in `dlaa.ini`. They are for diagnostics and bug reports; The full sheet with every beep pattern is in [`docs/KEYS.md`](docs/KEYS.md). +
+ ## The tuning menu +
+Show + ![The tuning menu](docs/images/tuning-menu.png) Press **`Delete`** in game and a panel with every setting opens over the picture: name, current @@ -368,24 +407,57 @@ The three green lines under the title show the game's GPU time per frame, what t - **Flat:** the panel sits near the top-left corner of the screen. - **VR:** the panel shows in both eyes, centred in front of you, and on the desktop mirror window -- also on the VR main menu and the garage / truck dealer screens, before a save is loaded. -- **The game does not see `Delete` and the arrow keys while the menu is open** (they steer and drive in the default - layout), so the truck does not react while you tune. Closed, the keys belong to the game again. +- **While the menu is open the game gets no keys and no wheel / gamepad buttons at all** (the arrow keys steer and drive + in the default layout, and a held key must not honk the horn), so the truck does not react while you tune. Steering, + pedals and other axes still reach the game. `Escape` / pause and every game key are off too: close the menu first. + Closed, every key and button belongs to the game again. +- **Bind a key in the menu:** select a row and **hold a key or a wheel button for 5 s** (`bind_hold_ms`): a bar in the + Hotkey column fills up, two rising beeps, and the key is that row's hotkey from now on, written to `dlaa.ini` at once. + Hold `Ctrl` / `Shift` / `Alt` with it for a combination. A key replaces the row's keyboard key and keeps its wheel + button, a wheel button the other way round; **holding `Backspace` clears** the row's hotkey (`none`). A key that + already belongs to another hotkey is taken away from it (the row says `taken from key_...` for 3 s). Rows with two + keys (minus / plus) or four (the models) ask for one hold per key, one after the other. +- **Menu keys** row (in the `Panel settings` group): the five keys that open and drive the menu, bound by five holds in + a row (open / close, up, down, left, right). On this row the open key does not close the menu and a short tap of `Up` / + `Down` moves to the next row; hold longer to bind. See [`docs/KEYS.md`](docs/KEYS.md#bind-a-key-in-the-menu). +- **Groups (v0.10.3):** the panel rows (`Panel position X` / `Y`, `Panel size`, `Panel VR depth`, `Panel faces you`, + `Menu keys`) sit in the **Panel settings** group and the fps box rows (`FPS counter lock`, `X`, `Y`, `size`) in the + **FPS counter settings** group, right under the `FPS counter` on / off row. Both groups are closed every time the menu + opens: select the group row and press `Right` to show its rows, `Left` to hide them again. - Every row calls the same function as its hotkey: the hotkeys keep working while the menu is open, and every change beeps and logs exactly like its key. Number rows repeat while you hold `Left` / `Right`. -- **Move the widgets:** the panel and the fps counter both move. For the panel use the `Panel position X`, `Panel position Y` and `Panel size` rows (and `Panel VR depth` in VR, +- **Move the widgets:** the panel and the fps counter both move. For the panel open `Panel settings` and use the `Panel position X`, `Panel position Y` and `Panel size` rows (and `Panel VR depth` in VR, which brings the panel nearer). Flat and VR keep their own position (`menu_x`, `menu_y`, `menu_scale`, - `menu_vr_x`, `menu_vr_y`, `menu_vr_scale`, `menu_vr_depth`, `menu_vr_face` in `dlaa.ini`). + `menu_vr_x`, `menu_vr_y`, `menu_vr_scale`, `menu_vr_dist` / `menu_vr_depth`, `menu_vr_face` in `dlaa.ini`). - **VR: the panel faces you.** Move it to the side or up / down and it turns towards your eye like a real screen, keeping its size from every angle (`Panel faces you (VR)` row, `menu_vr_face`, on by default; off = a flat picture). On the garage / truck dealer screens the panel and the fps box are drawn on top of the game's own menu, not under it (the mod finds where the game hands each eye picture to the headset in the first frames after the menu opens). +- **VR: rock-steady panel (v0.10.3).** By default (`menu_vr_layer = 1`) the panel and the fps box are separate OpenXR + layers: the headset's compositor shows them itself, on top of the game picture, so they do not swim or jitter with + the reprojection, sit at a real distance (the panel 1 m away by default, the fps box 0.8 m) and are never covered by + the game's menus. `Panel VR depth` then sets the panel's distance in metres (`menu_vr_dist`, 0.30 - 3.00 m, 5 cm + steps; it keeps its size, only the depth changes) and `Panel faces you` turns the panel -- and the fps box when it + follows your head -- towards you as a true 3-D layer. With `menu_vr_layer = 0` (the panel drawn into the picture, as + before; also the automatic fallback when the layers are not possible) `Panel VR depth` is the inward shift in px + (`menu_vr_depth`). - **Live fps counter:** ![fps counter](docs/images/fps-counter.png) the `FPS counter` row switches on a small fps box: the fps and the frame time as text with a dark outline, no background (`60 fps` / `16.7 ms`, updated twice a second) that stays on screen also when the menu is closed (flat, and in VR in both eyes). - `FPS counter X`, `FPS counter Y` and `FPS counter size` move it; flat and VR keep their own position (`fps_show`, + Its own GPU cost is measured and shown in the row's cost column, per frame (all the pictures it is drawn into together). + `FPS counter X`, `FPS counter Y` and `FPS counter size` (in the `FPS counter settings` group) move it; flat and VR keep their own position (`fps_show`, `fps_x`, `fps_y`, `fps_scale`, `fps_vr_x`, `fps_vr_y`, `fps_vr_scale` in `dlaa.ini`). Off, it costs nothing. The size goes from `0.2` to `3.0`; in VR it starts at `0.3` (small but readable in the headset). +- **Mirror DLAA** picks how many mirrors get DLAA and how they move: `off`, `1 mirror (largest)` (only the main mirror + next to you), `1 mirror, camera`, `2 mirrors (largest)`, `2 mirrors, camera`, `all mirrors`, `all, camera motion`. + Without `camera` each moving part moves exactly in the glass (about 0.4 ms per mirror in VR); with `camera` the mirror + uses the camera motion only: the cheapest per mirror (about 0.15 ms), but moving traffic can ghost in the glass + (`mirror_mv` in `dlaa.ini`). `Alt+F6` still switches it on / off. - **Save to dlaa.ini** (the same as `Shift+F12`) writes the live values, and the panel position / fps box once you changed them. +- **Reset to defaults** puts every row back to the fresh-install values, live and in `dlaa.ini` (the keys are removed + from the file; your hotkeys and every other line stay). Use it when you have changed too much. It is a **hold**: keep + `Right` held on the row for 5 s (`bind_hold_ms`; the Hotkey column reads `hold Right 5 s` and fills a progress bar); + let go earlier and nothing happens, `Left` does nothing there. - **Where your GPU time goes:** under the title, a GPU line shows the game's own GPU time per frame, what this mod costs (split into DLAA/DLSS itself, per-part motion, camera motion, see-through depth, mirrors, sharpen and copies; in VR per eye) and the fps. The `GPU cost` column shows each row's share right now (`off` = that feature is off and costs @@ -394,8 +466,16 @@ The three green lines under the title show the game's GPU time per frame, what t mod's timers switch on while the menu is open and off again when it closes (unless `debug = 1`). - Different keys: `key_menu`, `key_menu_up`, `key_menu_down`, `key_menu_left`, `key_menu_right` in `dlaa.ini` (see [`docs/KEYS.md`](docs/KEYS.md)). +- **From the wheel:** the menu (and every other hotkey) can also be driven from a wheel's D-pad and buttons, e.g. + `key_menu = Delete, Wheel10` and `key_menu_up = Up, WheelUp`; see + [`docs/KEYS.md`](docs/KEYS.md#wheel-gamepad-and-joystick-buttons) for how to find the button number. + +
+ +## dlaa.ini -## `dlaa.ini` +
+Show Optional, placed next to `dinput8.dll`. One `key = value` per line; `#` or `;` start a comment. It is read once at launch (the `config (...)` line in the log shows what @@ -417,6 +497,7 @@ The table below lists the commonly used keys: | `dlaa_area` | `100` | run DLAA on the centre `N` % of each eye image (VR performance), `10`..`100`. VR only: in flat mode the whole picture is always used. Also used for the truck on the VR main menu / garage screens | | `mv_objects` | `2` | motion vectors for moving traffic: `2` = every moving part gets its own exact motion (default), `0` = camera motion only (`1` = the older method, for comparison) | | `mirror_dlaa` | `1` | DLAA on the truck / car mirrors: `1` = each mirror gets its own DLAA (default), `0` = mirrors are left as the game draws them. `Alt+F6` switches it live, `Shift+F12` saves | +| `mirror_mv` | `parts` | motion in the mirrors (v0.10.2, VR and flat): `parts` = each moving part gets its own exact motion in the glass (default, about 0.4 ms per mirror in VR), `camera` = camera motion only (about 0.15 ms per mirror, moving traffic can ghost in the glass). Used with `mirror_vr_mode` / `mirror_flat_mode` 1, 2 and 3; mode 4 is always camera motion. The menu's Mirror DLAA row sets it live, `Shift+F12` saves | | `dlaa_pre_tonemap` | `1` | DLAA before the game's tonemap (flat DLAA mode): `1` = on the game's HDR colours (default), `0` = on the finished picture at the end of the frame. `Alt+F7` switches it live, `Shift+F12` saves | | `tex_lod_bias` | `0` | sharper texture text: texture mip LOD bias for the 3-D world while DLAA / DLSS runs, `-3`..`1`, `0` = off. Try `-0.5` to `-1`; more negative = sharper but more shimmer on fine patterns. `Ctrl+F1` / `F2` change it live, `Shift+F12` saves | | `tex_lod_bias_auto` | `0` | `1` = while DLSS upscales, add log2(render width / output width) on top of `tex_lod_bias` (e.g. 75 % render width → −0.42) | @@ -425,17 +506,27 @@ The table below lists the commonly used keys: | `jitter_sign_x` / `jitter_sign_y` | `1` | flip if the image shimmers or looks doubled (try the 4 combinations) | | `dlss_hdr` | `1` | HDR only: `1` = tell DLSS the picture is HDR (normal); `0` = try this if HDR brightness or colours look wrong with DLAA on | | `beeps` | `1` | `0` = silence the hotkey beeps | -| `menu_x` / `menu_y` / `menu_scale` | `2` / `8` / `1.0` | tuning menu panel, flat: left / top edge in % of the picture, size `0.5`..`2.0`. The menu's Panel rows change them live | +| `menu_x` / `menu_y` / `menu_scale` | `2` / `8` / `1.0` | tuning menu panel, flat: left / top edge in % of the picture, size `0.3`..`2.0`. The menu's Panel rows change them live | | `menu_vr_x` / `menu_vr_y` / `menu_vr_scale` / `menu_vr_depth` | `0` / `-5` / `1.0` / `12` | tuning menu panel, VR: centre offset from the eye's centre in % (`-50`..`50`, negative y = up), size (1 = 54 % of the eye width), inward shift per eye in px | -| `menu_vr_face` | `1` | tuning menu panel, VR: `1` = the panel turns to face your eye when moved off the centre (a tilted 3-D panel, same size from every angle), `0` = a flat picture. The menu's `Panel faces you (VR)` row switches it live | +| `menu_vr_dist` | `100` | tuning menu panel, VR layer (v0.10.3, `menu_vr_layer = 1`): the panel's distance in cm (`30`..`300`); it keeps the same size at every distance, only the stereo depth changes. The menu's `Panel VR depth` row sets it in 5 cm steps on the layer path (`menu_vr_depth` is the in-picture shift) | +| `menu_vr_face` | `1` | tuning menu panel, VR: `1` = the panel turns to face your eye when moved off the centre (a tilted 3-D panel, same size from every angle), `0` = a flat picture. On the VR layer path (default) also the fps box when it follows your head, turned by the compositor. The menu's `Panel faces you (VR)` row switches it live | +| `menu_vr_layer` | `1` | VR (v0.10.3): `1` = the panel and the fps box are separate OpenXR quad layers the headset's compositor places itself: rock-steady (no swimming with the reprojection), at a real distance (panel `menu_vr_dist`, default 1 m; fps box 0.8 m), facing you with `menu_vr_face = 1`, never covered by the game's menus; `menu_vr_depth` is then unused. `0` = drawn into the eye picture as before (also the automatic fallback; `menu_vr_dist` unused) | | `fps_show` | `0` | live fps box: `1` = a small fps / frame-time box stays on screen, also while the menu is closed. The menu's `FPS counter` row switches it live | | `fps_x` / `fps_y` / `fps_scale` | `1` / `1` / `1.0` | fps box, flat: left / top edge in % of the picture (`0`..`95`), size `0.2`..`3.0` (1 = 92 x 44 px at 1080 p) | | `fps_vr_x` / `fps_vr_y` / `fps_vr_scale` | `0` / `-25` / `0.3` | fps box, VR: centre offset from the eye's centre in % (`-50`..`50`, negative y = up), size `0.2`..`3.0` (1 = 8 % of the eye width) | +| `fps_vr_lock` | `0` | fps box, VR (v0.10.3): `0` = follows the headset, `1` = fixed in the cab 0.8 m from your seat; `fps_vr_x` / `fps_vr_y` are then degrees around you (+ = right / down). The menu's `FPS counter lock` row switches it | +| `bind_hold_ms` | `5000` | tuning menu: how long (ms, `500`..`10000`) a key or wheel button must be held on a row to bind it to that row ([`docs/KEYS.md`](docs/KEYS.md#bind-a-key-in-the-menu)) | +| `controller_name` | *(empty)* | only read the wheels / gamepads whose name contains this text for `WheelN` / `WheelUp` hotkey bindings, e.g. `T300` when a shifter shares the wheel's button numbers; empty = every controller ([`docs/KEYS.md`](docs/KEYS.md#wheel-gamepad-and-joystick-buttons)) | | `key_` | *(see KEYS.md)* | re-bind any hotkey, e.g. `key_dlaa_toggle = Ctrl+D`, or `none` to disable it. Full list and format: [`docs/KEYS.md`](docs/KEYS.md) | | `debug` | `0` | `1` = write the log file `dlaa_inject.log` (off by default) | +
+ ## Performance +
+Show + Measured with the mod's own GPU timers (`debug = 1` writes a `perf eye` line to the log every 10 seconds). ETS2 flat, render 2880x2160 (Scaling 75 % of 3840x2160), model E, sharpen on, texture LOD bias -1.0, 4 mirrors, dense traffic. The game held its 72 fps cap the whole time. @@ -483,13 +574,20 @@ switches it off. VR: not measured yet with v0.10. Both eyes run the whole chain at 4592x6496 each (stereo buffer scale 2.0), so expect roughly double. `mirror_vr_mode` (0 off, 1 all mirrors, 2 only the two largest, 3 every mirror every 2nd frame) and -`mirror_dlaa = 0` are the first knobs to turn if VR drops below the headset rate. +`mirror_dlaa = 0` are the first knobs to turn if VR drops below the headset rate (the menu's Mirror DLAA row sets them live: +`1 mirror (largest)` is the cheapest clean choice; v0.10.2: `1 mirror, camera` / `mirror_mv = camera` drops the per-part +motion in the mirrors, about 0.15 ms per mirror instead of 0.4 ms). **Test rig** (all numbers above): AMD Ryzen 9 9950X3D, 62 GB RAM, NVIDIA GeForce RTX 5090 (driver 32.0.16.1692), Windows 11 Pro, 3840x2160 monitor; VR = Meta Quest 3 over Virtual Desktop (VDXR); ATS 1.61, ETS2 current. +
+ ## Troubleshooting +
+Show + - **Traffic, trailers or buildings look wrong (wobble, smear, pink in the `Ctrl+F6` view)?** Press `Alt+F5` (or set `mv_objects = 0` in `dlaa.ini`). That turns off the per-object motion and leaves the camera motion only, the way v0.8.x worked. @@ -526,14 +624,24 @@ Windows 11 Pro, 3840x2160 monitor; VR = Meta Quest 3 over Virtual Desktop (VDXR) `dlaa.ini` (4 combinations). - **Uninstall:** delete `dinput8.dll` (and `dlaa.ini`). +
+ ## Multiplayer +
+Show + ETS2/ATS single-player has no anti-cheat, so this works fine there. **TruckersMP and Convoy multiplayer have their own rules about third-party DLLs — check what each allows before using it online.** +
+ ## Build from source +
+Show + Visual Studio 2022 (MSVC, x64) and CMake ≥ 3.20. MinHook is fetched automatically by CMake (needs git + internet on the first configure). DLAA is compiled in when the NVIDIA DLSS SDK is present: @@ -548,8 +656,13 @@ Output: `build/Release/dinput8.dll`. Without `external/DLSS` the build is a logging-only injector (no DLAA). `scripts/package.ps1` builds Release and assembles the release zip. Architecture and internals: [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md). +
+ ## Reporting a problem (what to upload) +
+Show + If something goes wrong, [open an issue](../../issues/new/choose) (**New issue** > **Bug report**) and attach the files below. Without the log I usually can't tell what happened. @@ -598,6 +711,8 @@ check (or edit it) before uploading. **Never attach `nvngx_dlss.dll` or any other NVIDIA DLL** — their license doesn't allow redistribution. Just give the version number. +
+ ## License and credits **This mod** — [PolyForm Noncommercial License 1.0.0](LICENSE.md), Copyright (c) 2026 JRDevo. diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 965ce8a..693190f 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -585,13 +585,20 @@ is tonemapped), both tonemap into the SAME scene-size SRGB texture, then each is only while the box is on or the menu is open (`MenuPerfTick` copies its figures); `TuningMenu::DrawWidget` draws it after the panel at the same two places (`MenuPresentTarget` at Present, `MenuDrawVr` per eye; the eye blit is noted while menu open || box on) from its own texture cache (rebuilt only when its text or build scale changes), dropped by `ReleaseWidget` when switched off. -- **Key swallowing** (`src/dinput_wrap.cpp`, `KeySwallow`), only while the menu is open and only for the 5 bound menu keys - (`MenuSwallowKeys`): `DirectInput8Create` (proxy.cpp) wraps `IDirectInput8A/W`; `CreateDevice` of a keyboard returns a full - forwarding `IDirectInputDevice8A/W` whose `GetDeviceState` clears the keys' DIK bytes and whose `GetDeviceData` drops their key-down - entries. The game window (the swapchain's `OutputWindow`, first top-level Present) is subclassed once: `WM_KEYDOWN` / - `WM_SYSKEYDOWN` / `WM_CHAR` / `WM_SYSCHAR` and `WM_INPUT` keyboard make events of those keys are dropped. Key releases always pass - (a key held when the menu opened must reach the game as released). The menu itself reads `GetAsyncKeyState`. A DLL unload puts the - original window procedure back if the window still points at ours. +- **Input hiding** (`src/dinput_wrap.cpp`, `KeySwallow`), only while the menu is open (`MenuHidesInput`; v0.10.2: EVERY key and + controller button -- v0.10.0 / v0.10.1 hid only the 5 bound menu inputs via `MenuSwallowKeys` / `MenuSwallowJoy`, both removed): + `DirectInput8Create` (proxy.cpp) wraps `IDirectInput8A/W`; `CreateDevice` of a keyboard returns a full forwarding + `IDirectInputDevice8A/W` whose `GetDeviceState` clears all 256 DIK bytes and whose `GetDeviceData` drops every key-down entry; a + controller's wrap clears every button byte / centres the POV and drops every button-down / non-centred POV entry (axes untouched). + The game window (the swapchain's `OutputWindow`, first top-level Present) is subclassed once: every `WM_KEYDOWN` / + `WM_SYSKEYDOWN` / `WM_CHAR` / `WM_SYSCHAR` and every `WM_INPUT` keyboard make event is dropped. Key / button releases always pass + (a key held when the menu opened must reach the game as released). The menu itself reads `GetAsyncKeyState` and the tapped + controller state. A DLL unload puts the original window procedure back if the window still points at ours. +- **Hold to bind** (v0.10.2, `MenuBindTick` / `MenuBindComplete` / `MenuBindDecorate`, `kMenuBindRows`): per Present while open, + `MenuBindScan` finds the single held input (a key `KeyChordName` can name, or one controller button / POV direction from + `PollKeys`' copy); a down-edge on a row with actions starts a hold, `bind_hold_ms` later it replaces that part of the step's + `KeyBind` (Backspace = none), takes it from any other action, writes `key_*` via `WriteIniPreserving` and sets + `g_keyWasActive` so the still-held input does not fire the new binding. Rules: docs/KEYS.md "Bind a key in the menu". ### Phase 15 (v0.10.0): VR menu screens -- panel, DLAA area, limits @@ -1138,6 +1145,68 @@ is tonemapped), both tonemap into the SAME scene-size SRGB texture, then each is - **RenderDoc is blind to all of this**: under RenderDoc NGX fails (PlatformError) and phase 12 holds the jitter, so a capture has no mod work in it. +### Phase 29 (v0.10.3): the VR panel and fps box as OpenXR quad layers (`menu_vr_layer`, default 1) + +- **Why**: drawn into the eye picture (phases 16 / 27, `MenuDrawVrOn`) a head-locked overlay is part of the projection layer the + runtime (Virtual Desktop) timewarps with the game's submitted pose every frame -- the panel swims / flickers by the head motion + between that pose and the display ("jittery, not solid"); the phase 28 "fixed in cab" box needed pose maths with one frame of lag. +- **How** (`src/xr_hook.cpp`, OpenXR side only; `src/inject.cpp` `MenuOverlaySet` / `MenuOverlayDraw`, D3D side): `xrEndFrame` and + `xrDestroySession` are wrapped (outermost = the game's call). The functions we call (`xrEnumerateSwapchainFormats`, + `xrCreateSwapchain`, `xrEnumerateSwapchainImages`, `xrAcquire` / `xrWait` / `xrReleaseSwapchainImage`, `xrCreateReferenceSpace`, + the destroys) are resolved through the real `xrGetInstanceProcAddr` of the component whose thunk handles the outermost + `xrEndFrame`, with the `XrInstance` its GIPA was last asked with; every call of ours runs inside `++t_depth` (our images never reach + the image map or the phase 27 release callback). Per session, at the first frame that wants a quad: two D3D11 swapchains + (`R8G8B8A8_UNORM_SRGB` preferred, else `B8G8R8A8_UNORM_SRGB`, `R8G8B8A8_UNORM`, `B8G8R8A8_UNORM` -- OpenXR reads non-sRGB 8-bit + images as linear), the panel 1824 x 1769 and the fps box 736 x 352, and one VIEW reference space. Each frame: acquire, wait + (infinite), the callback clears the image and draws the panel / fps box into its top-left corner (`TuningMenu::kOutOverlay`: + blend off, RGBA written; panel alpha `max(0.88, luminance)`, the fps box its outline alpha), release; an + `XrCompositionLayerQuad` per quad (sub-image = the drawn part, `BLEND_TEXTURE_SOURCE_ALPHA | UNPREMULTIPLIED_ALPHA`, both eyes) + is appended after the game's layers in a copy of its `XrFrameEndInfo` (cap 16 layers). A runtime that rejects it gets the game's + frame again unchanged, and the quad path stays off for that session. +- **Placement**: panel in our VIEW space at 1 m, width `fov_w * 0.54 * menu_vr_scale` (fov_w = tan R - tan L of the submitted view 0 + fov), centre `(fov_w * menu_vr_x %, -fov_h * menu_vr_y %)`; fps box "Follow head" the same at 0.8 m with 8 % per `fps_vr_scale`; + "Fixed in cab": in the game's projection-layer space (LOCAL: its origin = the seat; another type: a pivot = the submitted eyes' + midpoint + head yaw, captured at lock-on), position `pivot + 0.8 (sin y cos p, sin p, -cos y cos p)`, orientation + `rot_y(-yaw) * rot_x(pitch)` so the quad's +z points back at the pivot (checked once with `QRot`, logged). `menu_vr_depth` / + `menu_vr_face` are ignored on the quad path (the compositor gives real depth and facing) -- phase 29b below brings both rows back. +- **Draw resolution**: image px per reference px = 1.6 x `menu_vr_scale` (panel; 1216 px wide at 1.0) and 4.0 x `fps_vr_scale` + (fps box), capped by the image; the texture caches build at that scale and `g_menuVrBuild` / `g_fpsVrBuild` follow it (the + desktop mirror reuses the texture). +- **Thread**: the draw needs the game's immediate context: at `xrEndFrame` when it runs on the render thread (the late panel's arm + thread, else the Present thread), else at the game's first `xrReleaseSwapchainImage` of the frame on the render thread (the layers + still go in at `xrEndFrame`). Logged once: `OpenXR overlay: the game's xrEndFrame runs on tid=..., the render thread is tid=...`. +- **Fallback**: `XrHook::OverlayActive(which)` = that quad went to the compositor at the last `xrEndFrame` (within 0.5 s), or the + path is up and the quad is not wanted; otherwise `MenuDrawVrOn` draws it into the eye picture exactly as before (each of the two + separately). `menu_vr_layer = 0` = always the old path. +- **Log**: `OpenXR overlay: ...` (resolve, the swapchains + format, the first quad of each kind with its pose / size, the + orientation check), `tuning menu: VR drawn into its OpenXR quad image ...`, and a `VR overlay quads` line with + every VR late panel stats line (quads submitted, failures, rejects, the fixed box's space). +- **29b: Depth / Facing rows on the quad path + the fps box's own cost.** Phase 29 left `Panel VR depth` / `Panel faces you (VR)` + doing nothing on the quad path. Now: (1) new key `menu_vr_dist` (cm, 30..300, default 100) = the panel quad's distance in our + VIEW space (`OverlayParams::menuDist`; was a fixed 1 m); the width is `d * fov_w * 0.54 * menu_vr_scale` and the centre scales with + `d` too, so only the stereo depth changes. The Depth row edits it in 5 cm steps and shows `1.00 m` while the panel IS a quad + (`MenuVrQuad()` = `menu_vr_layer` && VR && `XrHook::OverlayActive(0)`), else `menu_vr_depth` px as before; both keys are saved, + reset (34 keys) and logged. A panel nearer than the fps box (< 0.8 m) is appended after it (the later quad layer is on top). (2) `menu_vr_face = 1` (`OverlayParams::menuFace`): the panel quad and the head-following fps box quad + are turned to face the VIEW origin with the fixed-in-cab construction, now one helper `OvFacingQuat` (dir = pos / |pos|, + yaw = atan2(dir.x, -dir.z), pitch = asin(dir.y), q = rot_y(-yaw) * rot_x(pitch); `QRot` check once per kind at its first + off-axis use, logged `OpenXR overlay: quad orientation check: ... dot +1.000 + -> OK (faces it)`; 180 deg about y if it ever points away), and their size times |pos| / d (the same angle as straight ahead, + phase 16's "same size from every angle"); 0 = identity (parallel to the view plane). The fixed-in-cab box is unchanged. + (3) GpuPerf section `kOverlay` ("fps-box", a new PER-FRAME kind: not tagged with a pass / eye, summed per landed query set = + per Present, `GpuPerf::FrameStats`) around every fps box `DrawWidget` (the VR quad image's clear + draw in `MenuOverlayDraw`, each + eye picture in `MenuDrawVrOn`, the flat / desktop-mirror backbuffer in `MenuDrawAtPresent`); the `FPS counter` row's cost column + shows ms per frame (`MenuPerfTick` deltas, frames without a box draw count 0), not in the per-eye "this mod" total (that is per + pass, and the box is drawn after the scene -- at xrEndFrame, the eye picture's release or Present -- so mostly outside the scene span the "game" figure is derived from). `debug = 1` logs `perf @blit N: fps-box ... + ms per frame`. The box texture is rebuilt only when its text changes: `FpsTick` updates the two lines every 0.5 s (2x/s). The desktop mirror at Present now builds at the quad's scale whenever that quad is active (also before `MenuVr()` is set, the VR main menu): two different build scales would rebuild the panel / box texture twice per frame. +- **29c: menu groups + short footer.** Header rows `MR_PANELGRP` (children `MR_POSX` .. `MR_MENUKEYS`, Menu keys moved into it) and + `MR_FPSGRP` (`MR_FPSLOCK` .. `MR_FPSSIZE`), 31 rows (`kMaxRows`); both collapse at every open, Right / Left open / close (fresh press), + Up / Down step over hidden rows (`MenuStepRow`), and `MenuBuildPanel` compacts the visible rows to the front (`nRows` / `sel` = visible; + the panel shrinks; the VR quad image is now 1824 x 1860). The footer is one constant line of `KeyShortName`s (keyboard chord only), its + rebind hint shortened / dropped when `TuningMenu::FooterFits` (GDI, scale 1) says it would reach the licence line; Draw clips it there. +- **29d: description fits 3 lines + Reset is a hold.** `kDescH` 54 -> 64 ref px (one 14 px Segoe UI line is 19 px, 3 lines need up to 62 + at some scales; the VR quad image is now 1824 x 1884) and `RenderPanel` draws only whole lines, cut at a word + `...` (`DescFit`); the Reset row + resets after a `bind_hold_ms` hold of the menu Right (`MenuResetTick`, the bind bar, `hold Right 5 s`), no longer on a Left / Right press. + ### The RenderDoc oracle (done in v0.2) Capture a frame of the unmodified game to learn empirically: which pass writes diff --git a/docs/DLAA_INTEGRATION.md b/docs/DLAA_INTEGRATION.md index cdd59ad..1eac738 100644 --- a/docs/DLAA_INTEGRATION.md +++ b/docs/DLAA_INTEGRATION.md @@ -772,6 +772,33 @@ rigid-parent vote and the mirrors made most of the rest. The user's 72 Hz target vectors inside the crop are bit-identical (max 0.0000 px; half resolution: every pixel the forward depth does not touch); every half-resolution forward-depth pixel has a forward id. Mutations `mutclip` / `mutview` fail it. The phase-8 comparison file of S1-S10 is reproduced exactly (0 px differ) with the folded dispatches. +- **v0.10.2: what each per-eye step covers, and the eye clip of the vote (`mv_area_clip = 1`, 0 = v0.10.1).** Audit at + `dlaa_area` < 100 (VR log 2026-10-10, area 40: the pass clip = both eyes' rects + 128 px = 30.1 % of the 6120x6496 eye): + pass B, copy-in / copy-out, the depth convert, NGX and RCAS run on the DLAA rect only (pass B reads the CURRENT depth twin at + its own pixel, no neighbours, no previous depth -- no margin needed); the G-buffer / forward replays, the forward-depth occlusion + init and re-draw run in the pass clip (the eye of a pass is only known at its blit; the id target's and the forward target's + clears are whole-target fast clears -- a DSV cannot be rect-cleared in D3D11, and the ids outside the clip must read 0 for the + marches); gather / match / pair / vote / pick / resolve / list+twin / the parent picks, the candidate copies and pass A are per + DRAW (no pixel size). The rigid-parent pixel count, centroid sums and vote grid ran over the whole pass clip -- in VR the union + of BOTH eyes' rects -- although they run at the blit, where the eye is known. Now `DrawIdMv::Prepare` intersects their sample + rect (`Clip`) with THIS eye's DLAA rect (`SetEyeRect` from `CameraMv::Generate` = pass B's crop) grown by `mv_area_margin` + (inject.cpp `PassViewSetup` hands the margin over every pass: `DrawIdMv::SetAreaClip`). Only the march START samples shrink; + the marches still read ids / depth up to their reach in the replayed region. Flat (one rect: eye rect + margin = the pass clip) + and mirror units (no pass clip) are bit-identical to v0.10.1. Expected in VR at area 40: the vote grid ~19 % of the eye + instead of ~30 % (p-count and p-col scale with it; p-vote is bounded by the march budget, so it shrinks less). +- **The depth snapshot stays whole (re-checked in v0.10.2):** a boxed `CopySubresourceRegion` of a `D32_FLOAT_S8X24_UINT` + DEPTH_STENCIL texture into the `R32G8X24_TYPELESS` twin copies NOTHING on the RTX 5090 driver and on WARP, with or without the + debug layer, for a 4-px-aligned and an unaligned box (debug layer: "If CopySubresourceRegion is used with Multisampled or + D3D11_BIND_DEPTH_STENCIL Resources, then the whole Subresource must be copied"). Its readers would allow a clip -- pass B + (eye rect), the vote marches (pass clip + 32 px reach), the occlusion init (pass clip), the Ctrl+F6 view (eye rect) -- but + only a game depth with a shader-resource binding (the phase-10 "own typeless depth" idea, not built) could copy less. +- **Log:** the `phase 9` config line prints `mv_area_clip`; the `perf view` line gains `v0.10.2 per-eye coverage: rigid-parent + pixel count + vote grid (mv_area_clip 1, eye rect + M px n the pass clip; N of P vote passes clipped to their eye): A % of the + image (eye 0) / B % (eye 1) vs the pass clip C % / D % | pass B, copy-in, NGX, RCAS, copy-out = the DLAA rect: E % (eye 0) / + F % (eye 1) | replay, forward replay, forward-depth init + re-draw = the pass clip above ... | depth snapshot: 100 % ...`. +- **WARP harness (v0.10.2):** S11 / S12 gain three VR-model shadows each -- the replay clip is the union of the eye's rect (u + 0.70) and the other eye's (u 0.30) + 40 px (48.4 % of the image), eye clip ON at full / 1/2 resolution (vote grid 26.7 %) and + OFF (48.7 %): ids inside the clip identical, every motion vector inside the crop bit-identical to the whole-image pipeline. #### Phase 10: the forward depth in one batch, performance profiles (v0.10.0) @@ -989,6 +1016,23 @@ in `captures/mirror_dlaa_plan.md`. re-home / take-over, a frame in which the unit did not run (throttled mirrors), `MvInvalidate` (DLAA / MV keys), `Alt+F6`. Units are self-contained: the eye identity does not matter for them and nothing touches `g_sceneDepth`, the pass FIFO, the eye map or the main units. +- **Unit builds (v0.10.2).** A unit's first Run builds its textures + NGX feature on the render thread (ATS VR v0.10.1: + 9.6 - 35.7 ms each, a dropped frame per new unit while driving). Now: (1) **size cache** `\ + dlaa_shader_cache\mirror_sizes.txt`, one line `W H N` per size whose build succeeded (N = units of that size at once; + 12 sizes max), written at that moment (`MirSizesNote`); (2) **boot pre-build** (`MirPrebuild`, at a Present after the + NGX pre-warm, NGX on the game device, the shader warm-up done, no mirror view seen yet): largest sizes first, up to 6 + units (and `mirror_max_views`) get exactly the build their first Run would do (`SceneDlaa::Prebuild` = Run's `Ensure` + call with Run's own `Geometry`, area 100, RGBA16F / IsHDR; the one-create-per-Present budget is skipped there); the unit + stays free and marked pre-built for its size; a new view takes the free unit built for exactly its size first + (`MirBeginView`), whose first Run then finds `BuiltFor` true and creates nothing; (3) **one build per frame**: a view + whose unit would build (`!ReadyFor`) after an NGX feature was already created since the last Present is left to the + game for that frame (no jitter, no DLAA; before, it was jittered and its Run deferred = a jittered mirror without DLAA) + and counted `unit builds deferred`. Logs: `mirror units: pre-built N units from the size cache (WxH unit U X ms, ...) in + X ms (boot, ...)` (or why not: cache empty, mirror DLAA off, NGX not initialised, views already seen); `mirror units: + size cache now has WxH xN units ...`; `mirror view detected: ... new unit, pre-built at boot for this size (no build)`; + the first-OK line ends `(unit built in X ms, pre-built: ...)` for such a unit (X = its first Run, MV init + evaluate + only); `mirror units: WxH view left to the game for this frame -- unit U would build now ...` (first 8); the `@blit` + line: `unit builds deferred to a later frame W, T in total` and `pre-built units not taken yet K`. - **Keys:** `Alt+F6` (`key_mirror_dlaa`) mirror DLAA on / off live (off = the views are left to the game, no jitter; the units keep their resources). `Alt+F5` (`key_mv_drawids`) per-draw motion vectors on / off live (`mv_objects` 2 <-> 0, main view and mirrors; off drops every draw record and marks the draw ids invalid, so pass B uses the camera path from diff --git a/docs/KEYS.md b/docs/KEYS.md index 245cc5f..6aebd05 100644 --- a/docs/KEYS.md +++ b/docs/KEYS.md @@ -43,11 +43,27 @@ menu and the garage / truck dealer screens, before a save is loaded). |-----|-------------| | `Delete` | Open / close the menu | | `Up` / `Down` | Select a row (hold to scroll) | -| `Left` / `Right` | Change the selected row. Number rows step and repeat while held; switches, the mode, the profile and the model change once per press | - -- **The game does not see these 5 keys while the menu is open** — the arrow keys steer, accelerate and brake in the - default ETS2 / ATS layout, so the truck does not move while you change a value. When the menu is closed the keys go to - the game as usual (the arrow keys do nothing for the mod then). +| `Left` / `Right` | Change the selected row. Number rows step and repeat while held; switches, the mode, the profile and the model change once per press. On a group row (`Panel settings`, `FPS counter settings`) `Right` opens the group, `Left` closes it | + +- **Two groups keep the list short** (v0.10.3): **Panel settings** (`Panel position X`, `Panel position Y`, `Panel size`, + `Panel VR depth`, `Panel faces you (VR)`, `Menu keys`) and **FPS counter settings** (`FPS counter lock`, `FPS counter X`, + `FPS counter Y`, `FPS counter size`; the `FPS counter` on / off row itself stays in the main list, right above the + group). Both are **closed every time the menu opens** (the value shows `...`): select the group row and press `Right` to + show its rows (`shown`), `Left` on the group row hides them again. `Up` / `Down` skip the rows of a closed group, and + the panel gets shorter while a group is closed. If the menu was closed on a row inside a group, it reopens on that + group's row. The group rows hold no setting (nothing to save or reset). +- **The line at the bottom** names the menu keys by their keyboard key only (`Up / Down select Left / Right change + Delete close hold: rebind`), whatever wheel buttons are bound too; it is the same on every row (a running hold shows + its bar in the row itself). With long key names the rebind hint is shortened or left out so the line fits. + +- **The game gets no keys and no wheel / gamepad buttons at all while the menu is open** (v0.10.2; before only these 5 + keys were hidden) — the arrow keys steer, accelerate and brake in the default ETS2 / ATS layout, and a key held for + [hold to bind](#bind-a-key-in-the-menu) must not honk the horn or change the camera. Steering, pedals and other axes + still reach the game. `Escape` / pause and every game key are off too: **close the menu first**. Key and button + releases always reach the game. When the menu is closed every key goes to the game as usual (the arrow keys do + nothing for the mod then). +- **Bind a key in the menu:** hold a key or a wheel button on a row for 5 s, see + [Bind a key in the menu](#bind-a-key-in-the-menu). - **Every row names its hotkey**, so you can learn the keys from the menu. The hotkeys keep working while the menu is open, and the menu shows their changes at once. Each change logs and beeps like its key. - The selected row shows a description under the list, in plain words: what the row does, when you would change it, and @@ -60,16 +76,48 @@ menu and the garage / truck dealer screens, before a save is loaded). panel is tiring to look at. **Panel faces you (VR)** (on by default, `menu_vr_face`): moved off the centre, the panel turns towards your eye like a real screen and keeps its size from every angle; off = a flat picture. In VR the panel and the fps box are drawn on top of the game's own menu (garage / truck dealer screens) once the mod has confirmed where the - game hands each eye picture on (a few frames after the menu opens). + game hands each eye picture on (a few frames after the menu opens). **v0.10.3, `menu_vr_layer = 1` (default):** in VR + the panel and the fps box are separate OpenXR quad layers the headset's compositor places itself -- steady (no swimming + with the reprojection), the panel 1 m (default) and the fps box 0.8 m away, never covered by the game's menus. There + **Panel VR depth** is the panel's real distance, shown in metres (`menu_vr_dist`, 0.30 - 3.00 m in 5 cm steps; the panel + keeps its size, only its depth changes), and **Panel faces you (VR)** turns the panel -- and the fps box while it + follows your head -- towards you as a true 3-D layer (off = parallel to your view, a flat picture seen at an angle). + With `menu_vr_layer = 0` (the panel drawn into the picture; also the automatic fallback when the layers are not + possible) **Panel VR depth** is the inward shift in px (`menu_vr_depth`) as above. - **FPS counter** (on / off), **FPS counter X / Y, FPS counter size**: a small live fps box: the fps and the frame time as text with a dark outline, no background (`60 fps` / `16.7 ms`, updated twice a second) that stays on screen also while the menu is closed, in flat and in VR (both eyes + the desktop mirror). Flat and VR each keep their own position (`fps_show`, `fps_x`, `fps_y`, `fps_scale`, - `fps_vr_x`, `fps_vr_y`, `fps_vr_scale` in `dlaa.ini`); off, it costs nothing. **FPS counter size** goes from `0.2` to + `fps_vr_x`, `fps_vr_y`, `fps_vr_scale` in `dlaa.ini`); off, it costs nothing. On, its GPU cost is measured and shown in + the row's cost column, per frame (every picture it is drawn into that frame together). **FPS counter size** goes from `0.2` to `3.0` (flat default `1.0`; VR default `0.3`, a saved `fps_vr_scale` keeps its size). +- **FPS counter lock** (v0.10.3, VR only, greyed in flat): `Follow head` (default) = the fps box moves with the headset; + `Fixed in cab` = it stays at one spot in the cab, 0.8 m from your seat position, like a cab instrument (`fps_vr_lock` in + `dlaa.ini`). While fixed, **FPS counter X / Y** turn it around you in degrees (X + = right, Y + = down) and **FPS counter + size** is its size at 0.8 m. It follows the headset again by itself while the game's VR view poses are not available. +- **Mirror DLAA** (v0.10.2) has seven states, `Left` / `Right` step through them (wrapping around): `off` -> `1 mirror + (largest)` -> `1 mirror, camera` -> `2 mirrors (largest)` -> `2 mirrors, camera` -> `all mirrors` -> `all, camera + motion`. `1 mirror` keeps DLAA only on the largest mirror picture (the main mirror next to you), `2 mirrors` on the two + largest, `all` on every mirror. Without `camera` each moving part (traffic, wheels) moves exactly in the glass (about + 0.4 ms per mirror in VR); with `camera` the mirror uses the camera motion only: the cheapest per mirror (about 0.15 ms), + but moving traffic can ghost in the glass. The row sets `mirror_dlaa` plus, for the mode you are in, `mirror_vr_mode` + (VR) or `mirror_flat_mode` (flat), `mirror_vr_views` and `mirror_mv`: `1 mirror` = mode 2 with `mirror_vr_views = 1`, + `2 mirrors` = mode 2 with `mirror_vr_views = 2` (each with `mirror_mv = parts`, or `camera` for the `, camera` state), + `all mirrors` = mode 1 with `mirror_mv = parts`, `all, camera motion` = mode 4; `off` = `mirror_dlaa` off (the mode + stays). `mirror_mv` is one key for VR and flat. Beeps: 1 short beep = 1 mirror, 2 = 2 mirrors, 3 = all; high (1200 Hz) + = per-part motion, lower (800 Hz) = camera motion only; one low tone = off. `Alt+F6` still switches mirror DLAA on / off + with the state it had; a `dlaa.ini` / profile value that is none of the seven shows as it is (`3 largest`, `3 largest, + camera`, `all, every 2nd frame`, `all, 2nd fr., camera`, `off (mode 0)`) and `Left` / `Right` go to the nearest state on + that side. - **Save to dlaa.ini** (or `Shift+F12`) writes the live values, and the panel position once you changed it - (`menu_x`, `menu_y`, `menu_scale`, `menu_vr_x`, `menu_vr_y`, `menu_vr_scale`, `menu_vr_depth`, `menu_vr_face`) and the fps box once you + (`menu_x`, `menu_y`, `menu_scale`, `menu_vr_x`, `menu_vr_y`, `menu_vr_scale`, `menu_vr_depth`, `menu_vr_dist`, `menu_vr_face`) and the fps box once you changed it (the 7 `fps_*` keys), keeping every other line. The `Mode` row saves itself at once, like `End`. +- **Reset to defaults** puts every row back to the fresh-install values, live and in `dlaa.ini` (the keys are removed + from the file; hotkeys and other lines stay). v0.10.3: **hold `Right` 5 s** on the row (the menu right key, keyboard or + its wheel button; the time is `bind_hold_ms`): the Hotkey column reads `hold Right 5 s`, fills the same progress bar as + a bind hold, then resets once (`reset done` until you let go; press and hold again for another reset). Let go earlier = + nothing happens; `Left` and a plain tap of `Right` do nothing. It beeps like Save (rising two-tone = done, one long low tone = the file + could not be written). - **GPU line and GPU cost column.** Under the title the panel shows what the GPU spends per frame, measured live and refreshed once a second: `game` (the game's own GPU frame, without the mod), `this mod` split into its parts (DLAA/DLSS itself, per-part motion, camera motion, see-through depth, mirrors, sharpen, copies; in VR one line per eye) and the fps. @@ -80,6 +128,52 @@ menu and the garage / truck dealer screens, before a save is loaded). menu is open and off again when it closes (they stay on with `debug = 1`). - The menu costs nothing while it is closed. +## Bind a key in the menu + +(v0.10.2) Instead of editing `dlaa.ini`, open the menu, select a row and **hold the new key (or wheel / gamepad button, +or D-pad direction) for 5 seconds**. The Hotkey column shows a filling bar, one square per second, e.g. `hold ■■■□□ F5`; when it is full +the mod beeps twice (rising, like Save), the row's hotkey is the new key at once and the `key_` line in +`dlaa.ini` is rewritten (every other line stays). The log says what changed, e.g. +`hotkey key_sharpen_up = Shift+F8, Wheel5 (bound in the menu: held Wheel5 for 2.0 s on row "Sharpen strength" step 2/2; was "Shift+F8")`. + +- **The hold:** exactly one key or one button must be held the whole time. It counts from the moment you press it: a key + that was already down when you reached the row does not count, and a hold ends without binding if you let go early or + press a second key / button. Anything already held when the menu opened (a pedal key, an engaged H-shifter gear) is + ignored until you let go of it once, so it does not block a bind. `Shift`, `Ctrl` and `Alt` do not count as keys: they are + read when the bar is full, so holding `Ctrl` + `F5` binds `Ctrl+F5`. Only keys from the key list in + [Change a key](#change-a-key) can be bound (not `Escape`, `Caps Lock`, the Windows keys or the mouse). The time is + `bind_hold_ms` in `dlaa.ini` (default `5000`, `500` to `10000`). +- **Keyboard and wheel stay separate:** a key replaces the row's keyboard key and keeps its wheel button; a wheel button + replaces the wheel button and keeps the key (`key_menu = Delete, Wheel10` + holding `Wheel12` = `Delete, Wheel12`). +- **`Backspace` clears:** holding `Backspace` sets the row's hotkey to `none` (keyboard key and wheel button; one low beep). + So `Backspace` itself cannot be bound in the menu (it can in `dlaa.ini`). +- **Taken from another hotkey:** if the key (with the same `Shift` / `Ctrl` / `Alt`) or the button already belongs to + another action, it is taken away from that one (its key or button becomes empty, also written to `dlaa.ini`); the row + shows `taken from key_...` for 3 seconds and the log names it. +- **Rows with more than one key** ask for them one after the other: `DLAA model` 4 holds (model 1, 2, 3, 4); `Sharpen + strength`, `Sharpen width`, `Texture sharpness`, `Cut-out texture sharpness` and `DLAA area (VR)` 2 holds (minus, then + plus). The Value column says which step comes next (`step 2/2: plus`); let go and hold the next key. Moving to another + row or closing the menu ends the sequence; the steps already done stay bound. +- **The held key still does its old job once** when you press it (holding `Shift+F11` on a row switches DLAA off first, + holding a key that changes a value changes it once), like any hotkey. Pick a key, wait for the beeps, done. +- **The menu's own keys** (`Delete`, `Up`, `Down`, `Left`, `Right`, or whatever they are bound to, also with modifiers, and + their wheel buttons) cannot be bound on the normal rows: holding `Down` there keeps scrolling. They are set on the + **Menu keys** row instead. +- **Menu keys row** (v0.10.3: the last row of the **Panel settings** group, open it with `Right` first): the value is the + open key, the Hotkey column shows up / down / left / right (keyboard keys only; the full bindings, wheel buttons + included, are in `dlaa.ini` and the log). Five holds in a row: **open / close, up, down, left, right**. On this row: + - the open key (`Delete`) does **not** close the menu (it may be what you are binding); close with the `Close menu` row or + move off the row first; + - a **short tap** (under 0.3 s) of `Up` / `Down` moves to the next row when you let go (and ends the sequence); held + longer, `Up` / `Down` are bound instead. Scrolling with `Up` / `Down` held stops on this row; `Left` / `Right` do + nothing here; + - `Backspace` does not clear the menu keys, and a hold that would take the **only** open key away from `key_menu` is + refused (one long low tone): the menu must stay reachable. Bind a new open key in step 1 first. +- **Rows without a hotkey** (OFXR Bridge, the panel and fps counter rows, the two group rows, Reset, Close) ignore a hold + (the Reset row's hold of the menu `Right` key is its own reset action, not a bind). +- While the menu is open the game gets no keys or buttons (see [The tuning menu](#the-tuning-menu)), so a 2-second hold of + the horn button only binds it, the truck does not honk. + ## User keys — Shift + F-key (Ctrl and Alt NOT held) | Key | Does | Beep | @@ -103,6 +197,9 @@ Model select is direct: pressing the model that is already active just re-beeps `Alt+F7` state) and `perf_profile` (the `Alt+F9` state) and leaves every other line of `dlaa.ini` untouched. v0.10.0: `dlss_preset`, `dlaa_area` and `mirror_dlaa` are only written when you set them yourself (in `dlaa.ini` or with their own key) -- a value that only comes from the performance profile is not written, so the next profile still moves it. +v0.10.2: the same for `mirror_vr_mode` / `mirror_flat_mode` (set in `dlaa.ini` or with the menu's Mirror DLAA row); +`mirror_vr_views` is written with `mirror_vr_mode`, and with `mirror_flat_mode` when that is `2`; `mirror_mv` (`parts` / +`camera`) is written with either mode. The menu's Reset row removes all four. ## Texture sharpness keys — Ctrl+F1 / Ctrl+F2 @@ -218,8 +315,10 @@ the save failed. ## Change a key -Put a `key_` line in `dlaa.ini` (next to `dinput8.dll`, read when the game starts). The value is -zero or more modifiers `Shift`, `Ctrl`, `Alt` joined with `+`, then one key. Not case-sensitive, spaces are +Put a `key_` line in `dlaa.ini` (next to `dinput8.dll`, read when the game starts), or bind it in the game: +[Bind a key in the menu](#bind-a-key-in-the-menu). The value is +zero or more modifiers `Shift`, `Ctrl`, `Alt` joined with `+`, then one key (and optionally a wheel / gamepad button after +a comma, see [below](#wheel-gamepad-and-joystick-buttons)). Not case-sensitive, spaces are ignored. `none` (or an empty value) turns the action off. A value that is not understood is logged (with `debug = 1`) and the default stays. Write the binding alone on the line, no comment after it. @@ -266,3 +365,47 @@ Keys: `F1`-`F24`, `A`-`Z`, `0`-`9`, `Home`, `End`, `Insert`, `Delete`, `PageUp`, If two actions get the same combination the log warns and both fire. At most one of the user keys (models, area, sharpen, width, texture LOD bias, save) acts per frame. + +### Wheel, gamepad and joystick buttons + +Every action can also be bound to a **button or the D-pad of a wheel / gamepad / joystick**, for example to open and drive +the tuning menu from a Thrustmaster wheel. Put a second binding after a **comma**: `key_menu = Delete, Wheel10` opens the +menu with `Delete` **or** wheel button 10. A value may hold one keyboard binding, one controller binding, or one of each. + +- `Wheel1` … `Wheel128` = button 1 … 128 of the controller (DirectInput button index N−1 in the game's data format; + the same N as the game's `bN` button id in `game.log`). +- `WheelUp`, `WheelDown`, `WheelLeft`, `WheelRight` = the D-pad (the first POV hat). A diagonal counts for both of its + neighbours (up-right = `WheelUp` and `WheelRight`). +- Controller bindings ignore `Shift` / `Ctrl` / `Alt` (held or not does not matter); `Shift+Wheel3` is not accepted. +- Not case-sensitive, spaces ignored. `none` still turns the whole action off. If one part is not understood the whole + line is ignored (logged) and the default stays. +- A comma right after a `+` or at the start of a binding is the comma **key** (`Shift+,` still works). + +**Finding the button number:** set `debug = 1`, start the game and press each button once. The first press of every +button / D-pad direction is written to `dlaa_inject.log`, e.g. +`controller 'Thrustmaster T300RS Racing Wheel': button 10 pressed -- bind it in dlaa.ini as Wheel10` +(at most 24 such lines per run). The game's own `game.log` lists the same numbers as `[di8] Button input 'b10'` for the +device. `WheelN` fires on button N of **every** DirectInput controller the game opens: a T300RS wheel and a shifter both +have a button 1, so pick a number your shifter / button box does not use (or check the log lines, they name the device). + +If a shifter or a second controller shares button numbers, set `controller_name = T300` in `dlaa.ini` (part of the +device name as `game.log` / the mod log shows it, not case-sensitive). Then only controllers whose name contains that text +are read; every other controller goes to the game untouched (the log says `DirectInput: controller '...' not tapped`). +Empty (the default) = every controller. + +Only controllers the game opens through DirectInput are seen (wheels, most joysticks and button boxes; the log lists each +one as `DirectInput: controller device wrapped`). XInput-only gamepads (Xbox controllers) are not. + +While the tuning menu is open the game sees no controller button and no D-pad at all (v0.10.2; before only the 5 menu +bindings were hidden): buttons read as released, the D-pad as centred, so the D-pad does not also change the game's camera +or menu. Steering, pedals and other axes still pass. The press that **opens** the menu does reach the game (the menu is +still closed at that moment), as with `Delete`: bind `key_menu` to a button the game does not use. Releases always reach +the game. You can also bind the buttons in the menu itself: [Bind a key in the menu](#bind-a-key-in-the-menu). + +``` +key_menu = Delete, Wheel10 +key_menu_up = Up, WheelUp +key_menu_down = Down, WheelDown +key_menu_left = Left, WheelLeft +key_menu_right = Right, WheelRight +``` diff --git a/docs/dlaa.ini.sample b/docs/dlaa.ini.sample index 9c223f3..6d1f5b1 100644 --- a/docs/dlaa.ini.sample +++ b/docs/dlaa.ini.sample @@ -5,7 +5,8 @@ ; v0.9.0 tex_lod_bias, v0.10.0 tex_lod_bias_cutout, mv_objects, mirror_dlaa, dlaa_pre_tonemap and perf_profile) can be written back with Shift+F12, ; which rewrites this file in place and keeps every other line. v0.10.0: the in-game tuning menu (Delete) changes the same ; values and its Save row does the same as Shift+F12 (+ the menu_* panel keys once you moved the panel, + the fps_* box -; keys once you changed the fps box there). +; keys once you changed the fps box there). Its Reset to defaults row puts all of them back to the built-in defaults, live, +; and REMOVES those keys from this file (the key_* hotkeys and every other line stay). # ---- v0.10.0 PERFORMANCE PROFILE (Alt+F9 cycles high -> medium -> low live: 1 / 2 / 3 beeps; Shift+F12 saves it here) ---- # A profile only gives a DEFAULT to the keys in the table below. Any of those keys you set in this file -- or change with its own @@ -150,7 +151,19 @@ debug = 0 # low: 4) # mirror_flat_mode = 1 # v0.10.0 phase 9: with mirror_vr_mode = 2, how many mirror pictures per frame keep their DLAA (1..8, the largest ones) +# (also mirror_flat_mode = 2). v0.10.2: the tuning menu's Mirror DLAA row sets it (1 mirror = 1, 2 mirrors = 2) together with +# mirror_vr_mode / mirror_flat_mode (all = 1, all camera motion only = 4); Shift+F12 / the Save row writes them. # mirror_vr_views = 2 +# v0.10.2: the motion of the mirrors that modes 1, 2 and 3 handle (one key for VR and flat): parts = each moving part (traffic, +# wheels) gets its own motion in the glass (default; about 0.4 ms per mirror in VR), camera = camera motion only, no per-part +# ids (about 0.15 ms per mirror; moving traffic can ghost in the glass). Mode 4 is always camera motion. The tuning menu's +# Mirror DLAA row (Left / Right) cycles 7 states: +# off -> 1 mirror -> 1 mirror, camera -> 2 mirrors -> 2 mirrors, camera -> all mirrors -> all, camera motion -> off +# 1 mirror = mode 2, mirror_vr_views 1, parts 1 mirror, camera = mode 2, mirror_vr_views 1, camera +# 2 mirrors = mode 2, mirror_vr_views 2, parts 2 mirrors, camera = mode 2, mirror_vr_views 2, camera +# all mirrors = mode 1, parts all, camera motion = mode 4 +# Shift+F12 / the Save row writes mirror_mv with the mode; the Reset row removes it. +# mirror_mv = parts # ---- v0.10.0 phase 8 PERFORMANCE (each one has the fast setting as its default; the other value is the phase-7 behaviour) ---- # with debug = 1 the log gets "perf eye N" lines every 600 frames: the GPU time of every part of the mod per eye (NGX itself @@ -166,6 +179,12 @@ debug = 0 # the old camera-motion estimate (64 small copies per frame inside the game's drawing) stops while the per-draw consensus has # been healthy for this many frames, and comes back by itself when it fails; 0 = always run it (before phase 8) # mv_medoid_drop = 120 +# v0.10.2: how many failed consensus frames IN A ROW that count is allowed to have before it starts again from 0 (0..100, +# default 2; 0 = a single failed frame restarts it, before v0.10.2). A failed frame keeps the last frame's camera motion either +# way, so a short hiccup costs nothing -- with 0 the old estimate hardly ever stopped (in VR ~0.35 ms per frame for nothing). +# The "perf cuts" log line counts the failure runs by length (1 / 2 / 3-5 / 6+): set it to 0 if you see smearing right after +# fast head turns / camera cuts, raise it (3..5) only if the 3-5 count is large and the picture stays clean +# mv_cons_fail_tol = 2 # 1 = the big per-frame helper pictures (depth copy, draw ids, see-through depth) are shared between frames in flight -- about # 1 GB less video memory in VR, 200 MB in flat (default); 0 = one set per queued frame (before phase 8) # mv_slot_pool = 1 @@ -194,6 +213,11 @@ debug = 0 # mv_area_scissor = 1 # the margin around the anti-aliased area in pixels (0..1024); -1 = dlaa_area_feather + 32 (default) # mv_area_margin = -1 +# v0.10.2, VR: the part of that work that runs when the eye is already known (the "which vehicle does this plate sit on" search: +# p-count / p-col / p-vote in the "perf eye" lines) covers only THAT eye's anti-aliased area plus the margin -- about 2/3 of the +# area of both eyes' rects together at dlaa_area 40 (default 1); 0 = both eyes' rects (v0.10.1). Flat: no difference (one rect). +# Needs mv_area_scissor = 1. The "perf view" log line shows what each step covers. +# mv_area_clip = 1 # the see-through depth (wires, fences, glass) at: 0 = half resolution in VR, full resolution in flat (default), 1 = full # resolution (before phase 9), 2 = half resolution (about 4x cheaper; a wire one pixel wide can lose a few pixels of its own motion) # mv_fwd_depth_res = 0 @@ -392,22 +416,38 @@ debug = 0 # ---- v0.10.0 TUNING MENU panel (Delete opens it; its Panel rows change these live, Shift+F12 / the Save row writes them # here once you moved the panel in the menu) ---- -# Flat: left / top edge of the panel in % of the picture width / height (0..90), size 0.5..2.0 (1 = 720 px wide at a +# Flat: left / top edge of the panel in % of the picture width / height (0..90), size 0.3..2.0 (1 = 720 px wide at a # 1080 p picture, scales with the picture height) # menu_x = 2 # menu_y = 8 # menu_scale = 1.0 # VR: the panel CENTRE relative to the eye's optical centre, in % of the eye width / height (-50..50; negative y = up), -# size 0.5..2.0 (1 = 54 % of the eye width), and the inward shift per eye in px (0..200: the left eye's panel moves +# size 0.3..2.0 (1 = 54 % of the eye width), and the inward shift per eye in px (0..200: the left eye's panel moves # right, the right eye's left, so the panel sits nearer than infinity -- raise it if the panel is tiring to look at) # menu_vr_x = 0 # menu_vr_y = -5 # menu_vr_scale = 1.0 # menu_vr_depth = 12 +# VR layer (v0.10.3, menu_vr_layer = 1): the panel's distance in cm (30..300). The panel keeps the same size at every +# distance (it grows with it), only its stereo depth changes. The menu's "Panel VR depth" row sets it in 5 cm steps there +# (menu_vr_depth above is the in-picture shift, used with menu_vr_layer = 0). +# menu_vr_dist = 100 # VR (v0.10.0 phase 16): 1 = the panel turns to FACE you when it is moved off the centre (a tilted 3-D panel that keeps the # same apparent size from every angle; menu_vr_x / menu_vr_y / menu_vr_scale / menu_vr_depth keep their meaning: they place -# the panel's centre), 0 = a flat picture as before. The menu's "Panel faces you (VR)" row switches it live. +# the panel's centre), 0 = a flat picture as before. With menu_vr_layer = 1 (v0.10.3) also the fps box while it follows +# the headset; the compositor turns the layers. The menu's "Panel faces you (VR)" row switches it live. # menu_vr_face = 1 +# VR (v0.10.3): 1 = the panel and the fps box are separate OpenXR QUAD LAYERS: the headset's compositor shows them on top of +# the game picture itself, so they stay rock-steady (no swimming with the reprojection), sit at a real distance (the +# panel menu_vr_dist, the fps box 0.8 m) and are never covered by the game's own menus. menu_vr_x / menu_vr_y / +# menu_vr_scale, menu_vr_face and the fps_vr_* keys keep their meaning; menu_vr_depth is then unused (the depth is the +# real distance, menu_vr_dist). 0 = drawn into the eye picture as before (menu_vr_depth, no menu_vr_dist). The mod falls +# back to the picture by itself when the layers are not possible (no OpenXR session, the runtime refuses them). +# menu_vr_layer = 1 +# v0.10.2 HOLD TO BIND: hold a key or a wheel / gamepad button this long (ms, 500..10000) on a menu row and it becomes that +# row's hotkey (written to the key_* line below at once; Backspace held = none). While the menu is open the game gets no +# keys and no buttons at all (axes / pedals still pass): close the menu before you press Escape or drive. +# bind_hold_ms = 5000 # ---- v0.10.0 FPS BOX: a small live fps / frame-time box ("60 fps" / "16.7 ms", updated twice a second), shown also # while the menu is closed. The menu's FPS counter rows switch and move it live; Shift+F12 / the Save row writes these @@ -420,17 +460,29 @@ debug = 0 # fps_y = 1 # fps_scale = 1.0 # VR: the box CENTRE relative to the eye's optical centre, in % of the eye width / height (-50..50; negative y = up), -# size 0.2..3.0 (1 = 8 % of the eye width; default 0.3 = about 2.4 %). It uses the same inward shift as the panel -# (menu_vr_depth). +# size 0.2..3.0 (1 = 8 % of the eye width; default 0.3 = about 2.4 %). Drawn into the picture it uses the same inward +# shift as the panel (menu_vr_depth); as a VR layer (menu_vr_layer = 1) it sits 0.8 m away. # fps_vr_x = 0 # fps_vr_y = -25 # fps_vr_scale = 0.3 +# v0.10.3 VR: 0 = the box follows the headset (as above), 1 = FIXED IN THE CAB: it stays at one spot 0.8 m from your seat +# position (the origin of the game's VR tracking space) and you look at it like at a cab instrument. fps_vr_x / fps_vr_y +# then are DEGREES around you (x + = right, y + = down; default -25 = 25 degrees up) and fps_vr_scale the size it has at +# 0.8 m. No inward shift (each eye sees it from its own position). Falls back to following the headset while the game's +# OpenXR view poses are not available. The menu's FPS counter lock row switches it live. +# fps_vr_lock = 0 # ---- Hotkeys ------------------------------------------------------------------------------------------- # key_ = [Shift+][Ctrl+][Alt+]Key, or none to disable the action. The values below are the defaults: # just edit the value. Keys: F1-F24, A-Z, 0-9, Home, End, Insert, Delete, PageUp, PageDown, Up, Down, Left, Right, # Space, Tab, Backspace, Enter, Pause, Numpad0-Numpad9, NumpadAdd, NumpadSubtract, NumpadMultiply, NumpadDivide, # NumpadDecimal, [ ] ; ' , . / \ - = ` Modifiers must match exactly; put nothing after the value on the line. +# v0.10.1: a wheel / gamepad button or D-pad can be added after a comma: Wheel1..Wheel128 (button N, see the +# "controller: button N pressed" lines in the log with debug = 1) or WheelUp / WheelDown / WheelLeft / WheelRight, e.g. +# key_menu = Delete, Wheel10 or key_menu_up = Up, WheelUp (docs/KEYS.md, "Wheel, gamepad and joystick buttons") +# controller_name: only read the controllers whose name contains this text (not case-sensitive), e.g. T300 when a shifter +# shares the wheel's button numbers. Empty (default) = every DirectInput controller the game opens. +# controller_name = # Mode cycle DLAA -> DLSS -> off (saved to the `mode` key at once) key_mode_cycle = End # DLAA model 1..4 = preset default / E / F / M @@ -480,7 +532,8 @@ key_mv_dump = Alt+F8 # Performance profile high -> medium -> low (perf_profile) key_perf_profile = Alt+F9 # v0.10.0 tuning menu: open / close, and (only while it is open) select a row up / down and change it left / right. -# The game does not see these 5 keys while the menu is open; closed, they belong to the game. +# v0.10.2: the game sees no key / button at all while the menu is open; closed, they belong to the game. The menu's +# Menu keys row binds these 5 by holding the new keys (docs/KEYS.md, "Bind a key in the menu"). key_menu = Delete key_menu_up = Up key_menu_down = Down diff --git a/docs/images/tuning-menu.png b/docs/images/tuning-menu.png index adc62f67c69c5c009460e3f47c9e7a6ca6e09dbd..25767fd36ad4763b3aa4a99a81a02805a9211e17 100644 GIT binary patch literal 661936 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

QEDha{-VGcY!tioT;kmE?e%)eRA3v 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%0DW4|mDm|+bJ49cmVy#d?<60!*)5DpO>772Ne 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
m738UM3K)xL^4rjGgIj`K_`tn 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
qrA?kU-4y(Wj!^rD4 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

>AB1k9a>%pe=T!VWG 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

qnbYiZV0L{}9fk0F#~X8__hh*F22qCk41G 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

)Wu;=8=WmH=>yUEzo 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

BFY2 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

    RqKag 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

    hn}L3J7GusG2X#Z| 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

    P7O;Z{w;gRj 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

    t)f6qR_SBzlG% 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%0D8B#&sZkj!4R+HK>5uN6+yeXbG;RUml-8@B-cq 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 M8jsIf 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

    }{=XZhn7x3zX)-fsk3fV_eZik`H-+;GIc-(= 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 bgxniWjz+Y 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 diff --git a/src/dinput_wrap.cpp b/src/dinput_wrap.cpp index c9d5b76..e3bbe49 100644 --- a/src/dinput_wrap.cpp +++ b/src/dinput_wrap.cpp @@ -1,56 +1,298 @@ -// KeySwallow implementation (v0.10.0). See dinput_wrap.h. +// KeySwallow implementation (v0.10.0; v0.10.1 + the controller tap; v0.10.2: the open menu hides ALL keys / buttons). +// See dinput_wrap.h. #define DIRECTINPUT_VERSION 0x0800 #include "dinput_wrap.h" #include #include +#include #include #include +#include #include "log.h" namespace { -// ---- which keys -------------------------------------------------------------------------------------------------- -constexpr int kMaxSwallow = 8; +// ---- v0.10.1 controller tap: per-device state slots (input thread writes, render thread reads) --------------------- +// One slot per wrapped controller (max 8; a 9th is still wrapped for the menu's hiding, its presses are not seen). Every field +// is an atomic: the game's input thread publishes in GetDeviceState / GetDeviceData, PollKeys reads via ControllerState +// on the render thread. No locks, nothing blocks in the device methods (the discovery log lines are written by the render +// thread). The slot is claimed when the device is wrapped and freed at the wrapper's last Release. +constexpr int kMaxJoyDevs = 8; +constexpr DWORD kNoOfs = 0xFFFFFFFFu; +constexpr ULONGLONG kJoyStaleMs = 500; // a device the game has not read for this long counts as all up +constexpr int kJoyDiscoveryMax = 24; // "controller: button N pressed" lines per run +constexpr int kJoySetupLogMax = 24; // wrap / data-format lines per run (a game re-creating devices cannot spam) -inline bool VkSwallowed(int vk, const int* vks, int n) { - for (int i = 0; i < n; ++i) if (vks[i] == vk) return true; - return false; +struct JoySlot { + std::atomic state{0}; // 0 free, 1 being set up / torn down, 2 live (ControllerState reads only 2) + std::atomic btn[4]; // buttons down now: bit (i & 31) of word (i >> 5) = button i + 1 + std::atomic latch[4]; // presses since the last ControllerState (a tap between two Presents counts) + std::atomic pov{0}; // POV direction bits now (1 up, 2 right, 4 down, 8 left) + std::atomic povLatch{0}; + std::atomic seen[4]; // pressed at least once on this device (discovery log) + std::atomic seenPov{0}; + std::atomic fresh[4]; // first presses not logged yet (the render thread logs + clears them) + std::atomic freshPov{0}; + std::atomic stamp{0}; // GetTickCount64 of the game's last successful read, 0 = none / unacquired + char name[64]; // product name (written before state 2; logged with %.63s) +}; +JoySlot g_joy[kMaxJoyDevs]; +std::atomic g_joyDiscLogs{0}; +std::atomic g_joySetupLogs{0}; +std::atomic g_joyWraps{0}; + +// The live part of a slot -> all up, not read (a failed read, Unacquire, a new data format). +void JoyClearLive(JoySlot& s) { + for (int w = 0; w < 4; ++w) { s.btn[w].store(0, std::memory_order_relaxed); s.latch[w].store(0, std::memory_order_relaxed); } + s.pov.store(0, std::memory_order_relaxed); + s.povLatch.store(0, std::memory_order_relaxed); + s.stamp.store(0, std::memory_order_release); +} +JoySlot* JoyClaim(const char* name) { + for (JoySlot& s : g_joy) { + int expect = 0; + if (!s.state.compare_exchange_strong(expect, 1, std::memory_order_acq_rel)) continue; + JoyClearLive(s); + for (int w = 0; w < 4; ++w) { s.seen[w].store(0, std::memory_order_relaxed); s.fresh[w].store(0, std::memory_order_relaxed); } + s.seenPov.store(0, std::memory_order_relaxed); + s.freshPov.store(0, std::memory_order_relaxed); + snprintf(s.name, sizeof(s.name), "%s", name); + s.state.store(2, std::memory_order_release); + return &s; + } + return nullptr; +} +void JoyFree(JoySlot* s) { + if (!s) return; + s->state.store(1, std::memory_order_release); + JoyClearLive(*s); + s->state.store(0, std::memory_order_release); } -// DirectInput key code (DIK_*) of a virtual key: the scan code, + 0x80 for an extended key. The navigation block keys -// map to their numpad twins without the extended flag, so they are listed (DIK_UP 0xC8 ... DIK_DELETE 0xD3). -DWORD DikOfVk(int vk) { - switch (vk) { - case VK_UP: return 0xC8; - case VK_DOWN: return 0xD0; - case VK_LEFT: return 0xCB; - case VK_RIGHT: return 0xCD; - case VK_DELETE: return 0xD3; - case VK_INSERT: return 0xD2; - case VK_HOME: return 0xC7; - case VK_END: return 0xCF; - case VK_PRIOR: return 0xC9; - case VK_NEXT: return 0xD1; - case VK_DIVIDE: return 0xB5; - default: break; - } - const UINT sc = MapVirtualKeyW((UINT)vk, MAPVK_VK_TO_VSC_EX); - if (!sc) return 0; - DWORD d = sc & 0xFFu; - if ((sc & 0xFF00u) == 0xE000u || (sc & 0xFF00u) == 0xE100u) d |= 0x80u; + +// POV value -> direction bits (1 up, 2 right, 4 down, 8 left). Centred = LOWORD 0xFFFF (DirectInput: 0xFFFFFFFF), else +// hundredths of a degree clockwise from up. 8-way sectors: a cardinal (0 / 9000 / 18000 / 27000) is only itself, a diagonal +// (4500 = up-right ...) sets both neighbours; a continuous hat within 22.5 deg of a cardinal is only that cardinal. +unsigned PovDirs(DWORD v) { + if ((v & 0xFFFFu) == 0xFFFFu) return 0; + const DWORD a = v % 36000u; + unsigned d = 0; + if (a <= 6750u || a >= 29250u) d |= 1u; + if (a >= 2250u && a <= 15750u) d |= 2u; + if (a >= 11250u && a <= 24750u) d |= 4u; + if (a >= 20250u && a <= 33750u) d |= 8u; return d; } -// The DIK codes to swallow now (0 = none). -int SwallowDiks(DWORD* diks) { - int vks[kMaxSwallow]; - const int n = MenuSwallowKeys(vks, kMaxSwallow); - int m = 0; - for (int i = 0; i < n; ++i) { - const DWORD d = DikOfVk(vks[i]); - if (d && d < 256) diks[m++] = d; - } - return m; + +const char* DevTypeName(DWORD t) { + switch (t) { + case DI8DEVTYPE_DEVICE: return "device"; + case DI8DEVTYPE_JOYSTICK: return "joystick"; + case DI8DEVTYPE_GAMEPAD: return "gamepad"; + case DI8DEVTYPE_DRIVING: return "driving (wheel)"; + case DI8DEVTYPE_FLIGHT: return "flight"; + case DI8DEVTYPE_1STPERSON: return "1st-person"; + case DI8DEVTYPE_DEVICECTRL: return "device control"; + case DI8DEVTYPE_SCREENPOINTER: return "screen pointer"; + case DI8DEVTYPE_REMOTE: return "remote"; + case DI8DEVTYPE_SUPPLEMENTAL: return "supplemental (pedals / shifter)"; + default: return "other"; + } +} +void ProductName(const DIDEVICEINSTANCEA& di, char* out, size_t cap) { snprintf(out, cap, "%s", di.tszProductName); } +void ProductName(const DIDEVICEINSTANCEW& di, char* out, size_t cap) { + char u8[MAX_PATH * 3]; + if (!WideCharToMultiByte(CP_UTF8, 0, di.tszProductName, -1, u8, (int)sizeof(u8), nullptr, nullptr)) u8[0] = 0; + snprintf(out, cap, "%s", u8[0] ? u8 : "?"); } +// ---- device read filters (the Tap policy of DevWrap) --------------------------------------------------------------- +// Keyboard: v0.10.2 while the menu is open GetDeviceState clears ALL 256 key bytes and GetDeviceData drops EVERY key-DOWN +// entry (v0.10.0 / v0.10.1: only the 5 menu keys). Key-up entries always pass. +struct KbTap { + void OnFormat(LPCDIDATAFORMAT) {} + void OnActionMap() {} + void OnUnacquire() {} + void OnState(HRESULT hr, DWORD cb, LPVOID data) { + if (SUCCEEDED(hr) && data && cb >= 256 && MenuHidesInput()) // c_dfDIKeyboard: 256 key bytes + memset(data, 0, 256); + } + void OnData(HRESULT hr, DWORD cbObj, LPDIDEVICEOBJECTDATA rg, LPDWORD inOut) { + if (SUCCEEDED(hr) && rg && inOut && *inOut && cbObj >= sizeof(DIDEVICEOBJECTDATA_DX3) && MenuHidesInput()) { + BYTE* const base = reinterpret_cast(rg); + DWORD kept = 0; + for (DWORD i = 0; i < *inOut; ++i) { + const DIDEVICEOBJECTDATA_DX3* e = reinterpret_cast(base + (size_t)i * cbObj); + if (e->dwData & 0x80u) continue; // key DOWN entry: dropped (releases always pass) + if (kept != i) memmove(base + (size_t)kept * cbObj, base + (size_t)i * cbObj, cbObj); + ++kept; + } + *inOut = kept; + } + } +}; + +// v0.10.1 controller (wheel / gamepad / joystick / shifter): taps the button / POV state into its JoySlot, then (v0.10.2) +// hides EVERY button and the POV from the game while the menu is open (v0.10.1: only the menu actions' controller parts); +// axes and sliders are never touched. The layout comes from the game's SetDataFormat: +// the i-th button object in rgodf order is button i (GUID_Button, or a NULL guid with a DIDFT_BUTTON type, which is how +// c_dfDIJoystick / c_dfDIJoystick2 list their buttons), the first GUID_POV / DIDFT_POV object is the hat. Until a +// SetDataFormat is seen the c_dfDIJoystick2 layout is assumed (buttons at DIJOFS_BUTTON(0..127), POV 1 at DIJOFS_POV(0)). +// The layout fields are touched only on the game's input thread(s) (SetDataFormat is legal only while unacquired). +struct JoyTap { + JoySlot* slot = nullptr; + char name[64] = {}; + int nBtn = KeySwallow::kJoyMaxButton; + DWORD btnOfs[KeySwallow::kJoyMaxButton]; + DWORD povOfs = DIJOFS_POV(0); + + explicit JoyTap(const char* product) { + snprintf(name, sizeof(name), "%s", product); + for (int i = 0; i < KeySwallow::kJoyMaxButton; ++i) btnOfs[i] = (DWORD)DIJOFS_BUTTON(i); + slot = JoyClaim(name); + } + ~JoyTap() { JoyFree(slot); } + JoyTap(const JoyTap&) = delete; + JoyTap& operator=(const JoyTap&) = delete; + + int ButtonAt(DWORD ofs) const { + for (int i = 0; i < nBtn; ++i) if (btnOfs[i] == ofs) return i; + return -1; + } + // Publishes the new live state (+ presses for the latch / discovery log) and stamps the read. + void Publish(const uint32_t b[4], unsigned pd, const uint32_t pressed[4], unsigned povPressed) { + JoySlot& s = *slot; + const bool discover = g_joyDiscLogs.load(std::memory_order_relaxed) < kJoyDiscoveryMax; + for (int w = 0; w < 4; ++w) { + s.btn[w].store(b[w], std::memory_order_relaxed); + if (!pressed[w]) continue; + s.latch[w].fetch_or(pressed[w], std::memory_order_relaxed); + if (discover) { + const uint32_t nw = pressed[w] & ~s.seen[w].load(std::memory_order_relaxed); + if (nw) { + const uint32_t first = nw & ~s.seen[w].fetch_or(nw, std::memory_order_relaxed); + if (first) s.fresh[w].fetch_or(first, std::memory_order_relaxed); + } + } + } + s.pov.store(pd, std::memory_order_relaxed); + if (povPressed) { + s.povLatch.fetch_or(povPressed, std::memory_order_relaxed); + if (discover) { + const unsigned nw = povPressed & ~s.seenPov.load(std::memory_order_relaxed); + if (nw) { + const unsigned first = nw & ~s.seenPov.fetch_or(nw, std::memory_order_relaxed); + if (first) s.freshPov.fetch_or(first, std::memory_order_relaxed); + } + } + } + s.stamp.store(GetTickCount64(), std::memory_order_release); + } + + void OnFormat(LPCDIDATAFORMAT f) { + if (!f || !f->rgodf || f->dwObjSize < sizeof(DIOBJECTDATAFORMAT)) return; // keep the previous layout + DWORD ofs[KeySwallow::kJoyMaxButton]; + int nb = 0, total = 0; + DWORD pov = kNoOfs; + const BYTE* const base = reinterpret_cast(f->rgodf); + for (DWORD i = 0; i < f->dwNumObjs; ++i) { + const DIOBJECTDATAFORMAT* o = reinterpret_cast(base + (size_t)i * f->dwObjSize); + const DWORD ty = DIDFT_GETTYPE(o->dwType); + const bool isBtn = o->pguid ? (*o->pguid == GUID_Button) : (ty & DIDFT_BUTTON) != 0; + const bool isPov = o->pguid ? (*o->pguid == GUID_POV) : (ty & DIDFT_POV) != 0; + if (isBtn) { if (nb < KeySwallow::kJoyMaxButton) ofs[nb++] = o->dwOfs; ++total; } + else if (isPov && pov == kNoOfs) pov = o->dwOfs; + } + nBtn = nb; + for (int i = 0; i < nb; ++i) btnOfs[i] = ofs[i]; + povOfs = pov; + if (slot) JoyClearLive(*slot); // new layout: the old state means nothing + if (g_joySetupLogs.fetch_add(1, std::memory_order_relaxed) < kJoySetupLogMax) { + char povTxt[48]; + if (pov != kNoOfs) snprintf(povTxt, sizeof(povTxt), "POV hat at offset %lu", (unsigned long)pov); + else snprintf(povTxt, sizeof(povTxt), "no POV hat (WheelUp..WheelLeft never fire)"); + Log("controller '%s': data format set -- %d button(s)%s (Wheel1..Wheel%d), %s, %lu-byte state", name, nb, + total > nb ? " (more than 128: the rest ignored)" : "", nb, povTxt, (unsigned long)f->dwDataSize); + } + } + // An action map (SetActionMap) replaces the data format: buffered dwOfs values are then the game's own action ids, not + // offsets, so the layout is unknown -- this device is no longer tapped or filtered (its buttons pass to the game as is). + void OnActionMap() { + nBtn = 0; + povOfs = kNoOfs; + if (slot) JoyClearLive(*slot); + if (g_joySetupLogs.fetch_add(1, std::memory_order_relaxed) < kJoySetupLogMax) + Log("controller '%s': the game uses a DirectInput action map -- its buttons cannot be bound (Wheel* bindings " + "ignore this device)", name); + } + void OnUnacquire() { if (slot) JoyClearLive(*slot); } + + void OnState(HRESULT hr, DWORD cb, LPVOID data) { + if (FAILED(hr)) { if (slot) JoyClearLive(*slot); return; } // lost / not acquired: count as all up + if (!data) return; + BYTE* const d = static_cast(data); + const bool havePov = povOfs != kNoOfs && povOfs <= cb && cb - povOfs >= sizeof(DWORD); + DWORD pv = 0xFFFFFFFFu; + if (havePov) memcpy(&pv, d + povOfs, sizeof(pv)); + if (slot) { // tap BEFORE the hiding: PollKeys needs the real state + uint32_t b[4] = {}; + for (int i = 0; i < nBtn; ++i) { + const DWORD o = btnOfs[i]; + if (o < cb && (d[o] & 0x80u)) b[i >> 5] |= 1u << (i & 31); + } + const unsigned pd = havePov ? PovDirs(pv) : 0u; + Publish(b, pd, b, pd); // held = pressed for the latch (a short tap between Presents) + } + if (!MenuHidesInput()) return; + for (int i = 0; i < nBtn; ++i) { // v0.10.2: every button + const DWORD o = btnOfs[i]; + if (o < cb) d[o] = 0; // the game sees the button up (a held one: released) + } + if (havePov && PovDirs(pv)) { // the POV centred (an already centred one is left as it is) + const DWORD centred = 0xFFFFFFFFu; + memcpy(d + povOfs, ¢red, sizeof(centred)); + } + } + + void OnData(HRESULT hr, DWORD cbObj, LPDIDEVICEOBJECTDATA rg, LPDWORD inOut) { + if (FAILED(hr)) { if (slot) JoyClearLive(*slot); return; } + const bool entries = rg && inOut && *inOut && cbObj >= sizeof(DIDEVICEOBJECTDATA_DX3); + uint32_t b[4] = {}, pressed[4] = {}; + unsigned pd = 0, povPressed = 0; + if (slot) { + for (int w = 0; w < 4; ++w) b[w] = slot->btn[w].load(std::memory_order_relaxed); + pd = slot->pov.load(std::memory_order_relaxed); + } + const bool hide = entries && MenuHidesInput(); // v0.10.2: every button-down / non-centred POV entry + if (entries) { + BYTE* const base = reinterpret_cast(rg); + DWORD kept = 0; + for (DWORD i = 0; i < *inOut; ++i) { + const DIDEVICEOBJECTDATA_DX3* e = reinterpret_cast(base + (size_t)i * cbObj); + bool drop = false; + const int bi = ButtonAt(e->dwOfs); + if (bi >= 0) { + const uint32_t bit = 1u << (bi & 31); + if (e->dwData & 0x80u) { + b[bi >> 5] |= bit; pressed[bi >> 5] |= bit; + drop = hide; // button DOWN entries only (releases always pass) + } else { + b[bi >> 5] &= ~bit; + } + } else if (povOfs != kNoOfs && e->dwOfs == povOfs) { + const unsigned dirs = PovDirs(e->dwData); + pd = dirs; povPressed |= dirs; + drop = hide && dirs != 0; // a centred entry (dirs 0) = release, passes + } + if (drop) continue; + if (kept != i) memmove(base + (size_t)kept * cbObj, base + (size_t)i * cbObj, cbObj); + ++kept; + } + *inOut = kept; + } + if (slot) Publish(b, pd, pressed, povPressed); // also with no entries: the device is being read (fresh stamp) + } +}; + // ---- DirectInput wrappers ---------------------------------------------------------------------------------------- struct TraitsA { using DI = IDirectInput8A; using Dev = IDirectInputDevice8A; @@ -79,12 +321,14 @@ struct TraitsW { static const char* DevName() { return "IDirectInputDevice8W"; } }; -// A keyboard device: every method forwarded to the real one; GetDeviceState / GetDeviceData filter the menu keys. -// Owns one reference on the real device (released with the wrapper's last reference). -template +// A wrapped device: every method forwarded to the real one; the Tap policy (KbTap for a keyboard, v0.10.1 JoyTap for a +// controller) sees SetDataFormat / Unacquire / GetDeviceState / GetDeviceData after the real call and may filter the reads. +// Owns one reference on the real device (released with the wrapper's last reference; the Tap is destroyed with it). +template class DevWrap final : public T::Dev { public: - explicit DevWrap(typename T::Dev* real) : real_(real) {} + template + explicit DevWrap(typename T::Dev* real, A&&... a) : real_(real), tap_(std::forward(a)...) {} // IUnknown HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** out) override { @@ -99,36 +343,25 @@ class DevWrap final : public T::Dev { return (ULONG)r; } - // the two filtered reads + // the two filtered reads (+ the two calls the Tap must see) HRESULT STDMETHODCALLTYPE GetDeviceState(DWORD cb, LPVOID data) override { const HRESULT hr = real_->GetDeviceState(cb, data); - if (SUCCEEDED(hr) && data && cb >= 256) { // c_dfDIKeyboard: 256 key bytes - DWORD diks[kMaxSwallow]; - const int n = SwallowDiks(diks); - for (int i = 0; i < n; ++i) static_cast(data)[diks[i]] = 0; - } + tap_.OnState(hr, cb, data); return hr; } HRESULT STDMETHODCALLTYPE GetDeviceData(DWORD cbObj, LPDIDEVICEOBJECTDATA rg, LPDWORD inOut, DWORD flags) override { const HRESULT hr = real_->GetDeviceData(cbObj, rg, inOut, flags); - if (SUCCEEDED(hr) && rg && inOut && *inOut && cbObj >= sizeof(DIDEVICEOBJECTDATA_DX3)) { - DWORD diks[kMaxSwallow]; - const int n = SwallowDiks(diks); - if (n) { - BYTE* const base = reinterpret_cast(rg); - DWORD kept = 0; - for (DWORD i = 0; i < *inOut; ++i) { - const DIDEVICEOBJECTDATA_DX3* e = reinterpret_cast(base + (size_t)i * cbObj); - bool drop = false; - if (e->dwData & 0x80u) // key DOWN entries only (releases always pass) - for (int k = 0; k < n; ++k) if (e->dwOfs == diks[k]) { drop = true; break; } - if (drop) continue; - if (kept != i) memmove(base + (size_t)kept * cbObj, base + (size_t)i * cbObj, cbObj); - ++kept; - } - *inOut = kept; - } - } + tap_.OnData(hr, cbObj, rg, inOut); + return hr; + } + HRESULT STDMETHODCALLTYPE SetDataFormat(LPCDIDATAFORMAT f) override { + const HRESULT hr = real_->SetDataFormat(f); + if (SUCCEEDED(hr)) tap_.OnFormat(f); + return hr; + } + HRESULT STDMETHODCALLTYPE Unacquire() override { + const HRESULT hr = real_->Unacquire(); + tap_.OnUnacquire(); return hr; } @@ -138,8 +371,6 @@ class DevWrap final : public T::Dev { HRESULT STDMETHODCALLTYPE GetProperty(REFGUID g, LPDIPROPHEADER p) override { return real_->GetProperty(g, p); } HRESULT STDMETHODCALLTYPE SetProperty(REFGUID g, LPCDIPROPHEADER p) override { return real_->SetProperty(g, p); } HRESULT STDMETHODCALLTYPE Acquire() override { return real_->Acquire(); } - HRESULT STDMETHODCALLTYPE Unacquire() override { return real_->Unacquire(); } - HRESULT STDMETHODCALLTYPE SetDataFormat(LPCDIDATAFORMAT f) override { return real_->SetDataFormat(f); } HRESULT STDMETHODCALLTYPE SetEventNotification(HANDLE h) override { return real_->SetEventNotification(h); } HRESULT STDMETHODCALLTYPE SetCooperativeLevel(HWND w, DWORD fl) override { return real_->SetCooperativeLevel(w, fl); } HRESULT STDMETHODCALLTYPE GetObjectInfo(typename T::ObjInst o, DWORD obj, DWORD how) override { return real_->GetObjectInfo(o, obj, how); } @@ -171,19 +402,25 @@ class DevWrap final : public T::Dev { return real_->BuildActionMap(a, u, fl); } HRESULT STDMETHODCALLTYPE SetActionMap(typename T::ActionFmt a, typename T::Str u, DWORD fl) override { - return real_->SetActionMap(a, u, fl); + const HRESULT hr = real_->SetActionMap(a, u, fl); + if (SUCCEEDED(hr)) tap_.OnActionMap(); // v0.10.1 (controller: layout unknown from now on; keyboard: nothing) + return hr; } HRESULT STDMETHODCALLTYPE GetImageInfo(typename T::ImgInfo i) override { return real_->GetImageInfo(i); } + const Tap& tap() const { return tap_; } + private: ~DevWrap() = default; typename T::Dev* real_; + Tap tap_; std::atomic refs_{1}; }; std::atomic g_kbWraps{0}; -// The DirectInput8 object: CreateDevice of a keyboard returns a DevWrap; everything else forwarded untouched. +// The DirectInput8 object: CreateDevice of a keyboard returns a DevWrap, of a controller (v0.10.1: any device that +// is not a keyboard and not a mouse) a DevWrap; everything else forwarded untouched. template class DiWrap final : public T::DI { public: @@ -205,19 +442,44 @@ class DiWrap final : public T::DI { const HRESULT hr = real_->CreateDevice(g, out, outer); if (FAILED(hr) || !out || !*out || outer) return hr; bool keyboard = g == GUID_SysKeyboard; + typename T::DevInstT di{}; + bool haveInfo = false; if (!keyboard) { - typename T::DevInstT di{}; di.dwSize = sizeof(di); - if (SUCCEEDED((*out)->GetDeviceInfo(&di))) keyboard = GET_DIDEVICE_TYPE(di.dwDevType) == DI8DEVTYPE_KEYBOARD; + haveInfo = SUCCEEDED((*out)->GetDeviceInfo(&di)); + if (haveInfo) keyboard = GET_DIDEVICE_TYPE(di.dwDevType) == DI8DEVTYPE_KEYBOARD; } - if (!keyboard) return hr; - DevWrap* w = new (std::nothrow) DevWrap(*out); // takes over the reference CreateDevice returned + if (!keyboard) { + // v0.10.1 controller tap: anything with a known type that is not a mouse (wheel, gamepad, joystick, shifter ...) + if (g == GUID_SysMouse || !haveInfo || GET_DIDEVICE_TYPE(di.dwDevType) == DI8DEVTYPE_MOUSE) return hr; + char product[64]; + ProductName(di, product, sizeof(product)); + if (!ControllerNameAllowed(product)) { // dlaa.ini controller_name set and not part of this name + if (g_joySetupLogs.fetch_add(1, std::memory_order_relaxed) < kJoySetupLogMax) + Log("DirectInput: controller '%s' not tapped (controller_name = \"%s\" does not match) -- passed to the " + "game unwrapped", product, ControllerNameFilter()); + return hr; + } + auto* jw = new (std::nothrow) DevWrap(*out, product); // takes over the reference CreateDevice returned + if (!jw) return hr; + *out = jw; + const int k = g_joyWraps.fetch_add(1, std::memory_order_relaxed); + if (g_joySetupLogs.fetch_add(1, std::memory_order_relaxed) < kJoySetupLogMax) + Log("DirectInput: controller device wrapped (%s, #%d): '%s', type %s (0x%02lX) -- its buttons / D-pad can be bound " + "to the mod's hotkeys (dlaa.ini key_* = WheelN / WheelUp ...); its buttons / D-pad are hidden from the game while " + "the menu is open (axes pass)%s", + T::DevName(), k + 1, product, DevTypeName(GET_DIDEVICE_TYPE(di.dwDevType)), + (unsigned long)GET_DIDEVICE_TYPE(di.dwDevType), + jw->tap().slot ? "" : " -- NO STATE SLOT LEFT (8 controllers): its presses are not seen by the mod"); + return hr; + } + DevWrap* w = new (std::nothrow) DevWrap(*out); // takes over the reference CreateDevice returned if (!w) return hr; *out = w; const int k = g_kbWraps.fetch_add(1); if (k < 4) - Log("DirectInput: keyboard device wrapped (%s, #%d) -- the tuning menu keys are hidden from the game while the " - "menu is open", T::DevName(), k + 1); + Log("DirectInput: keyboard device wrapped (%s, #%d) -- no key reaches the game while the tuning menu is open " + "(releases pass)", T::DevName(), k + 1); return hr; } HRESULT STDMETHODCALLTYPE EnumDevices(DWORD t, typename T::EnumDevCb cb, LPVOID ref, DWORD fl) override { @@ -246,32 +508,19 @@ std::atomic g_hwnd{nullptr}; std::atomic g_origProc{0}; std::atomic g_hookTried{false}; -// The virtual key of a WM_CHAR / WM_SYSCHAR (its scan code + extended bit -> VK). -int VkOfCharMsg(LPARAM l) { - const UINT sc = (UINT)((l >> 16) & 0xFF) | (((l >> 24) & 1) ? 0xE000u : 0u); - return (int)MapVirtualKeyW(sc, MAPVK_VSC_TO_VK_EX); -} - +// v0.10.2: while the menu is open EVERY key-down / character message and every WM_INPUT keyboard make event is dropped +// (v0.10.0 / v0.10.1: only those of the 5 menu keys). Key-up messages, WM_INPUT break events and WM_INPUT mouse pass. LRESULT CALLBACK SubProc(HWND h, UINT m, WPARAM w, LPARAM l) { const WNDPROC orig = reinterpret_cast(g_origProc.load(std::memory_order_acquire)); - if (m == WM_KEYDOWN || m == WM_SYSKEYDOWN || m == WM_CHAR || m == WM_SYSCHAR || m == WM_INPUT) { - int vks[kMaxSwallow]; - const int n = MenuSwallowKeys(vks, kMaxSwallow); - if (n) { - if (m == WM_KEYDOWN || m == WM_SYSKEYDOWN) { - if (VkSwallowed((int)w, vks, n)) return 0; - } else if (m == WM_CHAR || m == WM_SYSCHAR) { - if (VkSwallowed(VkOfCharMsg(l), vks, n)) return 0; - } else { // WM_INPUT: keyboard make events of the menu keys - alignas(8) BYTE buf[sizeof(RAWINPUT)]; - UINT size = sizeof(buf); - if (GetRawInputData(reinterpret_cast(l), RID_INPUT, buf, &size, sizeof(RAWINPUTHEADER)) != (UINT)-1) { - const RAWINPUT* ri = reinterpret_cast(buf); - if (ri->header.dwType == RIM_TYPEKEYBOARD && !(ri->data.keyboard.Flags & RI_KEY_BREAK) && - VkSwallowed((int)ri->data.keyboard.VKey, vks, n)) - return DefWindowProcW(h, m, w, l); // the system's raw-input cleanup, the game never sees it - } - } + if ((m == WM_KEYDOWN || m == WM_SYSKEYDOWN || m == WM_CHAR || m == WM_SYSCHAR || m == WM_INPUT) && MenuHidesInput()) { + if (m == WM_SYSKEYDOWN && w == VK_F4) return orig ? CallWindowProcW(orig, h, m, w, l) : DefWindowProcW(h, m, w, l); // Alt+F4 (close the game) always passes + if (m != WM_INPUT) return 0; + alignas(8) BYTE buf[sizeof(RAWINPUT)]; // WM_INPUT: keyboard make events only + UINT size = sizeof(buf); + if (GetRawInputData(reinterpret_cast(l), RID_INPUT, buf, &size, sizeof(RAWINPUTHEADER)) != (UINT)-1) { + const RAWINPUT* ri = reinterpret_cast(buf); + if (ri->header.dwType == RIM_TYPEKEYBOARD && !(ri->data.keyboard.Flags & RI_KEY_BREAK)) + return DefWindowProcW(h, m, w, l); // the system's raw-input cleanup, the game never sees it } } return orig ? CallWindowProcW(orig, h, m, w, l) : DefWindowProcW(h, m, w, l); @@ -311,8 +560,8 @@ void HookWindow(HWND hwnd) { } if (prev != cur) g_origProc.store(prev, std::memory_order_release); // changed in between: chain to what was really there g_hwnd.store(hwnd, std::memory_order_release); - Log("tuning menu: game window %p subclassed (key messages of the menu keys are dropped while the menu is open; key " - "releases always pass)", (void*)hwnd); + Log("tuning menu: game window %p subclassed (every key-down / character message is dropped while the menu is open; " + "key releases always pass)", (void*)hwnd); } void UnhookWindow() { @@ -323,4 +572,47 @@ void UnhookWindow() { g_hwnd.store(nullptr, std::memory_order_release); } +// v0.10.1: see dinput_wrap.h. Render thread only (the latches and the discovery bits are consumed here). +void ControllerState(uint32_t buttons[4], unsigned* povDirs) { + for (int w = 0; w < 4; ++w) buttons[w] = 0; + unsigned pov = 0; + const ULONGLONG now = GetTickCount64(); + for (JoySlot& s : g_joy) { + if (s.state.load(std::memory_order_acquire) != 2) continue; + uint32_t lat[4]; + for (int w = 0; w < 4; ++w) lat[w] = s.latch[w].exchange(0, std::memory_order_relaxed); + const unsigned povLat = s.povLatch.exchange(0, std::memory_order_relaxed); + const ULONGLONG st = s.stamp.load(std::memory_order_acquire); + if (st && st + kJoyStaleMs >= now) { // read by the game recently (the input thread may stamp after `now`) + for (int w = 0; w < 4; ++w) buttons[w] |= s.btn[w].load(std::memory_order_relaxed) | lat[w]; + pov |= s.pov.load(std::memory_order_relaxed) | povLat; + } + // discovery aid: the first press of each button / direction of this device, so the user can find the number to bind + for (int w = 0; w < 4; ++w) { + uint32_t f = s.fresh[w].exchange(0, std::memory_order_relaxed); + for (int b = 0; f && b < 32; ++b) { + if (!(f & (1u << b))) continue; + f &= ~(1u << b); + const int n = g_joyDiscLogs.fetch_add(1, std::memory_order_relaxed); + if (n >= kJoyDiscoveryMax) break; + const int btn = w * 32 + b + 1; + Log("controller '%.63s': button %d pressed -- bind it in dlaa.ini as Wheel%d (first press of each button is " + "logged once%s)", s.name, btn, btn, n == kJoyDiscoveryMax - 1 ? "; this was the last such line this run" : ""); + } + } + unsigned fp = s.freshPov.exchange(0, std::memory_order_relaxed); + static const char* const kDirName[4] = { "up", "right", "down", "left" }; + static const char* const kDirTok[4] = { "WheelUp", "WheelRight", "WheelDown", "WheelLeft" }; + for (int d = 0; fp && d < 4; ++d) { + if (!(fp & (1u << d))) continue; + fp &= ~(1u << d); + const int n = g_joyDiscLogs.fetch_add(1, std::memory_order_relaxed); + if (n >= kJoyDiscoveryMax) break; + Log("controller '%.63s': D-pad %s -- bind it in dlaa.ini as %s%s", s.name, kDirName[d], kDirTok[d], + n == kJoyDiscoveryMax - 1 ? " (the last such line this run)" : ""); + } + } + *povDirs = pov; +} + } // namespace KeySwallow diff --git a/src/dinput_wrap.h b/src/dinput_wrap.h index a490c67..a305867 100644 --- a/src/dinput_wrap.h +++ b/src/dinput_wrap.h @@ -1,19 +1,34 @@ -// KeySwallow (v0.10.0) -- while the tuning menu is open, the game must not see the menu's keys (ETS2's default keyboard -// layout steers / accelerates / brakes with the arrow keys). Three paths, each active only while the menu is open and -// only for the 5 bound menu keys (MenuSwallowKeys, inject.cpp): +// KeySwallow (v0.10.0) -- while the tuning menu is open, the game must not see the keyboard (ETS2's default keyboard +// layout steers / accelerates / brakes with the arrow keys, and v0.10.2's hold-to-bind holds a key for 2 s: that must not +// honk the horn). v0.10.2: ONE rule -- while the menu is open (MenuHidesInput, inject.cpp) NO key and NO controller button +// reaches the game (v0.10.0 / v0.10.1 hid only the 5 bound menu keys / their controller parts). Escape / pause and every +// game key are off until the menu is closed. Three keyboard paths, each active only while the menu is open: +// (v0.10.1: + a 4th, the CONTROLLER TAP, see below) // 1. DirectInput: proxy.cpp's DirectInput8Create goes through CreateDirectInput8, which wraps the returned // IDirectInput8A/W; CreateDevice of a KEYBOARD returns a wrapped IDirectInputDevice8A/W (every method forwarded) -// whose GetDeviceState clears the DIK bytes of those keys and whose GetDeviceData drops their key-DOWN entries. +// whose GetDeviceState clears all 256 DIK bytes and whose GetDeviceData drops every key-DOWN entry. // 2. Window messages: HookWindow subclasses the game window once (the swapchain's OutputWindow, first top-level -// Present); WM_KEYDOWN / WM_SYSKEYDOWN / WM_CHAR / WM_SYSCHAR and WM_INPUT keyboard make events of those keys are -// dropped. Everything else goes to the original window procedure. -// 3. The menu itself reads the keys with GetAsyncKeyState (PollKeys), which none of this touches. +// Present); every WM_KEYDOWN / WM_SYSKEYDOWN / WM_CHAR / WM_SYSCHAR and every WM_INPUT keyboard make event is +// dropped (WM_INPUT mouse events pass). Everything else goes to the original window procedure. +// 3. The menu itself reads the keys with GetAsyncKeyState (PollKeys, the hold-to-bind scan), which none of this touches. // Key RELEASES are never dropped (WM_KEYUP / WM_SYSKEYUP, WM_INPUT break events, buffered DirectInput up entries): a key // that was already held when the menu opened (the accelerator) or the Delete that opened it must reach the game as // released, or the game would keep it held. A release of a key the game saw as up is harmless. +// +// v0.10.1 CONTROLLER TAP: every hotkey (dlaa.ini key_*) may also be bound to a button or the POV hat (D-pad) of a +// DirectInput wheel / gamepad / joystick / shifter ("Wheel7", "WheelUp", inject.cpp ParseBinding). CreateDevice of any +// device that is not a keyboard and not a mouse returns a wrapped device too (every method forwarded). Its SetDataFormat +// learns where the buttons and the first POV sit in the game's data format; every GetDeviceState / GetDeviceData the game +// makes (on its input thread) copies the button / POV state into an atomic per-device slot, read by ControllerState (render +// thread, PollKeys). v0.10.2: while the menu is open EVERY button and the POV are hidden from the game: all button bytes +// cleared / the POV centred in the state, every button-down entry and every non-centred POV entry dropped from the buffer. +// Axes, sliders (wheel, pedals) and everything else pass untouched. Releases (button up, POV centred) always pass. Only +// DirectInput devices the game itself opens are seen; XInput gamepads are not. A device the game drives with an action +// map (SetActionMap) has no known layout: it is neither tapped nor filtered. #pragma once #include #include +#include namespace KeySwallow { using PFN_DI8Create = HRESULT (WINAPI*)(HINSTANCE, DWORD, REFIID, LPVOID*, LPUNKNOWN); @@ -23,8 +38,24 @@ HRESULT CreateDirectInput8(PFN_DI8Create real, HINSTANCE h, DWORD ver, REFIID ri void HookWindow(HWND hwnd); // DLL unload: puts the original window procedure back if the window still exists and still points at ours. void UnhookWindow(); + +// v0.10.1 controller binding codes (KeyBind::joy): 0 = none, 1..128 = button N (DirectInput button index +// N-1 in the game's data format), kJoyPovUp..kJoyPovLeft = POV hat 1 directions (a diagonal counts for both neighbours). +constexpr int kJoyMaxButton = 128; +constexpr int kJoyPovUp = 129, kJoyPovRight = 130, kJoyPovDown = 131, kJoyPovLeft = 132; +// POV direction bit of a code kJoyPovUp..kJoyPovLeft (1 up, 2 right, 4 down, 8 left); 0 for a button code. +inline unsigned JoyPovBit(int joy) { return (joy >= kJoyPovUp && joy <= kJoyPovLeft) ? 1u << (joy - kJoyPovUp) : 0u; } +// Render thread (PollKeys, once per top-level Present): the OR of every tapped controller -- 128-bit button mask +// (buttons[0] bit 0 = button 1) and the POV direction bits. A press seen in the buffered data since the previous call counts +// as down once even if released already. Devices not read by the game for 0.5 s count as all up. Also writes the +// "controller: button N pressed" discovery log lines (first press of each button / direction per device, 24 per run). +void ControllerState(uint32_t buttons[4], unsigned* povDirs); } -// inject.cpp: the virtual-key codes to swallow right now (the bound menu keys while the menu is open), count returned; -// 0 = nothing (menu closed / not compiled in). Any thread (input / window threads). -int MenuSwallowKeys(int* vks, int cap); +// v0.10.2 inject.cpp: true while the tuning menu is open = no key / controller button reaches the game (see above). Any +// thread (the game's input / window threads; one relaxed atomic load). +bool MenuHidesInput(); +// v0.10.1 inject.cpp: dlaa.ini controller_name filter -- true = this controller (product name) is tapped / filtered. Empty +// controller_name = every controller; else the name must contain the text (ASCII case-insensitive). Game's thread. +bool ControllerNameAllowed(const char* product); +const char* ControllerNameFilter(); // the controller_name text as matched (lower case; "" = no filter), for log lines diff --git a/src/draw_ids.cpp b/src/draw_ids.cpp index 4be77e2..a58c8e4 100644 --- a/src/draw_ids.cpp +++ b/src/draw_ids.cpp @@ -185,6 +185,9 @@ float PSInit1(float4 pos : SV_Position) : SV_Depth { return InitDepth(pos, 1u); // margin; everything outside holds id 0, so a march that leaves it ends there like at the sky). x0 / y0 are aligned // down to 4 px, so every sample sits on the same global grid as in phase 8 (ParVoter's decimation is unchanged); // CSParentList sizes the indirect vote grid from it. Without a clip it is the whole image = phase 8 exactly. +// v0.10.2 (dlaa.ini mv_area_clip 1): Clip = the replay clip n THIS eye's DLAA rect + mv_area_margin (Prepare; VR: the +// replay clip is the union of both eyes' rects). Clip bounds only the samples (count, centroids, march starts); the +// marches themselves are bounded by the image (Params.zw) and read whatever the replay wrote, as before. // FwdMode.x: 1 = the forward depth (PFwd) and the forward ids (PFwdIds, R16_UINT, t11) are at 1/2 resolution (dlaa.ini // mv_fwd_depth_res 2): read at pixel >> 1 (FwdIdAt / FwdDepthAt); 0 = GREEN channel + full-size depth (phase 8). // FOLDED : every dispatch has a fixed GPU floor (+ the barrier the driver puts between dependent dispatches); the per-eye @@ -2197,6 +2200,14 @@ UINT g_consCands = 64u; // mv_medoid_drop a layer whose consensus was used (>= kConsMin draws) in this many landed readbacks in a row drops the old // medoid path (camera candidate copies + pass A); 0 = never (phase 7) UINT g_medoidDrop = 120u; +// mv_cons_fail_tol (v0.10.2) failed consensus readbacks IN A ROW a layer may have before its mv_medoid_drop streak restarts +// (0 = the first failure restarts it, phase 8). In game (ATS VR 2026-10-10) the consensus failed at least once +// per 120 readbacks most of the time: the world medoid was dropped in ~20 % of the passes, the cabin's never, +// ~0.35-0.4 ms per VR frame of candidate copies + pass A for nothing. A tolerated failure costs nothing on its +// own frame (the layer keeps the last frame's R -- a re-arm only brings pass A back from the NEXT pass on), +// the next ones a slightly stale R; a longer streak re-arms as before. A pairing collapse still restarts it at +// once. 0..100, default 2; the 'perf cuts' line counts the failure streaks by length (1 / 2 / 3-5 / 6+). +UINT g_consFailTol = 2u; // mv_inst_replay 0 = every instanced / no-MVP draw replayed every pass; 1 = only keys that took a moving parent lately int g_instReplay = 0; // mv_parent_max_listed (v0.10.0 phase 10) unpaired / instanced draws listed per pass for the rigid-parent vote (8..64) @@ -2273,6 +2284,10 @@ constexpr float kParFineSamples = 64.0f; // < 64 coarse samples (~1000 px at m int g_foldMode = 2; // v0.10.0 phase 18: dlaa.ini mv_vote_compact (1 = the rigid-parent vote over the listed tiles, one thread per march direction) bool g_voteCompact = true; +// v0.10.2: dlaa.ini mv_area_clip (1 = the vote grid / pixel count over this eye's DLAA rect + g_areaMargin n the replay clip; see +// DrawIdMv::SetAreaClip) -- inject.cpp sets both at every pass start; the default margin = dlaa_area_feather 96 + 32 +bool g_areaClip = true; +int g_areaMargin = 128; // v0.10.0 phase 18: dlaa.ini mv_cons_min_cabin (0 = kConsMin, as the world layer; 8..64): the cabin layer's consensus needs this many // agreeing draws -- below kConsMin it can be used (and its medoid / candidate copies dropped after mv_medoid_drop healthy readbacks) UINT g_consMinCabin = 0u; @@ -3520,6 +3535,11 @@ void DrawIdMv::SetFold(int mode) { g_foldMode = mode <= 0 ? 0 : (mode >= 2 ? 2 : int DrawIdMv::Fold() { return g_foldMode; } void DrawIdMv::SetVoteCompact(bool on) { g_voteCompact = on; } // v0.10.0 phase 18 bool DrawIdMv::VoteCompact() { return g_voteCompact; } +void DrawIdMv::SetAreaClip(bool on, int marginPx) { // v0.10.2 (mv_area_clip) + g_areaClip = on; g_areaMargin = marginPx < 0 ? 0 : (marginPx > 4096 ? 4096 : marginPx); +} +bool DrawIdMv::AreaClip() { return g_areaClip; } +int DrawIdMv::AreaMargin() { return g_areaMargin; } void DrawIdMv::SetConsMinCabin(unsigned n) { g_consMinCabin = n == 0u ? 0u : (n < 8u ? 8u : (n > 64u ? 64u : n)); } unsigned DrawIdMv::ConsMinCabin() { return g_consMinCabin; } void DrawIdMv::SetCabinSmall(unsigned n) { g_cabinSmall = n == 0u ? 0u : (n < 2u ? 2u : (n > 64u ? 64u : n)); } // phase 19 @@ -3562,6 +3582,8 @@ void DrawIdMv::SetMarchCap(unsigned n) { g_marchCap = n == 0u ? 0u : (n < 4096u unsigned DrawIdMv::MarchCap() { return g_marchCap; } void DrawIdMv::SetMedoidDrop(unsigned frames) { g_medoidDrop = frames > 100000u ? 100000u : frames; } // v0.10.0 phase 8 unsigned DrawIdMv::MedoidDrop() { return g_medoidDrop; } +void DrawIdMv::SetConsFailTol(unsigned n) { g_consFailTol = n > 100u ? 100u : n; } // v0.10.2 +unsigned DrawIdMv::ConsFailTol() { return g_consFailTol; } bool DrawIdMv::ConsHealthy(int layer) const { return g_medoidDrop != 0u && g_consensus && m_ready && m_consRun[layer & 1] >= g_medoidDrop; } @@ -3967,11 +3989,22 @@ void DrawIdMv::Poll(ID3D11DeviceContext* ctx) { m_lastCons[L] = (int)q[0]; m_lastConsN[L] = q[1]; // v0.10.0 phase 8: consensus health (mv_medoid_drop); a failure after a healthy run re-arms that layer's medoid + // v0.10.2 (mv_cons_fail_tol): only a failure streak LONGER than the tolerance does; a shorter one leaves the health + // streak where it was (neither counted nor reset). Every ended failure streak goes into the length histogram. const uint32_t minL = (L == 1 && g_consMinCabin) ? g_consMinCabin : (uint32_t)kConsMin; // (phase 18) - if (q[0] == 1 && q[1] >= minL) { if (m_consRun[L] < 0x7FFFFFFFu) ++m_consRun[L]; } - else { - if (g_medoidDrop && m_consRun[L] >= g_medoidDrop) ++m_stats.medoidRearms[L]; - m_consRun[L] = 0; + if (q[0] == 1 && q[1] >= minL) { + if (m_consFail[L]) { + const uint32_t f = m_consFail[L]; + ++m_stats.consFailRuns[L][f <= 2u ? f - 1u : (f <= 5u ? 2u : 3u)]; + m_consFail[L] = 0; + } + if (m_consRun[L] < 0x7FFFFFFFu) ++m_consRun[L]; + } else { + if (m_consFail[L] < 0x7FFFFFFFu) ++m_consFail[L]; + if (m_consFail[L] > g_consFailTol) { + if (g_medoidDrop && m_consRun[L] >= g_medoidDrop) ++m_stats.medoidRearms[L]; + m_consRun[L] = 0; + } } if (q[0] == 1) { ++m_stats.consFrames[L]; @@ -4715,10 +4748,29 @@ uint32_t DrawIdMv::Prepare(ID3D11DeviceContext* ctx, const DrawIdRecord* rec, ui // v0.10.0 phase 9: Clip = the vote grid / pixel count rect (the G-buffer replay's clip, x0 / y0 down to a multiple of 4: the // samples stay on the global grid), FwdMode.x = the forward targets' resolution shift, FoldU.x = the folded-dispatch bits uint32_t clip[4] = { 0u, 0u, fullW, fullH }; + uint64_t passPx = (uint64_t)fullW * fullH; // v0.10.2: the replay clip's px (stats) + bool eyeClipped = false; if (rec->Clipped()) { const D3D11_RECT r = rec->ClipRect(); - const uint32_t x0 = r.left > 0 ? (uint32_t)r.left : 0u, y0 = r.top > 0 ? (uint32_t)r.top : 0u; - const uint32_t x1 = r.right > 0 ? (uint32_t)r.right : 0u, y1 = r.bottom > 0 ? (uint32_t)r.bottom : 0u; + uint32_t x0 = r.left > 0 ? (uint32_t)r.left : 0u, y0 = r.top > 0 ? (uint32_t)r.top : 0u; + uint32_t x1 = r.right > 0 ? (uint32_t)r.right : 0u, y1 = r.bottom > 0 ? (uint32_t)r.bottom : 0u; + { + const uint32_t px0 = x0 < fullW ? x0 : fullW, py0 = y0 < fullH ? y0 : fullH; + const uint32_t px1 = x1 < fullW ? x1 : fullW, py1 = y1 < fullH ? y1 : fullH; + passPx = (uint64_t)(px1 > px0 ? px1 - px0 : 0u) * (uint64_t)(py1 > py0 ? py1 - py0 : 0u); + } + // v0.10.2 (mv_area_clip): the sample grid only over THIS eye's DLAA rect + the margin, n the replay clip (VR: the union + // of both eyes' rects). Ids / depth outside the grid stay what the replay wrote: the marches read them as before. + if (g_areaClip && m_eyeRectOn) { + const int64_t mg = g_areaMargin; + const int64_t ex0 = (int64_t)m_eyeRect[0] - mg, ey0 = (int64_t)m_eyeRect[1] - mg; + const int64_t ex1 = (int64_t)m_eyeRect[2] + mg, ey1 = (int64_t)m_eyeRect[3] + mg; + if (ex0 > (int64_t)x0) x0 = (uint32_t)(ex0 < 0xFFFFFFFFll ? ex0 : 0xFFFFFFFFll); + if (ey0 > (int64_t)y0) y0 = (uint32_t)(ey0 < 0xFFFFFFFFll ? ey0 : 0xFFFFFFFFll); + if (ex1 < (int64_t)x1) x1 = ex1 > 0 ? (uint32_t)ex1 : 0u; + if (ey1 < (int64_t)y1) y1 = ey1 > 0 ? (uint32_t)ey1 : 0u; + eyeClipped = true; + } clip[0] = (x0 < fullW ? x0 : fullW) & ~3u; clip[1] = (y0 < fullH ? y0 : fullH) & ~3u; clip[2] = x1 < fullW ? x1 : fullW; clip[3] = y1 < fullH ? y1 : fullH; if (clip[2] < clip[0]) clip[2] = clip[0]; @@ -4740,6 +4792,13 @@ uint32_t DrawIdMv::Prepare(ID3D11DeviceContext* ctx, const DrawIdRecord* rec, ui { const uint32_t S = g_voteRes, cw = clip[2] - clip[0], chh = clip[3] - clip[1]; m_prepGrid = ((cw + S - 1u) / S + 7u) / 8u * (((chh + S - 1u) / S + 7u) / 8u); + if (parentOn && rec->Clipped()) { // v0.10.2: the 'perf view' line (mv_area_clip) + ++m_stats.vgFrames; + if (eyeClipped) ++m_stats.vgEye; + m_stats.vgPx += (uint64_t)cw * chh; + m_stats.vgPassPx += passPx; + m_stats.vgFullPx += (uint64_t)fullW * fullH; + } } uint32_t epsBits = 0; // v0.10.0 phase 14: z = the deep-static epsilon (px, float bits) memcpy(&epsBits, &g_statEps, 4); diff --git a/src/draw_ids.h b/src/draw_ids.h index 15356fb..798a4f8 100644 --- a/src/draw_ids.h +++ b/src/draw_ids.h @@ -537,6 +537,21 @@ class DrawIdMv { static int Fold(); static void SetVoteCompact(bool on); // v0.10.0 phase 18 (dlaa.ini mv_vote_compact) static bool VoteCompact(); + // v0.10.2 EYE CLIP of the rigid-parent vote (dlaa.ini mv_area_clip, default 1; inject.cpp PassViewSetup sets it at every pass + // start with the pass's margin, mv_area_margin / dlaa_area_feather + 32): in VR the replay clip of a pass is the UNION of both + // eyes' DLAA rects (+ margin) -- the eye of a pass is only known at its blit, i.e. here. The pixel count, the centroid sums and + // the vote grid (the march START samples) then cover only THIS eye's DLAA rect + marginPx, n the replay clip; the marches + // still read ids / depth up to their reach anywhere in the replayed region, as before. Flat (one rect) and area 100 / mirror + // units (no replay clip) are unchanged. Off = the whole replay clip (v0.10.0 phase 9). The eye rect comes from + // SetEyeRect (CameraMv::Generate: pass B's crop) before each Prepare. + static void SetAreaClip(bool on, int marginPx); + static bool AreaClip(); + static int AreaMargin(); + void SetEyeRect(uint32_t x0, uint32_t y0, uint32_t w, uint32_t h) { + m_eyeRect[0] = x0; m_eyeRect[1] = y0; m_eyeRect[2] = x0 + w; m_eyeRect[3] = y0 + h; m_eyeRectOn = w != 0u && h != 0u; + } + // the vote grid rect of the prepared pass (x0 aligned to 4, y0 aligned to 4, x1, y1; full-image px) -- the harness reads it + const uint32_t* PreparedClip() const { return m_prepClip; } // v0.10.0 phase 18 (dlaa.ini mv_cons_min_cabin, 0 = kConsMin as the world layer, else 8..64): the cabin layer's consensus // camera R needs this many agreeing draws. In game the cabin never reached kConsMin (24) -- its medoid and its 24 candidate // copies per pass stayed; the 'cabin: consensus' field of the MV draw-ids line shows the largest cluster it had @@ -566,7 +581,8 @@ class DrawIdMv { static void VsLayoutClear(); // device change (VS pointers are not stable across devices) // after pass B: commits the prepared pass as this eye's previous one, queues the diagnostics readback void Finish(ID3D11DeviceContext* ctx); - void Forget() { PrepWait(); m_prevN = 0; m_prepN = 0; m_consRun[0] = m_consRun[1] = 0; // no history (the next pass pairs nothing; + void Forget() { m_prevN = 0; m_prepN = 0; m_consRun[0] = m_consRun[1] = 0; // no history (the next pass pairs nothing; + m_consFail[0] = m_consFail[1] = 0; // (v0.10.2: + the failure streak) m_uholdValid[0] = m_uholdValid[1] = false; // v0.10.0 phase 8: the consensus health restarts too; if (!m_quiet) StaticClear(kStatClrHistory); } // phase 14: a main unit's lost history also forgets every // static streak; round 4: and the plate-hold table) @@ -578,6 +594,11 @@ class DrawIdMv { // first readback without it re-arms the medoid (counted in Stats::medoidRearms) static void SetMedoidDrop(unsigned frames); static unsigned MedoidDrop(); + // v0.10.2 (dlaa.ini mv_cons_fail_tol, 0..100, default 2; 0 = phase 8): failed consensus readbacks of a layer IN A ROW that do + // not restart its mv_medoid_drop streak (the layer keeps the last frame's R meanwhile); one more re-arms as above. Ended + // failure streaks are counted by length in Stats::consFailRuns. A pairing collapse still restarts both streaks at once. + static void SetConsFailTol(unsigned n); + static unsigned ConsFailTol(); bool ConsHealthy(int layer) const; // v0.10.0 phase 4: log the per-draw state of the NEXT prepared pass (forward draws + G-buffer draws with IndexCount // <= 36), see the header. The lines land 2-4 frames later (non-blocking readback). false = a dump is still in flight. @@ -659,6 +680,9 @@ class DrawIdMv { // v0.10.0 phase 8: the medoid of a layer re-armed (its consensus failed after being healthy), prepared frames without a // world / cabin medoid uint64_t medoidRearms[2] = {}, noMedoidFrames[2] = {}; + // v0.10.2 (mv_cons_fail_tol): ended streaks of failed consensus readbacks per layer by length: 1, 2, 3-5, 6+ (read back; + // counted when the next healthy readback lands; a streak cut by Forget is not counted) + uint64_t consFailRuns[2][4] = {}; uint64_t instMoverDraws = 0; uint64_t consSmall[2] = {}; // frames without a medoid whose camera R came from a cluster of 8..23 draws // instanced / no-MVP draws that took a MOVING parent (read back; mv_inst_replay) // v0.10.0 phase 14 (read back, mv_replay_static_*): readbacks that fed the static table, G-buffer world draws judged in @@ -690,6 +714,9 @@ class DrawIdMv { // 8..11), none MVP-shaped (VS not cached yet), cached block failed (state 5), forward draws with a shifted block, draws // that scanned the rows (VS not cached / cached block failed) -- sums uint64_t lay[5] = {}, layNone = 0, layHintFail = 0, layFwdShift = 0, layScanned = 0; + // v0.10.2 (mv_area_clip, Prepare of a pass with a replay clip and the vote on): passes, of them clipped to the eye rect, and + // the summed px of the vote grid rect / of the replay clip / of the whole image (the 'perf view' line's percentages) + uint64_t vgFrames = 0, vgEye = 0, vgPx = 0, vgPassPx = 0, vgFullPx = 0; }; const Stats& GetStats() const { return m_stats; } // v0.10.0 phase 3: largest per-frame avg |consensus - medoid| (px, layer 0 / 1) since the last call (restarts it) @@ -816,6 +843,8 @@ class DrawIdMv { uint32_t m_prepCandW = 0, m_prepCandC = 0; // consensus candidates (world / cabin) uploaded for this pass uint32_t m_prepW = 0, m_prepH = 0; // v0.10.0 phase 6: full image size of the prepared pass (the vote grid) uint32_t m_prepClip[4] = {}; // v0.10.0 phase 9: the vote grid rect (x0 aligned to 4, y0 aligned, x1, y1) + uint32_t m_eyeRect[4] = {}; // v0.10.2: this eye's DLAA rect (x0, y0, x1, y1) of the coming Prepare (SetEyeRect) + bool m_eyeRectOn = false; uint32_t m_prepFold = 0; // v0.10.0 phase 9: FoldU.x of the prepared pass bool m_prepCompact = false; // v0.10.0 phase 18: the prepared pass runs the compact vote (FoldU.x bit 5) uint32_t m_prepGrid = 0; // v0.10.0 phase 18: vote-grid groups of the prepared pass (stats) @@ -829,6 +858,7 @@ class DrawIdMv { float m_ofMoverMinW = -1.0f; float m_ofMissMin = -1.0f; uint32_t m_consRun[2] = {}; // v0.10.0 phase 8: landed readbacks in a row with a used consensus (>= kConsMin) + uint32_t m_consFail[2] = {}; // v0.10.2: landed readbacks in a row WITHOUT one (mv_cons_fail_tol) int m_lastCons[2] = {}; uint32_t m_lastConsN[2] = {}; uint32_t* m_candTmp = nullptr; // kMax: consensus candidate scratch (Prepare) diff --git a/src/gpu_perf.cpp b/src/gpu_perf.cpp index f5aa2f4..55f65b0 100644 --- a/src/gpu_perf.cpp +++ b/src/gpu_perf.cpp @@ -9,7 +9,7 @@ namespace GpuPerf { namespace { -struct SecInfo { const char* name; bool inTotal; bool sampled; }; +struct SecInfo { const char* name; bool inTotal; bool sampled; bool perFrame; }; // perFrame: v0.10.3 phase 29b const SecInfo kInfo[kCount] = { { "replay", true, false }, { "fwd-replay", true, false }, { "snapshot", true, false }, { "cand-copy*", true, true }, { "fwd-depth", true, false }, { "fwd-init", true, false }, // phase 10: exact @@ -25,6 +25,7 @@ const SecInfo kInfo[kCount] = { { "pass-B", true, false }, { "mv-misc", true, false }, { "NGX", false, false }, { "rcas", true, false }, { "copy-out", true, false }, { "dbg-view", true, false }, { "mirrors", true, false }, { "mirror-NGX", false, false }, + { "fps-box", false, false, true }, // v0.10.3 phase 29b }; static_assert(sizeof(kInfo) / sizeof(kInfo[0]) == kCount, "section table"); @@ -68,6 +69,9 @@ struct Win { uint64_t n[2][kCount] = {}; double totMax[2] = {}; uint64_t unattributed = 0, dropped = 0; + double fsum[kCount] = {}, fmx[kCount] = {}; // v0.10.3 phase 29b: per-frame sections (perFrame): ms, largest set sum + uint64_t fn[kCount] = {}; // ... sets they ran in + uint64_t sets = 0; // ... landed (non-disjoint) sets } g_w; int EyeOf(uint64_t tag) { @@ -139,7 +143,7 @@ Set* Cur(ID3D11DeviceContext* ctx) { } int MapSec(int sec) { - if (!g_mirror) return sec; + if (!g_mirror || kInfo[sec].perFrame) return sec; // (phase 29b: a per-frame section is never a mirror's) return sec == kNgx ? kMirNgx : kMirror; } @@ -167,6 +171,7 @@ bool On() { return g_on && !g_broken; } const char* Name(int sec) { return sec >= 0 && sec < kCount ? kInfo[sec].name : "?"; } bool InTotal(int sec) { return sec >= 0 && sec < kCount && kInfo[sec].inTotal; } bool IsSampled(int sec) { return sec >= 0 && sec < kCount && kInfo[sec].sampled; } +bool IsPerFrame(int sec) { return sec >= 0 && sec < kCount && kInfo[sec].perFrame; } void SetFrame(uint64_t frame) { g_frame = frame; } void SetPass(uint64_t tag) { g_tag = tag; } uint64_t Pass() { return g_tag; } @@ -234,9 +239,17 @@ void Poll(ID3D11DeviceContext* ctx) { // per (tag) accumulation inside this set uint64_t tags[kTags]; int nTags = 0; double secSum[kTags][kCount]; bool seen[kTags][kCount]; memset(secSum, 0, sizeof(secSum)); memset(seen, 0, sizeof(seen)); + double fSet[kCount] = {}; // v0.10.3 phase 29b: the per-frame sections of this set (no tag / eye) + bool fSeen[kCount] = {}; + ++g_w.sets; for (int e = 0; e < s.nEnt; ++e) { const Ent& en = s.ent[e]; if (en.sec < 0 || en.t1 < 0) continue; + if (kInfo[en.sec].perFrame) { + fSet[en.sec] += t[en.t1] >= t[en.t0] ? (double)(t[en.t1] - t[en.t0]) * toMs : 0.0; + fSeen[en.sec] = true; + continue; + } int ti = -1; for (int q = 0; q < nTags; ++q) if (tags[q] == en.tag) { ti = q; break; } if (ti < 0) { @@ -264,6 +277,12 @@ void Poll(ID3D11DeviceContext* ctx) { } if (tot > g_w.totMax[eye]) g_w.totMax[eye] = tot; } + for (int c = 0; c < kCount; ++c) { + if (!fSeen[c]) continue; + g_w.fsum[c] += fSet[c]; + ++g_w.fn[c]; + if (fSet[c] > g_w.fmx[c]) g_w.fmx[c] = fSet[c]; + } } } @@ -285,6 +304,13 @@ bool Stats(int eye, EyeStats* out) { return true; } +FrameStat FrameStats(int sec) { + FrameStat f; + if (sec < 0 || sec >= kCount) return f; + f.sumMs = g_w.fsum[sec]; f.maxMs = g_w.fmx[sec]; f.n = g_w.fn[sec]; f.sets = g_w.sets; + return f; +} + uint64_t Unattributed() { return g_w.unattributed; } uint64_t Dropped() { return g_w.dropped; } void Restart() { g_w = Win(); ++g_restarts; } @@ -313,6 +339,12 @@ void LogWindow(uint64_t blit, double sceneMs, uint32_t sceneN) { } Log("%s", buf); } + for (int c = 0; c < kCount; ++c) { // v0.10.3 phase 29b: the per-frame sections (the fps box) + if (!kInfo[c].perFrame || !g_w.fn[c]) continue; + Log("perf @blit %llu: %s %.3f avg / %.3f max ms per frame (%llu of %llu timed frames; per frame, both eyes / every target " + "together; not in the eye lines' mod total)", (unsigned long long)blit, kInfo[c].name, + g_w.sets ? g_w.fsum[c] / (double)g_w.sets : 0.0, g_w.fmx[c], (unsigned long long)g_w.fn[c], (unsigned long long)g_w.sets); + } if (g_w.unattributed || g_w.dropped) Log("perf @blit %llu: %llu sections of passes that never reached a blit (not in the eye lines), %llu sections not timed " "(a frame's query set full / all sets in flight / disjoint)", (unsigned long long)blit, diff --git a/src/gpu_perf.h b/src/gpu_perf.h index afdd4a8..0836648 100644 --- a/src/gpu_perf.h +++ b/src/gpu_perf.h @@ -55,6 +55,9 @@ enum Sec : int { kDbgView, // Ctrl+F6 debug view kMirror, // mirror units: everything except their NGX evaluation (replay, snapshot, MV, copies, RCAS) kMirNgx, // mirror units' NGX evaluation (NOT in the mod total) + kOverlay, // v0.10.3 phase 29b: the fps box draws (TuningMenu::DrawWidget: the VR quad image, each eye picture, the + // flat / desktop-mirror backbuffer) -- PER FRAME, not per pass: not tagged with an eye (FrameStats), NOT in + // the per-eye mod total kCount }; @@ -63,6 +66,7 @@ bool On(); const char* Name(int sec); bool InTotal(int sec); // false: NGX / mirror NGX / the sampled replay breakdown bool IsSampled(int sec); +bool IsPerFrame(int sec); // v0.10.3 phase 29b: kOverlay -- summed per landed query set (= per Present), not per eye void SetFrame(uint64_t frame); // the Present counter (a new value rolls the set over at the next Begin; no D3D call) void SetPass(uint64_t tag); // the pass the following sections belong to @@ -90,6 +94,10 @@ struct EyeStats { bool Stats(int eye, EyeStats* out); uint64_t Unattributed(); // landed sections whose pass never reached a blit (window) uint64_t Dropped(); // sections not timed because a set was full / a set was lost (window) +// v0.10.3 phase 29b: a per-frame section's window sums since the last Restart: its ms, the largest one-frame sum, the query sets +// (= Present frames) it ran in, and every set that landed (the per-frame average = sumMs / sets: a frame without it counts 0) +struct FrameStat { double sumMs = 0.0, maxMs = 0.0; uint64_t n = 0, sets = 0; }; +FrameStat FrameStats(int sec); void Restart(); // restarts the window uint32_t Restarts(); // window restarts so far (the tuning menu's own 1-s deltas see a restart in between) // "perf eye N: ..." lines (one per eye with data); sceneMs < 0 = no GPU spans figure. Restarts the window. diff --git a/src/inject.cpp b/src/inject.cpp index 0229d2e..41c61ff 100644 --- a/src/inject.cpp +++ b/src/inject.cpp @@ -1,3 +1,12 @@ +// v0.10.3 -- (1) phase 27: XrHook (xr_hook.cpp) detours GetProcAddress to wrap the OpenXR runtime / API layers; the VR panel +// was drawn right before xrReleaseSwapchainImage (fixed the game UI painting over it). (2) phase 28/28b: fps_vr_lock, +// the VR fps box fixed in the cab (located poses corrected to the submitted ones). (3) phase 29: the panel + fps box +// as OpenXR QUAD layers appended at xrEndFrame (menu_vr_layer; menu_vr_dist, menu_vr_face as a true 3-D turn, the +// fixed box in the game's LOCAL space; fps box cost = GpuPerf kOverlay). 29c-e: collapsible Panel / FPS groups, +// short footer, 3-line description fit, Reset = hold Right (bind_hold_ms), one bar square per second. +// v0.10.2 -- VR perf pass (mv_cons_fail_tol, mirror units pre-built from mirror_sizes.txt, mv_area_clip, mirror_mv camera-only +// mirrors), 7-state Mirror DLAA row, Reset row, wheel / D-pad bindings (dinput_wrap.cpp JoyTap), HOLD TO BIND +// (MenuBindTick; the open menu hides every key / button from the game). // v0.10.1 -- (1) phase 25: full-screen draws inside a jittered pass (the forward-pass FOG TRIANGLE: Draw verts=3, UV-sampled) // get the game's own viewport back for that draw and the shift after it; with the shifted + overscanned viewport // the fog sampled the neighbour texel = a dark 1 px line on every silhouette in flat (hkDraw). @@ -586,6 +595,7 @@ #include "log.h" #include "dinput_wrap.h" // v0.10.0 tuning menu: its keys are hidden from the game while open #include "ofxr.h" // v0.10.0 OFXR Bridge module-range pass-through +#include "xr_hook.h" // v0.10.3 phase 27: OpenXR xrReleaseSwapchainImage (VR panel draw point) #ifdef WITH_DLAA #include "scene_dlaa.h" #include "preview_blit.h" @@ -631,17 +641,25 @@ bool g_resetNext = true; // pass reset=true to NGX on the next e // v0.7.7: every hotkey is a re-bindable action (dlaa.ini key_*), see KeyBind / PollKeys below. One down-edge // state per virtual-key code (g_vkWasDown) replaces the F-key-only table of v0.6.5. bool g_vkWasDown[256] = {}; // edge detect per VK, refreshed every top-level Present (PollKeys) -// v0.10.0 IN-GAME TUNING MENU (see the "TUNING MENU" block after ToggleMirrors): open state (also read by the key-swallowing -// window / DirectInput threads, dinput_wrap.cpp) and the panel placement (dlaa.ini menu_*; flat and VR have their own). +// v0.10.0 IN-GAME TUNING MENU (see the "TUNING MENU" block after ToggleMirrors): open state (also read by the input-hiding +// window / DirectInput threads, dinput_wrap.cpp MenuHidesInput) and the panel placement (dlaa.ini menu_*; flat and VR have +// their own). std::atomic g_menuOpen{false}; int g_menuX = 2, g_menuY = 8; // flat: % of the picture width / height to the panel's left / top edge (0..90) float g_menuScale = 1.0f; // flat: 0.5..2.0 (1 = 720 px wide at 1080 p, scales with the picture height) int g_menuVrX = 0, g_menuVrY = -5; // VR: % of the eye width / height, panel CENTRE from the eye's optical centre (-50..50) float g_menuVrScale = 1.0f; // VR: 0.5..2.0 (1 = 54 % of the eye width: the text of a 45 %-wide 720-px panel) -int g_menuVrDepth = 12; // VR: px inward shift per eye (eye 0 right, eye 1 left), 0..200 +int g_menuVrDepth = 12; // VR: px inward shift per eye (towards the nose: crossed = nearer), 0..200 +int g_menuVrDist = 100; // v0.10.3 phase 29b, VR: dlaa.ini menu_vr_dist -- cm, 30..300: the panel QUAD's distance + // (menu_vr_layer = 1; the Depth row there; menu_vr_depth is the in-picture shift) int g_menuVrFace = 1; // v0.10.0 phase 16, VR: 1 = the panel is a 3-D quad turned to FACE the eye (dlaa.ini // menu_vr_face, MenuFacingGeom), 0 = a flat picture as before -bool g_menuExplicit = false; // a menu_* value was changed in the menu -> SaveSettings writes the 8 menu_* keys +// v0.10.3 phase 29, VR: dlaa.ini menu_vr_layer -- 1 (default) = the panel and the fps box are OpenXR QUAD composition layers the +// compositor places itself (no swim in the runtime's reprojection; XrHook::OverlaySet / MenuOverlayDraw); 0 = drawn into the eye +// picture as before (also the fallback whenever the quad path is not up: no OpenXR session / swapchain / xrEndFrame seen). +int g_menuVrLayer = 1; +bool g_menuExplicit = false; // a menu_* value was changed in the menu -> SaveSettings writes the 9 menu_* keys +int g_bindHoldMs = 5000; // v0.10.2 dlaa.ini bind_hold_ms (500..10000): the menu's hold-to-bind time (MenuBindTick) // v0.10.0 live fps box (dlaa.ini fps_*; the tuning menu's FPS counter rows): drawn where the panel draws, also while the menu // is closed. Flat and VR have their own placement. bool g_fpsShow = false; // fps_show: the box is on @@ -653,7 +671,12 @@ int g_fpsVrX = 0, g_fpsVrY = -25; // VR: % of the eye width / height, box // the flat box as seen in the headset (still readable after the headset's downsampling). constexpr float kFpsVrScaleDefault = 0.3f; float g_fpsVrScale = kFpsVrScaleDefault; -bool g_fpsExplicit = false; // an fps_* value was changed in the menu -> SaveSettings writes the 7 fps_* keys +// v0.10.3 phase 28, VR: dlaa.ini fps_vr_lock -- 0 = the box follows the headset (drawn at fps_vr_x / fps_vr_y % from each eye's +// optical centre, as before), 1 = FIXED IN THE CAB: a point 0.8 m from the origin of the game's OpenXR reference space, in the +// direction yaw = fps_vr_x degrees (+ right), pitch = -fps_vr_y degrees (fps_vr_y + = down, as the head-locked %), projected +// into each eye picture with that eye's located pose + fov (FpsVrLockedPlace; XrHook::LatestViews). +int g_fpsVrLock = 0; +bool g_fpsExplicit = false; // an fps_* value was changed in the menu -> SaveSettings writes the 8 fps_* keys int g_menuBlitEye = -1; // VR: the eye blit this Draw is (HandlePossibleBlit), drawn on after it (hkDraw) void* g_menuBlitRt = nullptr; // ... and its render target (identity only) // v0.10.0 phase 16 VR LATE PANEL (see that block after MenuDrawPreview): the panel / fps box go LAST onto each eye picture. @@ -837,6 +860,10 @@ bool IsForeground() { // Every action has a binding "[Shift+][Ctrl+][Alt+]Key" (dlaa.ini key_, defaults below = the v0.7.6 keys). // A binding fires on the key's DOWN-EDGE only, game in the foreground, with EXACTLY its modifiers held (a binding // without modifiers fires only when none of Shift/Ctrl/Alt is down). vk == 0 = disabled ("none"). +// v0.10.1: a value may hold a second binding after a comma, and a binding may be a CONTROLLER button / POV direction of a +// DirectInput wheel / gamepad the game opened ("Wheel7" = button 7, "WheelUp/Right/Down/Left" = POV hat 1; dinput_wrap.cpp +// taps it). E.g. "Delete, Wheel10": the keyboard part (exact modifiers, as before) OR the controller part (modifiers +// ignored) down = the action is down; the down-edge / foreground / menu-repeat rules apply to that combined state. enum KeyAction { KA_MODE_CYCLE, KA_MODEL1, KA_MODEL2, KA_MODEL3, KA_MODEL4, KA_AREA_DOWN, KA_AREA_UP, KA_SHARPEN_DOWN, KA_SHARPEN_UP, KA_WIDTH_DOWN, KA_WIDTH_UP, KA_DLAA_TOGGLE, KA_SAVE, KA_UPSCALE_TOGGLE, KA_MV_TOGGLE, @@ -858,8 +885,10 @@ struct KeyBind { const char* def; // default binding text int vk; // 0 = disabled unsigned mods; // MOD_*_BIT - char name[48]; // binding as shown in logs + char name[64]; // binding as shown in logs / the menu's Hotkey column (v0.10.1: was 48; the trimmed raw text) bool hit; // down-edge this Present (PollKeys) + int joy; // v0.10.1 controller part: 0 none, 1..128 button N, 129..132 POV up / right / down / left + // (KeySwallow::kJoy*, dinput_wrap.h); last member so the table below needs no change }; KeyBind g_keys[KA_COUNT] = { { "key_mode_cycle", "End", 0, 0, "", false }, @@ -901,17 +930,96 @@ KeyBind g_keys[KA_COUNT] = { { "key_menu_right", "Right", 0, 0, "", false }, // v0.10.0 menu: value up / next }; inline bool KeyHit(KeyAction a) { return g_keys[a].hit; } +// v0.10.1 dlaa.ini controller_name: non-empty = only DirectInput controllers whose product name CONTAINS this text +// (ASCII case-insensitive; stored lower case) are tapped / filtered (dinput_wrap.cpp CreateDevice via ControllerNameAllowed), +// so a shifter sharing button numbers with the wheel cannot fire a WheelN binding. Empty = every controller. Written only by +// LoadConfig (DllMain attach, before the game can create a device). +char g_controllerName[64] = ""; inline const char* KeyName(KeyAction a) { return g_keys[a].name; } bool g_keyRepeat[KA_COUNT] = {}; // v0.10.0: this Present's hit is an auto-repeat (menu navigation keys only) - -// Parses one binding ("Ctrl+Shift+F5", case-insensitive, spaces ignored). "" / "none" -> vk 0 (disabled), true. -bool ParseBinding(const char* text, int* vkOut, unsigned* modsOut) { - char buf[64]; int n = 0; +// v0.10.2: the action was ACTIVE at the last PollKeys (keyboard part with exact modifiers or controller part down; was +// PollKeys' s_wasActive). The menu's hold-to-bind sets it for a freshly bound action, so the input still held from the hold +// does not fire the action at once (a hit needs "not active the Present before"); the Menu keys row's tap test reads it. +bool g_keyWasActive[KA_COUNT] = {}; +// v0.10.2: the controller state PollKeys read this Present (KeySwallow::ControllerState consumes its press latches, so the +// menu's hold-to-bind scan uses this copy instead of a second call). Render thread. +uint32_t g_pollJoyBtn[4] = {}; +unsigned g_pollJoyPov = 0; + +// v0.10.1: one controller token (lower case, no spaces): "wheel1".."wheel128" -> 1..128, "wheelup" / "wheelright" / +// "wheeldown" / "wheelleft" -> KeySwallow::kJoyPovUp..kJoyPovLeft. Modifiers are not allowed in front of it. +bool ParseJoyToken(const char* p, int* joyOut) { + if (strncmp(p, "wheel", 5)) return false; + p += 5; + if (!strcmp(p, "up")) { *joyOut = KeySwallow::kJoyPovUp; return true; } + if (!strcmp(p, "right")) { *joyOut = KeySwallow::kJoyPovRight; return true; } + if (!strcmp(p, "down")) { *joyOut = KeySwallow::kJoyPovDown; return true; } + if (!strcmp(p, "left")) { *joyOut = KeySwallow::kJoyPovLeft; return true; } + const size_t len = strlen(p); + if (len < 1 || len > 3) return false; + for (size_t i = 0; i < len; ++i) if (!isdigit((unsigned char)p[i])) return false; + const int b = atoi(p); + if (b < 1 || b > KeySwallow::kJoyMaxButton) return false; + *joyOut = b; + return true; +} +bool ParseKeyChord(const char* p, int* vkOut, unsigned* modsOut); // below +// Parses one key_* value ("Ctrl+Shift+F5", case-insensitive, spaces ignored). "" / "none" -> vk 0 + joy 0 (disabled), true. +// v0.10.1: up to TWO bindings separated by a comma, at most one keyboard chord and one controller token ("Delete, Wheel10", +// "WheelUp, Up"). A comma right after a '+' or at the start of a part is the comma KEY ("Shift+,", ",, Wheel3"). Any part +// not understood (or two of the same kind, or "none" in a pair) rejects the whole value. +bool ParseBinding(const char* text, int* vkOut, unsigned* modsOut, int* joyOut) { + char buf[80]; int n = 0; for (const char* c = text; *c && n < (int)sizeof(buf) - 1; ++c) if (*c != ' ' && *c != '\t' && *c != '\r' && *c != '\n') buf[n++] = (char)tolower((unsigned char)*c); buf[n] = 0; - *vkOut = 0; *modsOut = 0; + *vkOut = 0; *modsOut = 0; *joyOut = 0; if (!n || !strcmp(buf, "none")) return true; + char part[2][80] = {}; + int parts = 0, start = 0; + for (int i = 0; i <= n; ++i) { + const bool sep = i < n && buf[i] == ',' && i > start && buf[i - 1] != '+'; + if (i < n && !sep) continue; + if (parts == 2) return false; // a third binding + memcpy(part[parts], buf + start, (size_t)(i - start)); + part[parts][i - start] = 0; + ++parts; + start = i + 1; + } + int vk = 0, joy = 0; unsigned mods = 0; + for (int k = 0; k < parts; ++k) { + if (!part[k][0]) return false; // "Delete," / ",Wheel3" with nothing on one side + int j = 0, v = 0; unsigned m = 0; + if (ParseJoyToken(part[k], &j)) { + if (joy) return false; // two controller parts + joy = j; + } else if (ParseKeyChord(part[k], &v, &m)) { + if (vk) return false; // two keyboard parts + vk = v; mods = m; + } else { + return false; + } + } + *vkOut = vk; *modsOut = mods; *joyOut = joy; + return true; +} +// The named keys of a chord (letters, digits, F1..F24 and Numpad0..Numpad9 are handled in code). v0.10.2: one table in the +// CANONICAL spelling -- ParseKeyChord compares case-insensitively, KeyChordName writes this spelling back (a binding made in +// the menu's hold-to-bind reads like the defaults: "PageUp", "NumpadAdd", "["). +const struct { const char* name; int vk; } kKeyChordNames[] = { + { "Home", VK_HOME }, { "End", VK_END }, { "Insert", VK_INSERT }, { "Delete", VK_DELETE }, + { "PageUp", VK_PRIOR }, { "PageDown", VK_NEXT }, { "Up", VK_UP }, { "Down", VK_DOWN }, + { "Left", VK_LEFT }, { "Right", VK_RIGHT }, { "Space", VK_SPACE }, { "Tab", VK_TAB }, + { "Backspace", VK_BACK }, { "Enter", VK_RETURN }, { "Pause", VK_PAUSE }, + { "NumpadAdd", VK_ADD }, { "NumpadSubtract", VK_SUBTRACT }, { "NumpadMultiply", VK_MULTIPLY }, + { "NumpadDivide", VK_DIVIDE }, { "NumpadDecimal", VK_DECIMAL }, + { "[", VK_OEM_4 }, { "]", VK_OEM_6 }, { ";", VK_OEM_1 }, { "'", VK_OEM_7 }, { ",", VK_OEM_COMMA }, + { ".", VK_OEM_PERIOD }, { "/", VK_OEM_2 }, { "\\", VK_OEM_5 }, { "-", VK_OEM_MINUS }, + { "=", VK_OEM_PLUS }, { "`", VK_OEM_3 }, +}; +// One keyboard chord, already lower case without spaces ("ctrl+shift+f5"). False = not a key ("none" included). +bool ParseKeyChord(const char* buf, int* vkOut, unsigned* modsOut) { + *vkOut = 0; *modsOut = 0; unsigned mods = 0; const char* p = buf; for (;;) { // peel leading "shift+" / "ctrl+" / "alt+" (the key stays last) @@ -931,28 +1039,56 @@ bool ParseBinding(const char* text, int* vkOut, unsigned* modsOut) { } else if (!strncmp(p, "numpad", 6) && len == 7 && isdigit((unsigned char)p[6])) vk = VK_NUMPAD0 + (p[6] - '0'); else { - static const struct { const char* name; int vk; } kNames[] = { - { "home", VK_HOME }, { "end", VK_END }, { "insert", VK_INSERT }, { "delete", VK_DELETE }, - { "pageup", VK_PRIOR }, { "pagedown", VK_NEXT }, { "up", VK_UP }, { "down", VK_DOWN }, - { "left", VK_LEFT }, { "right", VK_RIGHT }, { "space", VK_SPACE }, { "tab", VK_TAB }, - { "backspace", VK_BACK }, { "enter", VK_RETURN }, { "pause", VK_PAUSE }, - { "numpadadd", VK_ADD }, { "numpadsubtract", VK_SUBTRACT }, { "numpadmultiply", VK_MULTIPLY }, - { "numpaddivide", VK_DIVIDE }, { "numpaddecimal", VK_DECIMAL }, - { "[", VK_OEM_4 }, { "]", VK_OEM_6 }, { ";", VK_OEM_1 }, { "'", VK_OEM_7 }, { ",", VK_OEM_COMMA }, - { ".", VK_OEM_PERIOD }, { "/", VK_OEM_2 }, { "\\", VK_OEM_5 }, { "-", VK_OEM_MINUS }, - { "=", VK_OEM_PLUS }, { "`", VK_OEM_3 }, - }; - for (const auto& k : kNames) if (!strcmp(p, k.name)) { vk = k.vk; break; } + for (const auto& k : kKeyChordNames) if (!_stricmp(p, k.name)) { vk = k.vk; break; } } if (!vk) return false; *vkOut = vk; *modsOut = mods; return true; } +// v0.10.2: the inverse of ParseKeyChord's key part -- the canonical name of a virtual key ("F5", "Numpad3", "PageUp", "[", +// "A", "0"). False (out = "") = the parser has no name for it: such a key cannot be bound (the hold-to-bind ignores it). +bool KeyChordName(int vk, char* out, size_t cap) { + if (!cap) return false; + out[0] = 0; + if ((vk >= 'A' && vk <= 'Z') || (vk >= '0' && vk <= '9')) snprintf(out, cap, "%c", (char)vk); + else if (vk >= VK_F1 && vk <= VK_F24) snprintf(out, cap, "F%d", vk - VK_F1 + 1); + else if (vk >= VK_NUMPAD0 && vk <= VK_NUMPAD9) snprintf(out, cap, "Numpad%d", vk - VK_NUMPAD0); + else for (const auto& k : kKeyChordNames) if (k.vk == vk) { snprintf(out, cap, "%s", k.name); break; } + return out[0] != 0; +} +// v0.10.2: the dlaa.ini token of a controller code ("Wheel7", "WheelUp"); "" for 0 / an unknown code. +void JoyTokenName(int joy, char* out, size_t cap) { + if (!cap) return; + static const char* const kPov[4] = { "WheelUp", "WheelRight", "WheelDown", "WheelLeft" }; + if (joy >= 1 && joy <= KeySwallow::kJoyMaxButton) snprintf(out, cap, "Wheel%d", joy); + else if (joy >= KeySwallow::kJoyPovUp && joy <= KeySwallow::kJoyPovLeft) snprintf(out, cap, "%s", kPov[joy - KeySwallow::kJoyPovUp]); + else out[0] = 0; +} +// v0.10.2: the canonical binding text ParseBinding reads back: "Ctrl+Shift+F5", "Wheel7", "Ctrl+F5, Wheel7", "none". +void KeyBindText(int vk, unsigned mods, int joy, char* out, size_t cap) { + if (!cap) return; + char key[24] = "", pad[16] = ""; + JoyTokenName(joy, pad, sizeof(pad)); + if (vk && KeyChordName(vk, key, sizeof(key))) + snprintf(out, cap, "%s%s%s%s%s%s", (mods & MOD_CTRL_BIT) ? "Ctrl+" : "", (mods & MOD_SHIFT_BIT) ? "Shift+" : "", + (mods & MOD_ALT_BIT) ? "Alt+" : "", key, pad[0] ? ", " : "", pad); + else + snprintf(out, cap, "%s", pad[0] ? pad : "none"); +} +// v0.10.3 phase 29c: the SHORT name of an action's binding for the tuning menu's footer / Menu keys row (one line in VR): the +// keyboard chord only ("Delete", "Up", "Ctrl+F5"); with no keyboard key the controller token ("Wheel7"); "none" with neither. +// The user's own binding, only without its second part (KeyName = the full text "Up, WheelUp"). +void KeyShortName(KeyAction a, char* out, size_t cap) { + const KeyBind& k = g_keys[a]; + char key[24]; + if (k.vk && KeyChordName(k.vk, key, sizeof(key))) KeyBindText(k.vk, k.mods, 0, out, cap); + else KeyBindText(0, 0, k.joy, out, cap); +} // Resets every binding to its default (called first in LoadConfig). void InitKeyBinds() { for (KeyBind& k : g_keys) { - ParseBinding(k.def, &k.vk, &k.mods); + ParseBinding(k.def, &k.vk, &k.mods, &k.joy); snprintf(k.name, sizeof(k.name), "%s", k.def); } } @@ -960,18 +1096,19 @@ void InitKeyBinds() { void SetKeyBindFromIni(const char* key, const char* value) { for (KeyBind& k : g_keys) { if (strcmp(key, k.ini)) continue; - char trimmed[48] = {}; int n = 0; // trimmed raw text, used as the display name + char trimmed[64] = {}; int n = 0; // trimmed raw text, used as the display name (v0.10.1: was 48) const char* s = value; while (*s == ' ' || *s == '\t') ++s; for (; *s && *s != '\r' && *s != '\n' && n < (int)sizeof(trimmed) - 1; ++s) trimmed[n++] = *s; while (n > 0 && (trimmed[n - 1] == ' ' || trimmed[n - 1] == '\t')) trimmed[--n] = 0; - int vk; unsigned mods; - if (ParseBinding(trimmed, &vk, &mods)) { - k.vk = vk; k.mods = mods; - snprintf(k.name, sizeof(k.name), "%s", vk ? trimmed : "none"); + int vk, joy; unsigned mods; + if (ParseBinding(trimmed, &vk, &mods, &joy)) { + k.vk = vk; k.mods = mods; k.joy = joy; + snprintf(k.name, sizeof(k.name), "%s", (vk || joy) ? trimmed : "none"); } else { - Log("dlaa.ini: %s '%s' not recognised (modifiers Shift/Ctrl/Alt + one key, or none) -- keeping %s", - k.ini, trimmed, k.name); + Log("dlaa.ini: %s '%s' not recognised (one or two bindings separated by a comma: modifiers Shift/Ctrl/Alt + one " + "key, and/or one controller button Wheel1..Wheel128 or D-pad WheelUp / WheelDown / WheelLeft / WheelRight; " + "or none) -- keeping %s", k.ini, trimmed, k.name); } return; } @@ -979,27 +1116,52 @@ void SetKeyBindFromIni(const char* key, const char* value) { // Logs the final binding table once and warns about two actions on the same combo. void LogKeyBinds() { char line[512]; int len = 0; + int nJoy = 0; for (int i = 0; i < KA_COUNT; ++i) { char item[96]; - const int w = snprintf(item, sizeof(item), "%s=%s", g_keys[i].ini + 4, g_keys[i].vk ? g_keys[i].name : "none"); + const int w = snprintf(item, sizeof(item), "%s=%s", g_keys[i].ini + 4, + (g_keys[i].vk || g_keys[i].joy) ? g_keys[i].name : "none"); if (len + w + 2 >= (int)sizeof(line)) { Log("hotkeys: %s", line); len = 0; } len += snprintf(line + len, sizeof(line) - (size_t)len, "%s%s", len ? " " : "", item); + if (g_keys[i].joy) ++nJoy; } if (len) Log("hotkeys: %s", line); for (int i = 0; i < KA_COUNT; ++i) - for (int j = i + 1; j < KA_COUNT; ++j) + for (int j = i + 1; j < KA_COUNT; ++j) { if (g_keys[i].vk && g_keys[i].vk == g_keys[j].vk && g_keys[i].mods == g_keys[j].mods) Log("dlaa.ini: WARNING %s and %s share the binding %s -- both will fire", g_keys[i].ini, g_keys[j].ini, g_keys[i].name); + if (g_keys[i].joy && g_keys[i].joy == g_keys[j].joy) // v0.10.1 the controller part + Log("dlaa.ini: WARNING %s and %s share the controller binding (%s / %s) -- both will fire", g_keys[i].ini, + g_keys[j].ini, g_keys[i].name, g_keys[j].name); + } + if (nJoy) // v0.10.1 + Log("hotkeys: %d action(s) bound to a controller button / D-pad (WheelN = button N of ANY DirectInput controller the " + "game opens, modifiers ignored; the first press of each button is logged as 'controller ...: button N pressed')", nJoy); } // Once per top-level Present: fills KeyBind::hit. The per-VK was-down state is refreshed every call for every bound // key, foreground or not, so a key released while the game is not focused is not later seen as a fresh press. +// v0.10.1: an action is ACTIVE when its keyboard part is down with exact modifiers OR its controller part is down +// (KeySwallow::ControllerState, modifiers ignored). A hit = a down-edge of either part while the action was not active +// the Present before (so holding the key and then pressing the wheel button does not fire twice); the controller part's +// was-down is kept per action. A keyboard-only binding behaves exactly as before (its edge implies it was not active). +inline bool JoyPartDown(int joy, const uint32_t btn[4], unsigned pov) { + if (joy >= 1 && joy <= KeySwallow::kJoyMaxButton) return (btn[(joy - 1) >> 5] & (1u << ((joy - 1) & 31))) != 0; + return (pov & KeySwallow::JoyPovBit(joy)) != 0; +} void PollKeys() { const bool fg = IsForeground(); const unsigned held = ((GetAsyncKeyState(VK_SHIFT) & 0x8000) ? MOD_SHIFT_BIT : 0u) | ((GetAsyncKeyState(VK_CONTROL) & 0x8000) ? MOD_CTRL_BIT : 0u) | ((GetAsyncKeyState(VK_MENU) & 0x8000) ? MOD_ALT_BIT : 0u); - bool down[KA_COUNT]; + uint32_t joyBtn[4]; unsigned joyPov = 0; // v0.10.1 every tapped DirectInput controller, OR'd + KeySwallow::ControllerState(joyBtn, &joyPov); + for (int w = 0; w < 4; ++w) g_pollJoyBtn[w] = joyBtn[w]; // v0.10.2 for the menu's hold-to-bind scan (MenuBindScan) + g_pollJoyPov = joyPov; + bool down[KA_COUNT], joyDown[KA_COUNT], active[KA_COUNT]; + static bool s_joyWasDown[KA_COUNT] = {}; // v0.10.1 the controller part, per action + bool* const s_wasActive = g_keyWasActive; // v0.10.1 keyboard part (exact mods) OR controller part, per action + // (v0.10.2: file scope, the hold-to-bind sets it) // v0.10.0 tuning menu: the navigation keys fire only while the menu is open, and repeat while held (first repeat // 350 ms after the press, then every 70 ms; at most one per Present). const bool menuOpen = g_menuOpen.load(std::memory_order_relaxed); @@ -1009,16 +1171,23 @@ void PollKeys() { KeyBind& k = g_keys[i]; k.hit = false; down[i] = k.vk && (GetAsyncKeyState(k.vk) & 0x8000) != 0; - if (down[i] && !g_vkWasDown[k.vk & 0xFF] && fg && held == k.mods) k.hit = true; + joyDown[i] = k.joy && JoyPartDown(k.joy, joyBtn, joyPov); + active[i] = (down[i] && held == k.mods) || joyDown[i]; + const bool kbEdge = down[i] && !g_vkWasDown[k.vk & 0xFF] && held == k.mods; + const bool joyEdge = joyDown[i] && !s_joyWasDown[i]; + if ((kbEdge || joyEdge) && fg && !s_wasActive[i]) k.hit = true; if (IsMenuNavKey(i)) { g_keyRepeat[i] = false; - if (!menuOpen || !down[i] || !fg || held != k.mods) { k.hit = k.hit && menuOpen; s_repeatAt[i] = 0; } + if (!menuOpen || !active[i] || !fg) { k.hit = k.hit && menuOpen; s_repeatAt[i] = 0; } else if (k.hit) s_repeatAt[i] = now + 350; else if (s_repeatAt[i] && now >= s_repeatAt[i]) { k.hit = true; g_keyRepeat[i] = true; s_repeatAt[i] = now + 70; } } } - for (int i = 0; i < KA_COUNT; ++i) // update after all edges are computed (bindings may share a VK) + for (int i = 0; i < KA_COUNT; ++i) { // update after all edges are computed (bindings may share a VK) if (g_keys[i].vk) g_vkWasDown[g_keys[i].vk & 0xFF] = down[i]; + s_joyWasDown[i] = joyDown[i]; + s_wasActive[i] = active[i]; + } } // Writes "module.dll+0xOFFSET" for the module containing addr (or "?" + addr). @@ -1141,6 +1310,7 @@ void StepSharpRadius(int dir, uint64_t n); // v0.5.8 (v0.6.5 Shift+F9 -1 / Shift void StepArea(int dir, uint64_t n); // v0.6.4 (v0.6.5 Shift+F5 -1 / Shift+F6 +1) void CycleMode(uint64_t n, int dir = +1); // v0.7.2 plain End: DLAA -> DLSS -> off, saved to dlaa.ini (mode); v0.10.0 dir -1 = back void SaveSettings(uint64_t n); // v0.6.5 Shift+F12: write the 4 live values (v0.7.0: + dlss_upscale) to dlaa.ini +void ResetSettings(uint64_t n); // v0.10.0 tuning menu Reset row: every menu value back to the fresh-install state, live + dlaa.ini void ToggleDlaa(uint64_t n); // v0.10.0 (was inline): Shift+F11 DLAA on / off void ToggleUpscale(uint64_t n); // v0.10.0 (was inline): Ctrl+F4 DLSS upscale on / off void ToggleFwdDepth(uint64_t n); // v0.10.0 (was inline): Ctrl+F3 forward depth for the MVs on / off @@ -1167,12 +1337,15 @@ void MenuLateCountDraw(); void MenuLateReset(const char* why); void MenuLateArm(ID3D11DeviceContext* ctx, int eye, ID3D11RenderTargetView* rtv, char kind); // (MenuDrawVr / MenuDrawPreview) void MenuLateAtPresent(uint64_t n); -void FpsTick(); // v0.10.0 fps meter (the fps box + the menu's fps figure), per Present while either is on +void MenuLateOnXrRelease(void* swapchain, void* tex); // v0.10.3 phase 27: XrHook callback, right before xrReleaseSwapchainImage +void MenuOverlaySet(); // v0.10.3 phase 29: the VR quad layers' parameters for XrHook, per Present +void FpsTick(); // v0.10.0 fps meter (the fps box + the menu's fps figure), per Present while either is on void CheckPresetFallback(uint64_t n); // v0.5.7: beep + log when a live preset fell back to default void OnLiveTuningChange(); // v0.5.7; v0.6.2 also DLAA toggle / passive / MV (restarts the GPU spans window) void PreviewInvalidate(); // v0.7.8 profile-screen preview slots: drop their MV / DLSS history void PreviewNextFrame(uint64_t n); // v0.7.8 per-Present preview bookkeeping (slot counter, jitter, stats) void MaybePrewarmNgx(); // v0.7.8 NGX pre-warm at the first Present with DLAA on +void MirPrebuild(); // v0.10.2 mirror units from the size cache built on the boot screen (once) void ToggleDrawIds(uint64_t n); // v0.10.0 phase 2 Alt+F5: per-draw motion vectors (mv_objects 2 <-> 0) live void ToggleMirrors(uint64_t n); // v0.10.0 phase 2 Alt+F6: mirror DLAA on / off live void TogglePreTonemap(uint64_t n); // v0.10.0 phase 4 Alt+F7: main-scene DLAA before / after the tonemap @@ -1234,6 +1407,7 @@ void PresentFrameWork(IDXGISwapChain* sc, uint64_t n, ID3D11DeviceContext* bctx, Ofxr::OnPresent(n); // v0.10.0 OFXR Bridge: layer-module rescan cadence + pass-through stats #ifdef WITH_DLAA MaybePrewarmNgx(); // v0.7.8: NGX init + first feature on the boot screen (once) + MirPrebuild(); // v0.10.2: the cached mirror unit sizes, once NGX + the shaders are ready (once) #endif { // v0.7.7 re-bindable hotkeys (dlaa.ini key_*, see PollKeys) PollKeys(); // down-edges for this Present (exact modifiers, foreground only) @@ -1329,6 +1503,7 @@ void PresentFrameWork(IDXGISwapChain* sc, uint64_t n, ID3D11DeviceContext* bctx, } } if (g_menuLateN) MenuLateAtPresent(n); // v0.10.0 phase 16 VR late panel: finished eye pictures end here + MenuOverlaySet(); // v0.10.3 phase 29: the VR quad layers (XrHook; VR launches only) if (g_menuOpen.load(std::memory_order_relaxed) || g_fpsShow) MenuDrawAtPresent(sc, bctx); // v0.10.0 tuning menu panel + fps box (flat / mirror) #endif @@ -1674,13 +1849,18 @@ int g_mirVrMode = 2; // dlaa.ini mirror_vr_mode (VR o int g_mirVrViews = 2; // v0.10.0 phase 9: dlaa.ini mirror_vr_views (mirror_vr_mode 2), 1..8 // v0.10.0 phase 10: VR default 1 -> 2 (job D, see the handoff) int g_mirFlatMode = 1; // v0.10.0 phase 10: dlaa.ini mirror_flat_mode (flat; same values as mirror_vr_mode) -int MirMode(); // v0.10.0 phase 10: the mirror mode in force (VR: mirror_vr_mode, flat: _flat_) +bool g_mirCamOnly = false; // v0.10.2: dlaa.ini mirror_mv (camera = true, parts = false, default parts): the + // views modes 1 / 2 / 3 handle use camera motion vectors only (no per-draw ids, + // as mode 4); one key for VR and flat (as mirror_vr_views). MirIdsOff() +int MirMode(); // v0.10.0 phase 10: the mirror mode in force (VR: mirror_vr_mode, flat: _flat_) uint64_t g_mirVrSkip = 0, g_mirAltHeld = 0, g_mirAltRaw = 0; // stats window (mirror_vr_mode 2 / 3) bool g_slotPool = true; // dlaa.ini mv_slot_pool: pass-slot depth twin / forward depth / draw-id // textures go back to a shared pool when their pass is consumed // v0.10.0 phase 9 VR cost (the "phase 9 (v0.10.0)" config line, the "perf view" line) bool g_areaScissorCfg = true; // dlaa.ini mv_area_scissor: per-pixel work only inside the DLAA area (+ margin) int g_areaMarginCfg = -1; // dlaa.ini mv_area_margin (px around the area rect; -1 = dlaa_area_feather + 32) +bool g_areaClipCfg = true; // v0.10.2 dlaa.ini mv_area_clip: the rigid-parent vote grid / pixel count over the + // blit's OWN eye rect + margin (VR: not the union of both eyes' rects) int g_fwdResCfg = 0; // dlaa.ini mv_fwd_depth_res: 0 = auto (2 in VR, 1 flat), 1 = full, 2 = 1/2 resolution uint64_t g_p9Passes = 0, g_p9Clipped = 0, g_p9Half = 0; // stats window: passes / of them clipped / 1/2-res forward double g_p9ClipShare = 0.0; // stats window: sum of the clipped passes' rect share of the image @@ -1956,8 +2136,12 @@ bool PathNextToDll(const wchar_t* name, wchar_t* path); // defined below // terminator); every other line (comments, blanks, other keys) is kept byte-for-byte; a key not present is // appended at the end. A missing file is created with a one-line '#' header plus the keys. The new text is // written to dlaa.ini.tmp and MoveFileExW'd over the original, so a failed write cannot destroy the file. +// v0.10.0 (Reset row): an entry with an EMPTY val ("") means "remove this key": every matching line is dropped (not replaced), and +// the key is never appended. A missing file with only removals is left missing (nothing to write). // Returns true only if the temp was fully written AND the replace succeeded. -struct IniKV { const char* key; char val[32]; }; +constexpr int kIniMaxKeys = 40; // v0.10.3 phase 28: WriteIniPreserving's key cap (was 32) +struct IniKV { const char* key; char val[48]; }; // val[0] == 0: delete the key's line(s) (WriteIniPreserving) + // (v0.10.2: was 32 -- "Ctrl+Shift+Alt+NumpadSubtract, Wheel128" is 39) bool WriteIniPreserving(const IniKV* kv, int nkv) { wchar_t path[MAX_PATH], tmp[MAX_PATH]; if (!PathNextToDll(L"dlaa.ini", path) || !PathNextToDll(L"dlaa.ini.tmp", tmp)) return false; @@ -1972,11 +2156,15 @@ bool WriteIniPreserving(const IniKV* kv, int nkv) { fclose(f); } const char* nl = (in.find("\r\n") != std::string::npos) ? "\r\n" : "\n"; // match the file's ending + bool anyWrite = false; // at least one key with a value (else a missing file stays missing) + for (int k = 0; k < nkv && k < kIniMaxKeys; ++k) if (kv[k].val[0]) anyWrite = true; + if (in.empty() && !anyWrite) return true; // only removals and no file: nothing to do std::string out; out.reserve(in.size() + 256); - bool seen[32] = {}; // nkv <= 32 (v0.10.0 phase 4: was 8; tuning menu: was 16; fps box: was 24) - if (nkv > 32) return false; + bool seen[kIniMaxKeys] = {}; // nkv <= kIniMaxKeys (v0.10.0 phase 4: was 8; tuning menu: was 16; fps box: + // was 24; v0.10.3 phase 28: was 32, the Reset row needs 33) + if (nkv > kIniMaxKeys) return false; if (in.empty()) { out += "# dlaa.ini -- settings saved by the ETS2 DLAA injector"; out += nl; @@ -2005,7 +2193,9 @@ bool WriteIniPreserving(const IniKV* kv, int nkv) { } } } - if (match >= 0) { // replace, keeping this line's own terminator + if (match >= 0 && !kv[match].val[0]) { // v0.10.0: empty value = remove the key's line (terminator included) + seen[match] = true; + } else if (match >= 0) { // replace, keeping this line's own terminator out += kv[match].key; out += " = "; out += kv[match].val; out.append(in, pe, rawEnd - pe); seen[match] = true; @@ -2017,7 +2207,7 @@ bool WriteIniPreserving(const IniKV* kv, int nkv) { } bool needNl = !out.empty() && out[out.size() - 1] != '\n'; // ensure a break before appended keys for (int k = 0; k < nkv; ++k) { - if (seen[k]) continue; + if (seen[k] || !kv[k].val[0]) continue; // (a removal is never appended) if (needNl) { out += nl; needNl = false; } out += kv[k].key; out += " = "; out += kv[k].val; out += nl; } @@ -2043,7 +2233,11 @@ void SaveSettings(uint64_t n) { const int preTm = g_preOn.load() ? 1 : 0; // v0.10.0 phase 4 (Alt+F7) // v0.10.0 phase 10: + perf_profile; dlss_preset / dlaa_area / mirror_dlaa only when EXPLICIT (in dlaa.ini or changed by their // own key) -- a value that only comes from the profile is not written, so the next profile switch still moves it - IniKV kv[32] = {}; // v0.10.0 tuning menu: was 11 (+ the 8 menu_* keys + the 7 fps_* keys) + IniKV kv[kIniMaxKeys] = {}; // v0.10.0 tuning menu: was 11 (+ the 8 menu_* keys + the 7 fps_* keys) + // v0.10.3 phase 28: + fps_vr_lock = 31 + // v0.10.2: + mirror_vr_mode / mirror_flat_mode / mirror_vr_views = 29 + // v0.10.2: + mirror_mv = 30 + // v0.10.3 phase 29b: + menu_vr_dist = 32 int nkv = 0; auto add = [&](const char* k) -> char* { kv[nkv].key = k; return kv[nkv++].val; }; if (g_profExplicit[PK_PRESET]) snprintf(add("dlss_preset"), sizeof(kv[0].val), "%s", preset); @@ -2057,6 +2251,16 @@ void SaveSettings(uint64_t n) { snprintf(add("tex_lod_bias_cutout"), sizeof(kv[0].val), "%s", cutTxt); snprintf(add("mv_objects"), sizeof(kv[0].val), "%d", objMode); if (g_profExplicit[PK_MIRROR_DLAA]) snprintf(add("mirror_dlaa"), sizeof(kv[0].val), "%d", mirror); + // v0.10.2 the menu's Mirror DLAA row: the mode of a kind only when EXPLICIT (dlaa.ini or the row), + mirror_vr_views with the + // VR mode, or with the flat mode when that is 2 (the view count of mode 2 is shared by both kinds) + const bool mirVrW = g_profExplicit[PK_MIRROR_VR_MODE], mirFlatW = g_profExplicit[PK_MIRROR_FLAT_MODE]; + const bool mirViewsW = mirVrW || (mirFlatW && g_mirFlatMode == 2); + if (mirVrW) snprintf(add("mirror_vr_mode"), sizeof(kv[0].val), "%d", g_mirVrMode); + if (mirFlatW) snprintf(add("mirror_flat_mode"), sizeof(kv[0].val), "%d", g_mirFlatMode); + if (mirViewsW) snprintf(add("mirror_vr_views"), sizeof(kv[0].val), "%d", g_mirVrViews); + // v0.10.2: mirror_mv (parts / camera, one key for both kinds) with either mode (the row sets it with the mode it shows) + const bool mirMvW = mirVrW || mirFlatW; + if (mirMvW) snprintf(add("mirror_mv"), sizeof(kv[0].val), "%s", g_mirCamOnly ? "camera" : "parts"); snprintf(add("dlaa_pre_tonemap"), sizeof(kv[0].val), "%d", preTm); snprintf(add("perf_profile"), sizeof(kv[0].val), "%s", kProfName[g_profile]); if (g_menuExplicit) { // v0.10.0 tuning menu: the panel placement, only once changed in the menu @@ -2067,6 +2271,7 @@ void SaveSettings(uint64_t n) { snprintf(add("menu_vr_y"), sizeof(kv[0].val), "%d", g_menuVrY); snprintf(add("menu_vr_scale"), sizeof(kv[0].val), "%.1f", (double)g_menuVrScale); snprintf(add("menu_vr_depth"), sizeof(kv[0].val), "%d", g_menuVrDepth); + snprintf(add("menu_vr_dist"), sizeof(kv[0].val), "%d", g_menuVrDist); // v0.10.3 phase 29b snprintf(add("menu_vr_face"), sizeof(kv[0].val), "%d", g_menuVrFace); // v0.10.0 phase 16 } if (g_fpsExplicit) { // v0.10.0 fps box: on / off + placement, only once changed in the menu @@ -2077,29 +2282,39 @@ void SaveSettings(uint64_t n) { snprintf(add("fps_vr_x"), sizeof(kv[0].val), "%d", g_fpsVrX); snprintf(add("fps_vr_y"), sizeof(kv[0].val), "%d", g_fpsVrY); snprintf(add("fps_vr_scale"), sizeof(kv[0].val), "%.1f", (double)g_fpsVrScale); + snprintf(add("fps_vr_lock"), sizeof(kv[0].val), "%d", g_fpsVrLock); // v0.10.3 phase 28 } - char menuW[200] = ""; + char menuW[224] = ""; // (v0.10.3 phase 29b: was 200, + menu_vr_dist) if (g_menuExplicit) snprintf(menuW, sizeof(menuW), " -- menu panel: menu_x=%d menu_y=%d menu_scale=%.1f menu_vr_x=%d menu_vr_y=%d menu_vr_scale=%.1f " - "menu_vr_depth=%d menu_vr_face=%d", g_menuX, g_menuY, (double)g_menuScale, g_menuVrX, g_menuVrY, (double)g_menuVrScale, - g_menuVrDepth, g_menuVrFace); + "menu_vr_depth=%d menu_vr_dist=%d menu_vr_face=%d", g_menuX, g_menuY, (double)g_menuScale, g_menuVrX, g_menuVrY, + (double)g_menuVrScale, g_menuVrDepth, g_menuVrDist, g_menuVrFace); char fpsW[160] = ""; if (g_fpsExplicit) - snprintf(fpsW, sizeof(fpsW), " -- fps box: fps_show=%d fps_x=%d fps_y=%d fps_scale=%.1f fps_vr_x=%d fps_vr_y=%d fps_vr_scale=%.1f", - g_fpsShow ? 1 : 0, g_fpsX, g_fpsY, (double)g_fpsScale, g_fpsVrX, g_fpsVrY, (double)g_fpsVrScale); - char notW[96]; - snprintf(notW, sizeof(notW), "%s%s%s", g_profExplicit[PK_PRESET] ? "" : " dlss_preset", g_profExplicit[PK_AREA] ? "" : " dlaa_area", - g_profExplicit[PK_MIRROR_DLAA] ? "" : " mirror_dlaa"); + snprintf(fpsW, sizeof(fpsW), " -- fps box: fps_show=%d fps_x=%d fps_y=%d fps_scale=%.1f fps_vr_x=%d fps_vr_y=%d fps_vr_scale=%.1f " + "fps_vr_lock=%d", g_fpsShow ? 1 : 0, g_fpsX, g_fpsY, (double)g_fpsScale, g_fpsVrX, g_fpsVrY, (double)g_fpsVrScale, + g_fpsVrLock); + char notW[128]; + snprintf(notW, sizeof(notW), "%s%s%s%s%s", g_profExplicit[PK_PRESET] ? "" : " dlss_preset", g_profExplicit[PK_AREA] ? "" : " dlaa_area", + g_profExplicit[PK_MIRROR_DLAA] ? "" : " mirror_dlaa", mirVrW ? "" : " mirror_vr_mode", mirFlatW ? "" : " mirror_flat_mode"); + char mirW[128] = ""; // v0.10.2: the mirror modes written (the menu's Mirror DLAA row) + { + int o = 0; + if (mirVrW) o += snprintf(mirW + o, sizeof(mirW) - (size_t)o, " mirror_vr_mode=%d", g_mirVrMode); + if (mirFlatW) o += snprintf(mirW + o, sizeof(mirW) - (size_t)o, " mirror_flat_mode=%d", g_mirFlatMode); + if (mirViewsW) o += snprintf(mirW + o, sizeof(mirW) - (size_t)o, " mirror_vr_views=%d", g_mirVrViews); + if (mirMvW) snprintf(mirW + o, sizeof(mirW) - (size_t)o, " mirror_mv=%s", g_mirCamOnly ? "camera" : "parts"); + } if (WriteIniPreserving(kv, nkv)) { - Log("settings saved to dlaa.ini: dlss_preset=%s dlaa_area=%d sharpness=%.1f sharp_radius=%.1f dlss_upscale=%d tex_lod_bias=%.2f tex_lod_bias_cutout=%s mv_objects=%d mirror_dlaa=%d dlaa_pre_tonemap=%d perf_profile=%s (save key, Present #%llu)%s%s%s%s", - preset, area, (double)sharp, (double)radius, upscale, (double)lodBias, cutTxt, objMode, mirror, preTm, kProfName[g_profile], + Log("settings saved to dlaa.ini: dlss_preset=%s dlaa_area=%d sharpness=%.1f sharp_radius=%.1f dlss_upscale=%d tex_lod_bias=%.2f tex_lod_bias_cutout=%s mv_objects=%d mirror_dlaa=%d%s dlaa_pre_tonemap=%d perf_profile=%s (save key, Present #%llu)%s%s%s%s", + preset, area, (double)sharp, (double)radius, upscale, (double)lodBias, cutTxt, objMode, mirror, mirW, preTm, kProfName[g_profile], (unsigned long long)n, notW[0] ? " -- profile defaults not written:" : "", notW, menuW, fpsW); BeepSeq s; // success: rising two-tone 600 -> 900 Hz, 120 ms each s.n = 2; s.freq[0] = 600; s.ms[0] = 120; s.freq[1] = 900; s.ms[1] = 120; s.gapMs = 40; PlayBeeps(s); } else { - Log("settings save FAILED (dlss_preset=%s dlaa_area=%d sharpness=%.1f sharp_radius=%.1f dlss_upscale=%d tex_lod_bias=%.2f tex_lod_bias_cutout=%s mv_objects=%d mirror_dlaa=%d dlaa_pre_tonemap=%d, save key, Present #%llu)", - preset, area, (double)sharp, (double)radius, upscale, (double)lodBias, cutTxt, objMode, mirror, preTm, (unsigned long long)n); + Log("settings save FAILED (dlss_preset=%s dlaa_area=%d sharpness=%.1f sharp_radius=%.1f dlss_upscale=%d tex_lod_bias=%.2f tex_lod_bias_cutout=%s mv_objects=%d mirror_dlaa=%d%s dlaa_pre_tonemap=%d, save key, Present #%llu)", + preset, area, (double)sharp, (double)radius, upscale, (double)lodBias, cutTxt, objMode, mirror, mirW, preTm, (unsigned long long)n); PlayTones(1, 200, 400, 0); // failure: one long 200 Hz tone (400 ms) } } @@ -6210,10 +6425,15 @@ void PreviewOnDiscard(ID3D11DeviceContext* ctx, ID3D11Resource* res) { // out, NGX and RCAS already run on the DLAA rect. Outside the rect the picture is the raw frame as before (no AA there). // The depth snapshot stays a whole-texture copy: D3D11 copies a depth-stencil resource only whole (CopySubresourceRegion // needs a null box), and the game's depth has no SRV binding to copy it with a shader. +// (v0.10.2: re-checked on the RTX 5090 driver and WARP -- a boxed CopySubresourceRegion of a D32_FLOAT_S8X24_UINT depth +// texture copies NOTHING, with or without the debug layer, any box alignment; the debug layer names the rule.) +// * v0.10.2 mv_area_clip 1: the rigid-parent pixel count / vote grid at the BLIT (where the eye is known) cover only that eye's +// rect + the margin n this clip (DrawIdMv::SetAreaClip, set here every pass) -- in VR ~2/3 of the union's area. // * fwdShift: mv_fwd_depth_res 2 (auto: VR) -> the forward-depth target and the forward ids at 1/2 resolution. void PassViewSetup(PassSlot& n) { n.clip = false; n.clipRect = D3D11_RECT{ 0, 0, 0, 0 }; + DrawIdMv::SetAreaClip(g_areaClipCfg, g_areaMarginCfg >= 0 ? g_areaMarginCfg : SceneDlaa::Feather() + 32); // v0.10.2 const int res = g_fwdResCfg == 0 ? (g_vrMode ? 2 : 1) : g_fwdResCfg; n.fwdShift = res == 2 ? 1 : 0; ++g_p9Passes; @@ -8601,9 +8821,14 @@ void PerfStatsLog(uint64_t blit) { const DrawIdMv::Stats& d1 = g_dlaa[1].Mv().DrawIds().GetStats(); const DepthTwin::PoolStats ps = DepthTwin::GetPoolStats(); const double pw = g_cMedoidPasses ? (double)g_cMedoidPasses : 1.0; + unsigned long long cf[2][4]; // v0.10.2: ended consensus failure streaks by length, eyes 0 + 1 + for (int L = 0; L < 2; ++L) + for (int b = 0; b < 4; ++b) cf[L][b] = (unsigned long long)(d0.consFailRuns[L][b] + d1.consFailRuns[L][b]); Log("perf cuts @blit %llu: mv_vote_res %u, mv_vote_march_cap %u, mv_cons_cands %u | medoid (mv_medoid_drop %u): world " "candidates dropped in %llu / cabin in %llu of %llu passes, %.1f candidate copies saved per pass, re-armed world %llu / " - "cabin %llu (eye 0) + %llu / %llu (eye 1) in total, now %s | mirror_vr_mode %d%s | mv_slot_pool %d: pass-slot textures " + "cabin %llu (eye 0) + %llu / %llu (eye 1) in total, consensus failure streaks (mv_cons_fail_tol %u: up to that many in a " + "row keep the streak; by length 1 / 2 / 3-5 / 6+, eyes 0 + 1, in total): world %llu / %llu / %llu / %llu, cabin %llu / " + "%llu / %llu / %llu, now %s | mirror_vr_mode %d%s | mv_slot_pool %d: pass-slot textures " "alive: depth twins %d, forward depths %d, id targets %d = %.0f MB (of them pooled, idle: %d / %d / %d); created %llu, " "reused %llu in total | instanced replay (mv_drawid_instanced %d, mv_inst_replay %d): %.1f instanced draws per pass not " "replayed, %d keys took a moving parent lately, %llu instanced draws with a moving parent (eye 0, total); the cost of " @@ -8611,7 +8836,8 @@ void PerfStatsLog(uint64_t blit) { (unsigned long long)blit, DrawIdMv::VoteRes(), DrawIdMv::MarchCap(), DrawIdMv::ConsCands(), DrawIdMv::MedoidDrop(), (unsigned long long)g_cMedoidPassW, (unsigned long long)g_cMedoidPassC, (unsigned long long)g_cMedoidPasses, (double)g_cMedoidSaved / pw, (unsigned long long)d0.medoidRearms[0], (unsigned long long)d0.medoidRearms[1], - (unsigned long long)d1.medoidRearms[0], (unsigned long long)d1.medoidRearms[1], + (unsigned long long)d1.medoidRearms[0], (unsigned long long)d1.medoidRearms[1], DrawIdMv::ConsFailTol(), + cf[0][0], cf[0][1], cf[0][2], cf[0][3], cf[1][0], cf[1][1], cf[1][2], cf[1][3], g_medoidDropBits == 3 ? "both layers dropped" : (g_medoidDropBits == 1 ? "world dropped" : (g_medoidDropBits == 2 ? "cabin dropped" : "medoid path on")), MirMode(), g_vrMode ? "" : " (flat: mirror_flat_mode)", (int)g_slotPool, ps.depthAlive, ps.fwdAlive, ps.idAlive, @@ -8621,16 +8847,48 @@ void PerfStatsLog(uint64_t blit) { g_cMedoidSaved = g_cMedoidPasses = g_cMedoidPassW = g_cMedoidPassC = 0; g_didInstGated = 0; // v0.10.0 phase 9: the VR-cost settings as they ran in this window + // v0.10.2: + what every per-eye per-pixel step covers (mv_area_clip): the vote grid per eye (window deltas of the DrawIdMv + // stats), pass B & co. = the DLAA rect of the eye's last Run, the snapshot always whole + struct VgWin { uint64_t f, e, px, pass, full; }; + static VgWin s_vg[2] = {}; + double vgShare[2] = { -1.0, -1.0 }, vgPass[2] = { -1.0, -1.0 }, rectShare[2] = { -1.0, -1.0 }; + unsigned long long vgN = 0, vgEyeN = 0; + for (int e = 0; e < 2; ++e) { + const DrawIdMv::Stats& d = e ? d1 : d0; + if (d.vgFrames < s_vg[e].f) s_vg[e] = VgWin{}; // (a new unit: counts restarted) + const uint64_t f = d.vgFrames - s_vg[e].f, full = d.vgFullPx - s_vg[e].full; + if (f && full) { + vgShare[e] = 100.0 * (double)(d.vgPx - s_vg[e].px) / (double)full; + vgPass[e] = 100.0 * (double)(d.vgPassPx - s_vg[e].pass) / (double)full; + } + vgN += f; vgEyeN += d.vgEye - s_vg[e].e; + s_vg[e] = VgWin{ d.vgFrames, d.vgEye, d.vgPx, d.vgPassPx, d.vgFullPx }; + if ((e == 0 || g_vrMode) && g_sceneW && g_sceneH && g_dlaa[e].RectW() && g_dlaa[e].RectH()) + rectShare[e] = 100.0 * (double)g_dlaa[e].RectW() * (double)g_dlaa[e].RectH() / ((double)g_sceneW * (double)g_sceneH); + } + char vgTag[160], rcTag[96]; + if (vgShare[0] < 0.0 && vgShare[1] < 0.0) snprintf(vgTag, sizeof(vgTag), "no clipped vote pass in this window"); + else snprintf(vgTag, sizeof(vgTag), "%.1f %% of the image (eye 0) / %.1f %% (eye 1) vs the pass clip %.1f %% / %.1f %%", + vgShare[0] < 0.0 ? 0.0 : vgShare[0], vgShare[1] < 0.0 ? 0.0 : vgShare[1], vgPass[0] < 0.0 ? 0.0 : vgPass[0], + vgPass[1] < 0.0 ? 0.0 : vgPass[1]); + if (rectShare[1] >= 0.0) snprintf(rcTag, sizeof(rcTag), "%.1f %% (eye 0) / %.1f %% (eye 1)", rectShare[0], rectShare[1]); + else snprintf(rcTag, sizeof(rcTag), "%.1f %%", rectShare[0] < 0.0 ? 100.0 : rectShare[0]); Log("perf view @blit %llu: area scissor (mv_area_scissor %d, dlaa_area %d): %llu of %llu passes clipped, rect %.1f %% of the " "image on average (last (%ld,%ld)-(%ld,%ld) of %ux%u) | forward depth at %s in %llu of %llu passes | dispatch chain %s | " - "scissor RS copies failed %llu (total; > 0 = some draws replayed unclipped)", + "scissor RS copies failed %llu (total; > 0 = some draws replayed unclipped) | v0.10.2 per-eye coverage: rigid-parent pixel " + "count + vote grid (mv_area_clip %d, eye rect + %d px n the pass clip; %llu of %llu vote passes clipped to their eye): %s | " + "pass B, copy-in, NGX, RCAS, copy-out = the DLAA rect: %s | replay, forward replay, forward-depth init + re-draw = the pass " + "clip above (the eye is unknown at pass time; the forward target's clear is a whole-target fast clear) | depth snapshot: " + "100 %% (whole D32S8 copy -- D3D11 copies a depth-stencil resource only whole) | gather .. resolve, list+twin, picks, " + "cand-copy, medoid: per draw (no pixel size)", (unsigned long long)blit, (int)g_areaScissorCfg, SceneDlaa::Area(), (unsigned long long)g_p9Clipped, (unsigned long long)g_p9Passes, g_p9Clipped ? 100.0 * g_p9ClipShare / (double)g_p9Clipped : 100.0, (long)g_p9LastClip.left, (long)g_p9LastClip.top, (long)g_p9LastClip.right, (long)g_p9LastClip.bottom, g_sceneW, g_sceneH, "1/2 resolution", (unsigned long long)g_p9Half, (unsigned long long)g_p9Passes, DrawIdMv::Fold() >= 2 ? "pick (spread) + res+inh (wide), list+twin folded (mv_fold_dispatch 2)" : (DrawIdMv::Fold() ? "folded (pick+res, list+twin)" : "separate (phase 8)"), - (unsigned long long)DrawIdRecord::ScissorRsFails()); + (unsigned long long)DrawIdRecord::ScissorRsFails(), (int)DrawIdMv::AreaClip(), DrawIdMv::AreaMargin(), vgEyeN, vgN, vgTag, + rcTag); g_p9Passes = g_p9Clipped = g_p9Half = 0; g_p9ClipShare = 0.0; // v0.10.0 phase 18: the compact rigid-parent vote of eye 0 in this window @@ -11904,6 +12162,7 @@ struct MirUnit { int forcedView = 0; // forced replays in this view int failRun = 0; // failed Runs in a row UINT failW = 0, failH = 0; // a size whose unit build failed (InitFailed): no jitter, no retry there + UINT preW = 0, preH = 0; // v0.10.2: built ahead at boot for this size (MirPrebuild; 0 = not) // Ctrl+F6 frame strips in the unit's colour (MirDebugFrame) Microsoft::WRL::ComPtr dbgH, dbgV; UINT dbgW = 0, dbgHt = 0, dbgT = 0; @@ -11928,11 +12187,35 @@ uint64_t g_mirEpoch = 1; // bumped by MirInvalidate: e uint64_t g_mirWinViews = 0, g_mirWinFrames = 0, g_mirWinPresents = 0, g_mirWinCap = 0; bool g_mirActiveLogged = false, g_mirCapLogged = false, g_mirFirstReplayLogged = false; int g_mirAssignLogs = 0, g_mirLateLogs = 0, g_mirFirstOkLogs = 0, g_mirRoFailLogs = 0, g_mirBudgetLogs = 0; +// v0.10.2 unit builds off the drive (ATS VR log v0.10.1: every new unit was built on the render thread at its first view, 9.6 - +// 35.7 ms each = a dropped frame in VR, six in 8 minutes): +// * SIZE CACHE \dlaa_shader_cache\mirror_sizes.txt: one line "W H N" per mirror unit size that was built and +// evaluated OK (N = the most units of that size built at once), written when such a build succeeds (MirSizesNote); +// * MirPrebuild (a Present after the NGX pre-warm, the shader warm-up done, no mirror view seen yet = boot / loading screen): +// one free unit per cached size (N of them; kMirPrebuildCap in all) gets its textures + NGX feature (SceneDlaa::Prebuild); +// MirBeginView gives a new view the free unit built for exactly its size, whose first Run then builds nothing; +// * ONE unit build per frame (MirBeginView): a view whose unit would build after an NGX feature was already created since the +// last Present is left to the game for that frame (no jitter, no DLAA; "unit builds deferred") and gets its unit later. +struct MirSize { UINT w, h; int n; }; +constexpr int kMirSizeCap = 12; // entries in mirror_sizes.txt +constexpr int kMirPrebuildCap = 6; // units built ahead at boot +MirSize g_mirSizes[kMirSizeCap]; +int g_mirSizesN = 0; +bool g_mirSizesLoaded = false; +uint64_t g_mirBuildDefer = 0, g_mirWinBuildDefer = 0; // views left to the game: a build already ran this frame +int g_mirBuildDeferLogs = 0; // v0.10.0 phase 9: mirror_vr_mode 4 (VR) = every view keeps DLAA, without per-draw motion vectors (no record / replay / pairing: // the unit's camera R = the medoid of its camera candidates) -- the cheapest DLAA mirror +// v0.10.2: also with mirror_mv = camera in modes 1 / 2 / 3 (the handled views get the same camera-only path: ~0.15 ms per unit +// instead of ~0.4 ms with the per-draw chain); mode 4 stays "every view, camera" whatever mirror_mv says int MirMode() { return g_vrMode ? g_mirVrMode : g_mirFlatMode; } // v0.10.0 phase 10 -inline bool MirIdsOff() { return MirMode() == 4; } +inline bool MirIdsOff() { return MirMode() == 4 || g_mirCamOnly; } +// v0.10.2: the mirror motion of a mirror mode (default: the one in force), for the log lines ("parts" / "camera" / +// "camera (mode 4)") +inline const char* MirMvName(int mode = MirMode()) { + return mode == 4 && !g_mirCamOnly ? "camera (mode 4)" : (g_mirCamOnly ? "camera" : "parts"); +} // v0.10.0 phase 9 (mirror_vr_mode 2): the views this frame handles = the mirror_vr_views largest of the previous frame // v0.10.0 phase 21 FIX: the phase-9 selection was built in MirBeginView "at the frame change" from g_mirSeen -- but // MirNextFrame (the Present boundary) had already emptied g_mirSeen and moved g_mirFrame to the new frame, so that block never @@ -11965,6 +12248,200 @@ inline bool MirPathLive() { ShaderCache::Done(); } +// v0.10.2: the unit's one-time SceneDlaa set-up (was in MirFlush; MirPrebuild does it before the unit's first Run, so the boot +// build already carries the unit's eye tag and settings). +void MirUnitSetup(MirUnit& m, int u) { + if (m.inited) return; + m.inited = true; + m.dl.SetEye(20 + u); // log tag "eye 20 .. 35" = mirror unit 0 .. 15 + m.dl.Mv().SetNearReject(g_dlaa[0].Mv().NearReject()); // the own trailer / truck never drive the camera medoid + m.dl.Mv().SetEgoOrigin(0.0f); // no ego split: per-draw R handles the own truck / trailer + m.dl.Mv().SetEgoPixel(0.0f); + m.dl.Mv().SetQuiet(true); // its numbers are in the "mirror units @blit" line + m.dl.SetOpticalCentre(0.5f, 0.5f); +} + +// v0.10.2 size cache (see g_mirSizes): \dlaa_shader_cache\mirror_sizes.txt -- the shader cache's folder +// (shader_cache.cpp Start), created here when the shader cache could not make it. +bool MirSizesPath(std::wstring& out, bool makeDir) { + wchar_t exe[MAX_PATH]; + const DWORD n = GetModuleFileNameW(nullptr, exe, MAX_PATH); + wchar_t* slash = (n > 0 && n < MAX_PATH) ? wcsrchr(exe, L'\\') : nullptr; + if (!slash) return false; + slash[1] = 0; + const std::wstring dir = std::wstring(exe) + L"dlaa_shader_cache\\"; + if (makeDir && !CreateDirectoryW(dir.c_str(), nullptr) && GetLastError() != ERROR_ALREADY_EXISTS) return false; + out = dir + L"mirror_sizes.txt"; + return true; +} + +// Reads the file once (a missing file = an empty cache). Lines "W H N"; '#' lines are comments; a duplicate size keeps the +// larger N; at most kMirSizeCap sizes. +void MirSizesLoad() { + if (g_mirSizesLoaded) return; + g_mirSizesLoaded = true; + std::wstring path; + FILE* f = nullptr; + if (!MirSizesPath(path, false) || _wfopen_s(&f, path.c_str(), L"rb") != 0 || !f) return; + char line[128]; + while (fgets(line, sizeof(line), f)) { + if (line[0] == '#') continue; + unsigned w = 0, h = 0; + int n = 1; + const int got = sscanf_s(line, "%u %u %d", &w, &h, &n); + if (got < 2 || w < 16 || h < 16 || w > 16384 || h > 16384) continue; + if (got < 3 || n < 1) n = 1; + if (n > kMirCap) n = kMirCap; + int k = -1; + for (int i = 0; i < g_mirSizesN && k < 0; ++i) + if (g_mirSizes[i].w == w && g_mirSizes[i].h == h) k = i; + if (k >= 0) { if (n > g_mirSizes[k].n) g_mirSizes[k].n = n; continue; } + if (g_mirSizesN < kMirSizeCap) g_mirSizes[g_mirSizesN++] = { (UINT)w, (UINT)h, n }; + } + fclose(f); +} + +// Rewrites the file (temp file + rename). false = not written. +bool MirSizesSave() { + std::wstring path; + if (!MirSizesPath(path, true)) return false; + const std::wstring tmp = path + L".tmp"; + FILE* f = nullptr; + if (_wfopen_s(&f, tmp.c_str(), L"wb") != 0 || !f) return false; + fprintf(f, "# ETS2 / ATS DLAA mod: mirror DLAA unit sizes built in earlier sessions (width height units), built ahead on the\r\n" + "# boot screen at the next start so no mirror unit is built while driving. Written by the mod; safe to delete.\r\n"); + for (int i = 0; i < g_mirSizesN; ++i) fprintf(f, "%u %u %d\r\n", g_mirSizes[i].w, g_mirSizes[i].h, g_mirSizes[i].n); + const bool wrote = !ferror(f); + const bool closed = fclose(f) == 0; + if (!wrote || !closed || !MoveFileExW(tmp.c_str(), path.c_str(), MOVEFILE_REPLACE_EXISTING)) { + _wremove(tmp.c_str()); + return false; + } + return true; +} + +// A unit was built at w x h and evaluated OK (MirFlush): the cache keeps the size and how many units of it exist now (the +// free units built for it at boot included -- a new view takes one of those before it builds, so this is the session's need). +void MirSizesNote(UINT w, UINT h) { + MirSizesLoad(); + // N = the units of this size IN VIEW now (this frame or the last one), not every unit that holds a feature of it: idle units + // of a size the game stopped using (another truck's mirrors after a garage visit) would otherwise count up (log 2026-10-10: + // "512x1024 x6 units" after 6 garage visits -- 6 pre-builds of a size seen 1-2 at a time, the real sizes pushed out by the cap) + const uint64_t fr = g_frames.load(std::memory_order_relaxed); + int n = 0; + for (const MirUnit& m : g_mir) if (m.used && m.w == w && m.h == h && m.viewFrame + 1 >= fr) ++n; + if (n < 1) n = 1; + int k = -1; + for (int i = 0; i < g_mirSizesN && k < 0; ++i) + if (g_mirSizes[i].w == w && g_mirSizes[i].h == h) k = i; + if (k >= 0 && g_mirSizes[k].n >= n) return; // known (with as many units): nothing to write + if (k >= 0) { + g_mirSizes[k].n = n; + } else { + if (g_mirSizesN == kMirSizeCap) { // full: the oldest entry (the first line) makes room + memmove(&g_mirSizes[0], &g_mirSizes[1], sizeof(MirSize) * (size_t)(kMirSizeCap - 1)); + --g_mirSizesN; + } + g_mirSizes[g_mirSizesN++] = { w, h, n }; + } + const bool ok = MirSizesSave(); + static int noteLogs = 0; + if (noteLogs++ < 16) + Log("mirror units: size cache %s %ux%u x%d unit%s (%d size%s) -- %s (Present #%llu)", ok ? "now has" : "could NOT save", + w, h, n, n == 1 ? "" : "s", g_mirSizesN, g_mirSizesN == 1 ? "" : "s", + ok ? "built ahead on the boot screen at the next start (dlaa_shader_cache\\mirror_sizes.txt next to the game exe)" + : "dlaa_shader_cache\\mirror_sizes.txt next to the game exe is not writable; mirror units keep being built at their " + "first view", + (unsigned long long)g_frames.load(std::memory_order_relaxed)); +} + +// v0.10.2: the units of the size cache built ahead (see g_mirSizes). Called at every Present (PresentFrameWork, right after +// MaybePrewarmNgx); works once: at the first Present with NGX pre-warmed ON the game's device, the shader warm-up done, DLAA on, +// and no mirror view seen yet -- the boot / loading screen or the main menu, where a ~10-35 ms build per unit is not seen while +// driving. A mirror view first: it gives up (the one-build-per-frame limit spreads the builds instead). Largest sizes first, +// N units per size, kMirPrebuildCap (and mirror_max_views) units at most; units 0, 1, ... in that order. Each unit gets exactly +// the build its first Run would do (SceneDlaa::Prebuild: area 100 as in MirFlush, RGBA16F / IsHDR as every mirror unit), stays +// free (used = false) and is marked pre-built for its size; MirBeginView gives it to the first view of that size. +void MirPrebuild() { + static bool done = false; + if (done || !g_prewarmDone.load(std::memory_order_acquire)) return; + if (g_mirHandled + g_mirNotHandled > 0) { // mirror views run already: too late for a hidden build + done = true; + Log("mirror units: no pre-build from the size cache -- mirror views were seen before NGX and the shaders were ready " + "(Present #%llu); new units are built at their first view, one per frame", + (unsigned long long)g_frames.load(std::memory_order_relaxed)); + return; + } + if (!g_dlaaOn.load(std::memory_order_relaxed) || g_passive.load(std::memory_order_relaxed) || + g_gameDeviceChanged.load(std::memory_order_relaxed) || !ShaderCache::Done()) return; + ID3D11DeviceContext* const c = g_gameCtx.load(std::memory_order_acquire); + if (!c) return; + void* const ngxDev = DlaaProcessor::NgxDevice(); + if (!ngxDev) { // the pre-warm failed: units initialise NGX themselves + done = true; + Log("mirror units: no pre-build from the size cache -- NGX is not initialised (see the pre-warm line)"); + return; + } + { + ID3D11Device* dev = nullptr; + c->GetDevice(&dev); + if (!dev) return; + const bool same = (void*)dev == ngxDev; + dev->Release(); + if (!same) return; // present layer before the adoption: wait for the game's context + } + done = true; + if (!g_mirOn.load(std::memory_order_relaxed) || (g_mirVrMode == 0 && g_mirFlatMode == 0)) { + Log("mirror units: no pre-build from the size cache -- mirror DLAA is off (mirror_dlaa / mirror_vr_mode / " + "mirror_flat_mode / profile)"); + return; + } + MirSizesLoad(); + if (g_mirSizesN == 0) { + Log("mirror units: size cache empty (no dlaa_shader_cache\\mirror_sizes.txt yet) -- nothing pre-built; this session's " + "mirror units are built at their first view (one per frame) and their sizes are cached for the next start"); + return; + } + const int nU = g_mirMaxViews < 1 ? 1 : (g_mirMaxViews > kMirCap ? kMirCap : g_mirMaxViews); + const int cap = nU < kMirPrebuildCap ? nU : kMirPrebuildCap; + int order[kMirSizeCap]; // largest area first (the main mirrors) + for (int i = 0; i < g_mirSizesN; ++i) { + int j = i; + const uint64_t a = (uint64_t)g_mirSizes[i].w * g_mirSizes[i].h; + while (j > 0 && (uint64_t)g_mirSizes[order[j - 1]].w * g_mirSizes[order[j - 1]].h < a) { order[j] = order[j - 1]; --j; } + order[j] = i; + } + const int64_t t0 = Qpc(); + const int areaNow = SceneDlaa::Area(); // a mirror unit always uses the whole picture (as MirFlush) + if (areaNow != 100) SceneDlaa::SetArea(100); + t_inDlaa = true; // our D3D11 / NGX calls pass straight through the hooks + int u = 0, built = 0, failed = 0; + char list[512] = ""; + size_t o = 0; + for (int oi = 0; oi < g_mirSizesN && u < cap; ++oi) { + const MirSize& s = g_mirSizes[order[oi]]; + for (int k = 0; k < s.n && u < cap; ++k, ++u) { + MirUnit& m = g_mir[u]; + MirUnitSetup(m, u); + const int64_t t1 = Qpc(); + const bool ok = m.dl.Prebuild(c, s.w, s.h, true); + const double ms = g_qpcFreq > 0 ? (double)(Qpc() - t1) * 1000.0 / (double)g_qpcFreq : 0.0; + if (ok) { m.preW = s.w; m.preH = s.h; ++built; } else ++failed; + if (o < sizeof(list)) + o += (size_t)snprintf(list + o, sizeof(list) - o, "%s%ux%u unit %d %.1f ms%s", o ? ", " : "", s.w, s.h, u, ms, + ok ? "" : " FAILED"); + } + } + t_inDlaa = false; + if (areaNow != 100) SceneDlaa::SetArea(areaNow); + const double total = g_qpcFreq > 0 ? (double)(Qpc() - t0) * 1000.0 / (double)g_qpcFreq : 0.0; + Log("mirror units: pre-built %d unit%s from the size cache (%s) in %.1f ms (boot, Present #%llu)%s -- %d cached size%s, " + "largest first, at most %d units; a new mirror view of one of these sizes takes its unit without a build", + built, built == 1 ? "" : "s", list, total, (unsigned long long)g_frames.load(std::memory_order_relaxed), + failed ? " -- a FAILED unit is built at its first view instead (see the DLAA lines above)" : "", g_mirSizesN, + g_mirSizesN == 1 ? "" : "s", cap); +} + // The mirror G-buffer shape (see the block comment). rt0 / depth come back with a ref. bool MirIsGbuf(UINT n, ID3D11RenderTargetView* const* rtvs, ID3D11Resource* depthRes, Microsoft::WRL::ComPtr& rt0, Microsoft::WRL::ComPtr& depth, UINT* w, @@ -12096,10 +12573,10 @@ void MirSelLog(uint64_t blit) { o += (size_t)snprintf(known + o, sizeof(known) - o, "%s%ux%u #%d (%llu frames, last seen %llu frames ago)", j ? ", " : "", g_mirKey[j].w, g_mirKey[j].h, g_mirKey[j].sord, (unsigned long long)g_mirKey[j].frames, (unsigned long long)(g_mirKeyClock - g_mirKey[j].last)); - Log("mirror units %s 2 selection @blit %llu: mirror_vr_views %d, selected %d: [%s] | views matched %llu (handled), not " - "selected %llu (left to the game), handled before the first selection %llu | selected entries absent from their frame " - "%llu | selection rebuilt %llu times, changed %llu | known view keys %d: [%s]", - g_vrMode ? "mirror_vr_mode" : "mirror_flat_mode", (unsigned long long)blit, g_mirVrViews, g_mirSelN, + Log("mirror units %s 2 selection @blit %llu: mirror_vr_views %d, mirror_mv %s, selected %d: [%s] | views matched %llu " + "(handled), not selected %llu (left to the game), handled before the first selection %llu | selected entries absent from " + "their frame %llu | selection rebuilt %llu times, changed %llu | known view keys %d: [%s]", + g_vrMode ? "mirror_vr_mode" : "mirror_flat_mode", (unsigned long long)blit, g_mirVrViews, MirMvName(), g_mirSelN, g_mirSelN ? sel : "none yet", (unsigned long long)g_mirSelMatch, (unsigned long long)g_mirSelSkip, (unsigned long long)g_mirSelPre, (unsigned long long)g_mirSelAbsent, (unsigned long long)g_mirSelBuilds, (unsigned long long)g_mirSelChanges, g_mirKeyN, g_mirKeyN ? known : "none"); @@ -12153,8 +12630,20 @@ void MirBeginView(const Microsoft::WRL::ComPtr& rt0, const Micr const MirUnit& m = g_mir[i]; if (m.used && m.viewFrame + 1 == fr && m.w == w && m.h == h && m.sord == sord) { u = i; how = 1; } } - for (int i = 0; i < nU && u < 0; ++i) - if (!g_mir[i].used) { u = i; how = 2; } + if (u < 0) { // a new unit (v0.10.2: which free one) + // the free unit built at boot for exactly this size (MirPrebuild: its first Run builds nothing), else a free unit + // without a pre-built size (the others stay for their size), else any free unit (its pre-built size is rebuilt) + int plain = -1, other = -1; + for (int i = 0; i < nU && u < 0; ++i) { + const MirUnit& m = g_mir[i]; + if (m.used) continue; + if (m.preW == w && m.preH == h && m.dl.ReadyFor(w, h, true, 100)) u = i; + else if (!m.preW) { if (plain < 0) plain = i; } + else if (other < 0) other = i; + } + if (u < 0) u = plain >= 0 ? plain : other; + if (u >= 0) how = 2; + } if (u < 0) { uint64_t best = ~0ull; for (int i = 0; i < nU; ++i) @@ -12172,6 +12661,30 @@ void MirBeginView(const Microsoft::WRL::ComPtr& rt0, const Micr } return; } + // v0.10.2: ONE unit build per frame. The views of a frame run one after another (a view ends before the next one's + // G-buffer bind), so a build of an earlier view of this frame has already used the NGX creation budget (one feature create + // per Present, DlaaProcessor::CreateBudgetFree) when this view begins. A view whose unit would build now (its first Run, + // or a take-over at another size) would only defer its Run and show a jittered picture without DLAA: it is left to the game + // for this frame instead (no jitter, nothing recorded) and gets its unit at a later frame. The unit is not touched. Views + // whose Run cannot build this frame anyway (a mirror_vr_mode 3 off frame, a failed / unsupported size, the jitter-only + // debug key) never wait. + { + const MirUnit& mb = g_mir[u]; + const bool runs = !g_jitterOnly.load(std::memory_order_relaxed) && !(MirMode() == 3 && ((fr + (uint64_t)u) & 1u)) && + !(how == 0 && mb.unsupported) && !(mb.failW == w && mb.failH == h); + if (runs && !mb.dl.ReadyFor(w, h, true, 100) && !DlaaProcessor::CreateBudgetFree()) { + ++g_mirNotHandled; ++g_mirBuildDefer; ++g_mirWinBuildDefer; + g_mirCur = -1; + if (g_mirBuildDeferLogs < 8) { + ++g_mirBuildDeferLogs; + Log("mirror units: %ux%u view left to the game for this frame -- unit %d would build now (textures + NGX feature) " + "but an NGX feature was already created since the last Present (an earlier unit build); one unit build per " + "frame, its unit comes at a later frame (Present #%llu, deferred builds so far %llu)", w, h, u, + (unsigned long long)fr, (unsigned long long)g_mirBuildDefer); + } + return; + } + } MirUnit& m = g_mir[u]; if (how != 0) { m.resetPending = true; @@ -12184,7 +12697,9 @@ void MirBeginView(const Microsoft::WRL::ComPtr& rt0, const Micr "pair, view %d of this size in the frame (Present #%llu) -- 4-RTV G-buffer RGBA16F x3 + RGBA16_UINT with its " "own D32S8 depth", u, 20 + u, w, h, how == 1 ? "re-homed (same size and order as last frame, other textures: history reset)" - : (how == 2 ? "new unit" : "taken over from an older view (history reset)"), + : (how == 2 ? (m.preW == w && m.preH == h && m.dl.ReadyFor(w, h, true, 100) + ? "new unit, pre-built at boot for this size (no build)" : "new unit") + : "taken over from an older view (history reset)"), (void*)rt0.Get(), (void*)depth.Get(), occ, sord, (unsigned long long)fr); } } @@ -12192,7 +12707,7 @@ void MirBeginView(const Microsoft::WRL::ComPtr& rt0, const Micr m.open = true; m.fwdSeen = false; m.lightSeen = false; m.color.Reset(); m.forcedView = 0; m.ps.cand.Reset(); m.ps.twin.valid = false; m.ps.twin.idValid = false; m.ps.snap = false; m.ps.cand.SetDropped((uint8_t)(m.dl.Mv().MedoidDropBits() & 1u)); // v0.10.0 phase 8: mirrors have the world layer only - if (MirIdsOff()) m.ps.cand.SetDropped(0); // v0.10.0 phase 9 (mirror_vr_mode 4): the camera R IS the medoid + if (MirIdsOff()) m.ps.cand.SetDropped(0); // v0.10.0 phase 9 (mode 4; v0.10.2: + mirror_mv camera): the camera R IS the medoid m.ps.dropN[0] = m.ps.dropN[1] = 0; // v0.10.0 phase 8 (mirror_vr_mode 3, VR): each unit runs every 2nd frame (units alternate by index); on its off frame the view // is not jittered / recorded and gets the unit's last picture (MirFlush) @@ -12282,7 +12797,7 @@ void MirOnDraw(ID3D11DeviceContext* ctx, UINT ic, UINT inst, UINT si, INT bv, UI if (!instanced && g_mvOn.load(std::memory_order_relaxed)) CollectMvCandidate(ctx, ic, si, bv, m.ps); // the unit's camera candidates (world layer: no cabin in mirrors) if (!g_didOn) return; // per-draw motion vectors off (Alt+F5 / mv_objects != 2) - if (MirIdsOff()) return; // v0.10.0 phase 9 (mirror_vr_mode 4): camera motion vectors only + if (MirIdsOff()) return; // v0.10.0 phase 9 (mode 4; v0.10.2: + mirror_mv camera): camera MVs only if (g_ctx1Owner != ctx) { if (g_ctx1) { g_ctx1->Release(); g_ctx1 = nullptr; } ctx->QueryInterface(__uuidof(ID3D11DeviceContext1), (void**)&g_ctx1); @@ -12397,21 +12912,16 @@ void MirFlush(ID3D11DeviceContext* ctx, MirUnit& m) { td.Height, (int)td.Format, td.MipLevels, td.ArraySize, td.SampleDesc.Count, m.w, m.h); return; } - if (!m.inited) { - m.inited = true; - m.dl.SetEye(20 + u); // log tag "eye 20 .. 35" = mirror unit 0 .. 15 - m.dl.Mv().SetNearReject(g_dlaa[0].Mv().NearReject()); // the own trailer / truck never drive the camera medoid - m.dl.Mv().SetEgoOrigin(0.0f); // no ego split: per-draw R handles the own truck / trailer - m.dl.Mv().SetEgoPixel(0.0f); - m.dl.Mv().SetQuiet(true); // its numbers are in the "mirror units @blit" line - m.dl.SetOpticalCentre(0.5f, 0.5f); - } + MirUnitSetup(m, u); m.dl.SetTiming(GpuTimingOn()); // (v0.10.0 phase 8: with mirror_vr_mode 3 in VR the unit's previous run is 2 frames back -- its history is kept) const uint64_t runGap = MirMode() == 3 ? 2u : 1u; const bool reset = m.resetPending || m.runs == 0 || m.lastRunFrame + runGap != fr || m.epoch != g_mirEpoch; const float njx = (float)g_signX * m.jx, njy = (float)g_signY * m.jy; const int64_t t0 = m.runs == 0 ? Qpc() : 0; // wall time of the run that builds the unit + // v0.10.2: this Run builds the unit (textures + NGX feature at this size: the same test as Run's, area 100, RGBA16F) + const bool builds = !m.dl.ReadyFor(m.w, m.h, true, 100); + const bool fromCache = !builds && m.runs == 0 && m.preW == m.w && m.preH == m.h; // built at boot (MirPrebuild) const int areaNow = SceneDlaa::Area(); // a mirror always uses the whole picture (no dlaa_area crop) if (areaNow != 100) SceneDlaa::SetArea(100); t_inDlaa = true; @@ -12441,18 +12951,24 @@ void MirFlush(ID3D11DeviceContext* ctx, MirUnit& m) { if (m.tOk == 1 && g_mirFirstOkLogs < kMirCap) { ++g_mirFirstOkLogs; Log("first mirror DLAA evaluate OK: unit %d (eye tag %d) %ux%u %s, preset=%s, NGX jitter=(%+.4f,%+.4f), " - "reset=%d, depth=snapshot at its discard, per-draw MVs %s, at Present #%llu (unit built in %.1f ms)", u, + "reset=%d, depth=snapshot at its discard, per-draw MVs %s, at Present #%llu (unit built in %.1f ms%s)", u, 20 + u, m.w, m.h, !m.dl.IsHdr() ? "LDR" : (SceneDlaa::HdrLinear() ? "HDR (RGBA16F, IsHDR=1)" : "HDR (RGBA16F, IsHDR=0: dlss_hdr=0)"), - SceneDlaa::DlssPresetName(), (double)njx, (double)njy, (int)reset, g_didCfg ? "on" : "off", - (unsigned long long)fr, t0 && g_qpcFreq > 0 ? (double)(Qpc() - t0) * 1000.0 / (double)g_qpcFreq : 0.0); + SceneDlaa::DlssPresetName(), (double)njx, (double)njy, (int)reset, + !g_didCfg ? "off" : (MirIdsOff() ? "off (camera motion: mirror_mv camera / mode 4)" : "on"), // v0.10.2 + (unsigned long long)fr, t0 && g_qpcFreq > 0 ? (double)(Qpc() - t0) * 1000.0 / (double)g_qpcFreq : 0.0, + fromCache ? ", pre-built: textures + NGX feature made at boot from the size cache, this Run only its first " + "evaluate" : ""); } + if (builds) MirSizesNote(m.w, m.h); // v0.10.2: the size cache learns it for the next start if (!g_mirActiveLogged) { g_mirActiveLogged = true; Log("mirror DLAA: ACTIVE -- every mirror view (a 4-RTV G-buffer with its own depth) gets its own DLAA unit: own " "jitter, depth snapshot at its discard, %s, DLAA in place on its RGBA16F colour before the game " - "down-samples it (Present #%llu)", g_didCfg ? "per-draw motion vectors (draw-id replay on the mirror depth)" - : "camera motion vectors (mv_objects != 2)", (unsigned long long)fr); + "down-samples it (Present #%llu)", + !g_didCfg ? "camera motion vectors (mv_objects != 2)" + : (MirIdsOff() ? "camera motion vectors (mirror_mv camera / mirror mode 4: no per-draw ids)" // v0.10.2 + : "per-draw motion vectors (draw-id replay on the mirror depth)"), (unsigned long long)fr); } } else if (deferred) { ++m.sDeferred; // built at a later Present (one NGX create per Present) @@ -12762,19 +13278,30 @@ void ToggleMirrors(uint64_t n) { // while the menu is open). The panel is drawn (TuningMenu::Draw, menu.cpp) at Present over the backbuffer (flat, and the VR // desktop mirror; under a present layer: over the game-side backbuffer while it is still bound at the frame-end boundary) and, // in VR, into each eye texture right after the game's eye blit (and the DLSS upscale composite), centred on the eye's optical -// centre. While open, the 5 menu keys are hidden from the game (MenuSwallowKeys -> dinput_wrap.cpp). Closed: one branch per -// Present and per blit Draw, nothing else. +// centre. While open, NO key and NO controller button reaches the game (v0.10.2 MenuHidesInput -> dinput_wrap.cpp; v0.10.0 / +// v0.10.1: only the 5 menu keys), and a key / button held on a row for bind_hold_ms binds it to that row's hotkey (v0.10.2 +// HOLD TO BIND, MenuBindTick). Closed: one branch per Present and per blit Draw, nothing else. #ifndef DLAA_INJECTOR_VERSION #define DLAA_INJECTOR_VERSION "0.0.0-dev" #endif enum MenuRowId { MR_MODE, MR_PROFILE, MR_MODEL, MR_SHARP, MR_WIDTH, MR_LOD, MR_LODCUT, MR_AREA, MR_DRAWIDS, MR_MIRROR, MR_PRETM, MR_FWD, - MR_UPSCALE, MR_DLAA, MR_OFXR, MR_POSX, MR_POSY, MR_SIZE, MR_DEPTH, MR_FACE, MR_FPS, MR_FPSX, MR_FPSY, MR_FPSSIZE, MR_SAVE, - MR_CLOSE, + MR_UPSCALE, MR_DLAA, MR_OFXR, + MR_PANELGRP, // v0.10.3 phase 29c: group header "Panel settings" (collapsible) + MR_POSX, MR_POSY, MR_SIZE, MR_DEPTH, MR_FACE, + MR_MENUKEYS, // v0.10.2: the 5 menu keys, bound by 5 holds in sequence (29c: in the panel group) + MR_FPS, + MR_FPSGRP, // v0.10.3 phase 29c: group header "FPS counter settings" (collapsible) + MR_FPSLOCK, // v0.10.3 phase 28: VR fps box follows the head / fixed in the cab + MR_FPSX, MR_FPSY, MR_FPSSIZE, + MR_SAVE, MR_RESET, MR_CLOSE, MR_COUNT }; static_assert(MR_COUNT <= TuningMenu::kMaxRows, "tuning menu: too many rows"); -const wchar_t* const kMenuDesc[MR_COUNT] = { +// v0.10.3 phase 29c: each group = its header + the rows right after it up to its last child (MenuRowGroup relies on it) +static_assert(MR_PANELGRP + 1 == MR_POSX && MR_FACE + 1 == MR_MENUKEYS && MR_FPSGRP + 1 == MR_FPSLOCK, + "tuning menu: a group's children must follow its header"); +const wchar_t* const kMenuDesc[] = { // v0.10.0: every row = what it does, when a player would change it, what it costs. The panel shows 3 lines of about 105 // characters (menu.cpp kDescH) = the description + the cost sentence MenuPerfCosts appends: keep both within ~320 characters. L"DLAA = clean edges at the game's render size. DLSS = the same, and it upscales when the game's Scaling is below 100 %. " @@ -12796,8 +13323,8 @@ const wchar_t* const kMenuDesc[MR_COUNT] = { L"model or win frame rate; 40 % costs about 40 % of the model. Also sets the garage / main-menu truck.", L"Gives each moving part (traffic, wheels, plates) its own motion for DLAA, so it stays sharp and does not ghost. Turn it off " L"only to save about 0.5 ms per eye or to test: every pixel then moves with the camera and traffic smears.", - L"Gives each truck mirror its own DLAA so mirrors do not shimmer. Off = mirrors as the game draws them: do it if you rarely " - L"look in them. About 0.3 ms per mirror view; VR draws the 2 largest.", + L"Gives truck mirrors their own DLAA so they do not shimmer. 1 mirror = only the largest (the main mirror next to you). " + L"all = every mirror. camera = cheapest per mirror, moving traffic can ghost in the glass; else each part moves exactly in the glass.", L"Flat only: DLAA before the game's bloom / tonemap, so lane paint, wires and rails shimmer less. Change it only to compare. " L"Not used with DLSS upscale or Windows HDR. Same cost either way; takes ~60 frames to switch.", L"Gives wires, fences and glass their own distance instead of what is behind them, so they do not smear when you move. Turn " @@ -12808,26 +13335,62 @@ const wchar_t* const kMenuDesc[MR_COUNT] = { L"of every part together.", L"OFXR Bridge = VR frame generation by djules75, a separate download (github.com/djules75/OFXR-Bridge). found = its layer " L"is loaded in this game and the mod lets its work pass through. Start its tray app before the game.", + // v0.10.3 phase 29c (MR_PANELGRP) + L"The panel's position, size, depth, facing and the menu keys. Right opens the group, Left closes it; it starts closed " + L"every time the menu opens.", L"Moves this panel sideways, in % of the screen. Flat and VR each keep their own position. Use it if the panel covers " L"something you need. No cost.", L"Moves this panel up / down, in % of the screen. Flat and VR each keep their own position. Use it if the panel covers " L"something you need. No cost.", L"Makes this panel bigger or smaller. Raise it if you cannot read it, lower it if it covers too much. Flat and VR each keep " L"their own size. No cost.", - L"VR only, so greyed in flat. Shifts the panel inward per eye so it floats closer than infinity. Raise it if the panel is " - L"tiring to look at. No cost.", - L"VR only, so greyed in flat. On = the panel turns to face you when you move it to the side, same size from every angle; " - L"off = a flat picture. No cost.", + L"VR only, so greyed in flat. How far away the panel floats: in metres (0.30 - 3.00) as a VR layer, the default; in px of " + L"inward shift per eye with menu_vr_layer = 0. Same size at every depth. Change it if the panel is tiring to look at. No cost.", + L"VR only, so greyed in flat. On = the panel turns to face you when you move it to the side, same size from every angle " + L"(as a VR layer, the default, the head-following fps box too); off = a flat picture. No cost.", + nullptr, // MR_MENUKEYS: built with the hold time and the key names (MenuBuildPanel) L"A small live fps and frame-time box, also while this menu is closed (flat and VR). Use it to see what a setting gains. " - L"Negligible cost, none when off. Save keeps it for the next start.", - L"Moves the fps box sideways, in % of the screen. Flat and VR each keep their own position. No cost.", - L"Moves the fps box up / down, in % of the screen. Flat and VR each keep their own position. No cost.", + L"Its GPU cost is measured: per frame, every picture it is drawn into; none when off. Save keeps it for the next start.", + // v0.10.3 phase 29c (MR_FPSGRP) + L"The fps box's lock, position and size. Right opens the group, Left closes it; it starts closed every time the menu " + L"opens.", + // v0.10.3 phase 28 (MR_FPSLOCK) + L"VR only, so greyed in flat. Follow head = the fps box moves with the headset. Fixed in cab = it stays at one spot in the " + L"cab, 0.8 m from your seat; X / Y then turn it around you in degrees. No cost.", + L"Moves the fps box sideways, in % of the screen (VR fixed in cab: degrees around you). Flat and VR each keep their own " + L"position. No cost.", + L"Moves the fps box up / down, in % of the screen (VR fixed in cab: degrees, minus = up). Flat and VR each keep their own " + L"position. No cost.", L"Makes the fps box bigger or smaller (0.2 .. 3.0). Raise it if you cannot read it in the headset or on a big screen. No cost.", L"Writes everything shown here into dlaa.ini (settings, and the panel / fps box positions once you moved them), keeping every " L"other line. Do it once you like what you see, or the changes are gone at the next start. Mode saves itself.", + // v0.10.3 phase 29d (MR_RESET): MenuBuildPanel puts "Hold

    for s to reset. " in front of it + L"Puts every setting in this menu back to how the mod ships (model, sharpen, texture sharpness, DLAA area, motion, mirrors, " + L"profile, panel and fps box), live and in dlaa.ini, keeping your hotkeys and every other line.", nullptr, // MR_CLOSE: "Closes the menu ..." (built with the key name) }; +static_assert(sizeof(kMenuDesc) / sizeof(kMenuDesc[0]) == MR_COUNT, "tuning menu: kMenuDesc must have one entry per row (MR_* order)"); int g_menuSel = 0; // selected row (kept while closed: the menu reopens where it was) +// v0.10.3 phase 29c: the two collapsible groups -- [0] "Panel settings" (MR_PANELGRP: MR_POSX .. MR_MENUKEYS), [1] "FPS +// counter settings" (MR_FPSGRP: MR_FPSLOCK .. MR_FPSSIZE). Both collapse at every open (MenuKeys); a collapsed group's rows +// are not in the Panel handed to Draw (MenuBuildPanel compacts), Up / Down skip them (MenuStepRow). g_menuSel stays an MR id. +bool g_menuGrpOpen[2] = {}; +inline int MenuRowGroup(int id) { // the header of the group `id` is a child of; -1 = top level (headers too) + if (id > MR_PANELGRP && id <= MR_MENUKEYS) return MR_PANELGRP; + if (id > MR_FPSGRP && id <= MR_FPSSIZE) return MR_FPSGRP; + return -1; +} +inline bool& MenuGrpOpen(int header) { return g_menuGrpOpen[header == MR_FPSGRP ? 1 : 0]; } +inline bool MenuRowVisible(int id) { const int g = MenuRowGroup(id); return g < 0 || MenuGrpOpen(g); } +// The next VISIBLE row from `from` in direction dir (-1 / +1), wrapping around; `from` itself when nothing else is visible. +int MenuStepRow(int from, int dir) { + int r = from; + for (int i = 0; i < MR_COUNT; ++i) { + r = (r + MR_COUNT + dir) % MR_COUNT; + if (MenuRowVisible(r)) return r; + } + return from; +} bool g_menuMoved = false; // the panel placement changed since the menu was opened (close line) float g_menuVrBuild = 0.0f; // VR: panel scale of eye 0 (the texture is built at it; 0 = none yet) float g_fpsVrBuild = 0.0f; // VR: fps box scale of eye 0 (the same for the box; 0 = none yet) @@ -12845,6 +13408,10 @@ inline bool MenuVr() { g_frames.load(std::memory_order_relaxed) - g_pvVrPicFrame < 120); } inline int MenuClampI(int v, int lo, int hi) { return v < lo ? lo : (v > hi ? hi : v); } +// v0.10.3 phase 29b: the VR panel goes to the compositor as an OpenXR QUAD layer now (menu_vr_layer = 1 and its quad went out +// at the last xrEndFrame -- XrHook::OverlayActive(0)): the Depth row then edits menu_vr_dist (the quad's distance) instead of +// menu_vr_depth (the in-picture fallback's shift, also the path while the quad path is not up / failed this session). +inline bool MenuVrQuad() { return g_menuVrLayer && MenuVr() && XrHook::OverlayActive(0); } // How the panel colours go into a target of view format f (TuningMenu::OutMode): an sRGB view encodes / scRGB float is linear // -> decoded; the HDR10 screen (R10G10B10A2 with Windows HDR on, g_hdrOut) -> PQ; anything else -> the bytes as they are. inline int MenuOutMode(DXGI_FORMAT f, bool screen) { @@ -12909,6 +13476,15 @@ void FpsStop() { g_fps = FpsMeter(); g_fps.freq = freq; } +// v0.10.3 phase 29: how the VR panel / fps box reach the headset now (the toggle logs) +const char* MenuVrPathName() { + if (!g_menuVrLayer) return "VR: drawn into the eye picture (menu_vr_layer=0)"; + const XrHook::OverlayStats os = XrHook::GetOverlayStats(); + if (os.ready) return "VR: an OpenXR quad layer (menu_vr_layer=1; the compositor places it)"; + return os.createFails || os.rejects ? "VR: drawn into the eye picture (menu_vr_layer=1, but the quad path FAILED this session)" + : "VR: an OpenXR quad layer once the session ends a frame with it (menu_vr_layer=1; in the eye " + "picture until then)"; +} // The fps box switched on / off (the menu's FPS counter row): logged + beeped like the other toggles; off drops its texture. void ToggleFpsBox(uint64_t n) { g_fpsShow = !g_fpsShow; @@ -12920,10 +13496,133 @@ void ToggleFpsBox(uint64_t n) { if (!g_menuOpen.load(std::memory_order_relaxed)) FpsStop(); // (the menu row: the menu is open, the meter keeps running) } Log("fps box %s (tuning menu, Present #%llu) -- flat fps_x=%d fps_y=%d fps_scale=%.1f, VR fps_vr_x=%d fps_vr_y=%d " - "fps_vr_scale=%.1f", g_fpsShow ? "ON" : "OFF", (unsigned long long)n, g_fpsX, g_fpsY, (double)g_fpsScale, g_fpsVrX, - g_fpsVrY, (double)g_fpsVrScale); + "fps_vr_scale=%.1f; %s", g_fpsShow ? "ON" : "OFF", (unsigned long long)n, g_fpsX, g_fpsY, (double)g_fpsScale, g_fpsVrX, + g_fpsVrY, (double)g_fpsVrScale, MenuVrPathName()); PlayTones(1, g_fpsShow ? 1200 : 300, 150, 0); } +// v0.10.3 phase 28: the menu's FPS counter lock row -- the VR fps box follows the headset (0) / stays fixed in the cab (1). +// Logged + beeped like ToggleFpsBox. Also switchable in flat (kept for VR; the row is greyed there). +void FpsVrLockReset(); // (FpsVrLockedPlace's once-logs + the captured pivot: after MenuDrawVrOn) +void ToggleFpsVrLock(uint64_t n) { + g_fpsVrLock = g_fpsVrLock ? 0 : 1; + g_fpsExplicit = g_fpsMoved = true; + FpsVrLockReset(); + const XrHook::PoseStats ps = XrHook::GetPoseStats(); + Log("fps box VR lock: %s (fps_vr_lock=%d, tuning menu, Present #%llu) -- fps_vr_x=%d fps_vr_y=%d fps_vr_scale=%.1f are now %s; " + "OpenXR: hook %s, %llu stereo xrLocateViews seen, %llu xrEndFrame projection layers, layer space type %d (2 = LOCAL); %s", + g_fpsVrLock ? "FIXED IN THE CAB" : "follows the headset", g_fpsVrLock, (unsigned long long)n, g_fpsVrX, g_fpsVrY, + (double)g_fpsVrScale, g_fpsVrLock ? "yaw / pitch degrees at 0.8 m (+ right, + down) and the size at 0.8 m" + : "% of the eye picture from its optical centre", + XrHook::Hooked() ? "installed" : "NOT installed", (unsigned long long)ps.locates, (unsigned long long)ps.endFrames, + ps.layerSpaceType, MenuVrPathName()); + PlayTones(1, g_fpsVrLock ? 1200 : 300, 150, 0); +} + +// ---- v0.10.0 tuning menu "Reset to defaults" row --------------------------------------------------------------------------------- +// Every value the menu edits goes back to a FRESH INSTALL, live and in dlaa.ini. Fresh install = the shipped dlaa.ini (docs/ +// dlaa.ini.sample: every value commented out = the built-in default): no `mode` key, so StartInjection leaves DLAA ON (unless +// dlaa_off.txt) and g_dlssUpscale at its built-in true -- the Mode row reads "DLSS" (the same picture as DLAA at Scaling 100 %, +// the upscale below it); dlss_preset default (driver pick), dlaa_area 100, sharpness 0.4, sharp_radius 1.5, tex_lod_bias 0 with the +// cut-out key absent (g_lodCutMode = kLodCutAbsent, -0.50), mv_objects 2, mirror_dlaa 1, dlaa_pre_tonemap 1, perf_profile high, +// mv_fwd_depth 1, the panel and the fps box at their default placement (fps box off). Each live change uses the side effects of +// the Step* / Toggle* function of the row. On disk the 34 keys are REMOVED (WriteIniPreserving, empty value): key_* hotkeys, debug, +// every other key and all comments stay. Only the profile keys that dlaa.ini sets AND this reset removes (dlss_preset, dlaa_area, +// mirror_dlaa, mv_fwd_depth) lose their "explicit" mark; the other profile keys (mirror_vr_mode, mv_vote_res, ...) stay in the file, +// so they stay explicit exactly as at the next start. +void ResetSettings(uint64_t n) { + // mode: DLAA on + DLSS upscale on (what a start without a `mode` / `dlss_upscale` key gives), as CycleMode does it + const bool wasOn = g_dlaaOn.load(); + const bool wantOn = !g_dlaaDisabled; // dlaa_off.txt next to the DLL = the fresh start is OFF + if (wantOn && !wasOn && g_gameDeviceChanged) { + Log("settings reset: DLAA stays OFF (the game render device changed -- restart the game)"); // as CycleMode / ToggleDlaa + } else { + g_dlaaOn = wantOn; + } + g_dlssUpscale = true; + g_upBlocked[0] = 0; // a failed upscale size is retried + g_resetNext = true; // textures + NGX feature rebuild at the next blit, DLSS history dropped + if (!wasOn && g_dlaaOn.load()) MvInvalidate(); // stale MV candidates from before the off period + // sharpen strength / width (StepSharpness / StepSharpRadius) + SceneDlaa::SetSharpness(0.4f); + SceneDlaa::SetSharpRadius(1.5f); + // texture LOD: the sampler twins are re-derived from g_lodBias / g_lodCutMode at the next scene pass (g_lodGen), as the keys do + g_lodBias = 0.0f; + g_lodCutMode = kLodCutAbsent; + g_lodCutBias = -0.5f; + // per-part motion vectors (ToggleDrawIds: mv_objects 2); 1 = the legacy stencil ids go off too (g_objCfg; the hooks flush) + g_objMode = 2; + g_objCfg = false; + g_didCfg = true; + // DLAA before tonemap (TogglePreTonemap): dlaa_pre_tonemap 1 + if (g_preCfg != 1 || !g_preOn.load()) { g_preCfg = 1; g_preOn = true; g_preFailed = false; g_preFailRun = 0; } + g_preStage = -1; // the next frame logs its stage again + // preset / area / mirror DLAA / see-through depth follow the profile again; the profile is high (perf_profile removed) + g_profExplicit[PK_PRESET] = g_profExplicit[PK_AREA] = g_profExplicit[PK_MIRROR_DLAA] = g_profExplicit[PK_FWD_DEPTH] = false; + // v0.10.2: the mirror modes too (the Mirror DLAA row); mirror_vr_views back to its built-in 2 (no profile value) + g_profExplicit[PK_MIRROR_VR_MODE] = g_profExplicit[PK_MIRROR_FLAT_MODE] = false; + g_mirVrViews = 2; + g_mirCamOnly = false; // mirror_mv back to its built-in parts (no profile value) + g_profile = 0; + g_fwdAutoOff = false; // re-arms the VR budget measurement (ToggleFwdDepth / ApplyProfile) + g_vrArea = 100; // flat keeps the VR value in dlaa.ini; the fresh value is 100 too + char changed[700]; + ApplyProfile(true, changed, sizeof(changed)); // preset default, area 100, mirror 1, forward depth 1 (+ their side effects) + MirInvalidate(); // every mirror unit restarts its history (ToggleMirrors) + // panel placement (the menu's Panel rows); g_menuMoved: the close line logs the new placement + g_menuX = 2; g_menuY = 8; g_menuScale = 1.0f; + g_menuVrX = 0; g_menuVrY = -5; g_menuVrScale = 1.0f; g_menuVrDepth = 12; g_menuVrFace = 1; + g_menuVrDist = 100; // v0.10.3 phase 29b + g_menuExplicit = false; + g_menuMoved = true; + // fps box: off (ToggleFpsBox's off path) + default placement + if (g_fpsShow) { + g_fpsShow = false; + TuningMenu::ReleaseWidget(); + g_fpsVrBuild = 0.0f; + if (!g_menuOpen.load(std::memory_order_relaxed)) MenuLateReset("fps box off"); + if (!g_menuOpen.load(std::memory_order_relaxed)) FpsStop(); + } + g_fpsX = 1; g_fpsY = 1; g_fpsScale = 1.0f; + g_fpsVrX = 0; g_fpsVrY = -25; g_fpsVrScale = kFpsVrScaleDefault; + g_fpsVrLock = 0; // v0.10.3 phase 28: follows the headset again + g_fpsExplicit = false; + g_fpsMoved = true; + OnLiveTuningChange(); // the timing windows restart (new pipeline state) + + // dlaa.ini: remove the 34 keys (empty value); everything else stays byte-for-byte (v0.10.2: + mirror_mv = 32; v0.10.3 phase 28: + // + fps_vr_lock = 33, the cap raised to kIniMaxKeys; v0.10.3 phase 29b: + menu_vr_dist = 34) + static const char* const kKeys[] = { + "mode", "dlss_preset", "dlaa_area", "sharpness", "sharp_radius", "dlss_upscale", "tex_lod_bias", "tex_lod_bias_cutout", + "mv_objects", "mirror_dlaa", "mirror_vr_mode", "mirror_flat_mode", "mirror_vr_views", "mirror_mv", "dlaa_pre_tonemap", + "perf_profile", "mv_fwd_depth", + "menu_x", "menu_y", "menu_scale", "menu_vr_x", "menu_vr_y", "menu_vr_scale", "menu_vr_depth", "menu_vr_face", + "menu_vr_dist", // phase 29b + "fps_show", "fps_x", "fps_y", "fps_scale", "fps_vr_x", "fps_vr_y", "fps_vr_scale", "fps_vr_lock", // phase 28: + fps_vr_lock + }; + constexpr int kNKeys = (int)(sizeof(kKeys) / sizeof(kKeys[0])); + static_assert(kNKeys <= kIniMaxKeys, "WriteIniPreserving handles at most kIniMaxKeys keys"); + IniKV kv[kIniMaxKeys] = {}; // val[0] == 0 on every entry = remove the key + for (int i = 0; i < kNKeys; ++i) kv[i].key = kKeys[i]; + const bool written = WriteIniPreserving(kv, kNKeys); + if (written) { + Log("settings RESET to defaults (Reset row, Present #%llu): mode = %s (no key: DLAA on + dlss_upscale on) dlss_preset = default " + "dlaa_area = 100 sharpness = 0.4 sharp_radius = 1.5 dlss_upscale = 1 tex_lod_bias = 0.00 tex_lod_bias_cutout = absent " + "(-0.50) mv_objects = 2 mirror_dlaa = 1 mirror_vr_mode = 2 mirror_flat_mode = 1 mirror_vr_views = 2 mirror_mv = parts " + "dlaa_pre_tonemap = 1 " + "perf_profile = high mv_fwd_depth = 1 menu_x = 2 menu_y = 8 " + "menu_scale = 1.0 menu_vr_x = 0 menu_vr_y = -5 menu_vr_scale = 1.0 menu_vr_depth = 12 menu_vr_dist = 100 menu_vr_face = 1 " + "fps_show = 0 " + "fps_x = 1 fps_y = 1 fps_scale = 1.0 fps_vr_x = 0 fps_vr_y = -25 fps_vr_scale = %.1f fps_vr_lock = 0 -- profile: %s -- dlaa.ini: %d keys " + "removed (hotkeys and other lines kept)", (unsigned long long)n, g_dlaaOn.load() ? "DLSS" : "off", (double)kFpsVrScaleDefault, + changed, kNKeys); + BeepSeq b; // success: rising two-tone 600 -> 900 Hz, 120 ms each (as SaveSettings) + b.n = 2; b.freq[0] = 600; b.ms[0] = 120; b.freq[1] = 900; b.ms[1] = 120; b.gapMs = 40; + PlayBeeps(b); + } else { + Log("settings reset: dlaa.ini write FAILED (live values reset, Present #%llu)", (unsigned long long)n); + PlayTones(1, 200, 400, 0); // failure: one long 200 Hz tone (400 ms) + } +} // ---- tuning menu: live GPU figures (the GPU block under the title, the "GPU cost" column, the cost sentence) ---- // GpuPerf (gpu_perf.h) times every sub-pass of the mod per eye; it is OFF for a normal user (debug = 0), so the menu switches it // on while open (MenuPerfOpen / MenuPerfClose; the GPU spans' scene figure follows GpuPerf::On, SpanOnPassStart). The menu keeps @@ -12975,6 +13674,13 @@ struct MenuPerfState { bool gameNa = false; // still none 30 s after the open: "n/a" bool noAa = false; // no DLAA / DLSS feature has ever existed this session: the mod anti-aliases nothing -> "game n/a" at once bool nothing = false; // 3 s after the open and no pass of the mod has landed since: nothing to measure on this screen + // v0.10.3 phase 29b: the fps box's own GPU cost (GpuPerf::kOverlay, a PER-FRAME section: every DrawWidget of a Present frame + // -- the VR quad image once at xrEndFrame, or each eye picture, + the flat / desktop-mirror backbuffer -- summed, NOT per + // eye; not in the eye totals above). boxMs = ms per frame over the last interval (frames without a box draw count 0). + GpuPerf::FrameStat boxRaw; // the window sums at the last read + uint32_t boxGen = 0; // GpuPerf::Restarts() then + bool haveBox = false; + double boxMs = 0.0; }; MenuPerfState g_menuPerf; @@ -13044,6 +13750,25 @@ void MenuPerfTick() { MenuPerfEye pe; if (MenuPerfEyeDelta(e, pe) && !base && e < eyes) m.eye[e] = pe; // no pass of the eye landed: the last figures stay } + { // v0.10.3 phase 29b: the fps box, ms per frame (its own per-frame sums) + const GpuPerf::FrameStat cur = GpuPerf::FrameStats(GpuPerf::kOverlay); + const uint32_t gen = GpuPerf::Restarts(); + const bool cont = gen == m.boxGen && cur.sets >= m.boxRaw.sets && !base; + const uint64_t dSets = cont ? cur.sets - m.boxRaw.sets : cur.sets; + const uint64_t dN = cont && cur.n >= m.boxRaw.n ? cur.n - m.boxRaw.n : cur.n; + const double dSum = cont ? cur.sumMs - m.boxRaw.sumMs : cur.sumMs; + if (!base && dSets && dN) { m.boxMs = dSum > 0.0 ? dSum / (double)dSets : 0.0; m.haveBox = true; } + m.boxRaw = cur; + m.boxGen = gen; + static bool s_logged = false; + if (m.haveBox && !s_logged) { + s_logged = true; + Log("tuning menu: fps box GPU cost %.4f ms per frame (GpuPerf fps-box: %llu of %llu timed frames drew it; every picture " + "it went into that frame, %s; not in the per-eye mod total)", m.boxMs, (unsigned long long)dN, + (unsigned long long)dSets, MenuVr() ? (g_menuVrLayer ? "VR: the quad image + the desktop mirror, or both eye " + "pictures + the mirror on the in-picture path" : "VR: both eye pictures + the desktop mirror") : "flat: the backbuffer"); + } + } if (g_fps.have) { // v0.10.0: the fps meter (FpsTick) is the one fps source m.fps = g_fps.fps; m.frameMs = g_fps.frameMs; @@ -13149,7 +13874,14 @@ void MenuPerfCosts(TuningMenu::Panel& p, bool vr, int sel, wchar_t* sent, size_t ms(MR_FWD, MG_FWD); if (!fwdOn) txt(MR_FWD, L"off"); txt(MR_UPSCALE, dlaaOn && upOn ? L"no extra" : L"off"); // the upscale is the same NGX pass; the game draws fewer pixels msTotal(MR_DLAA); if (!dlaaOn) txt(MR_DLAA, L"off"); - for (int r = MR_OFXR; r < MR_COUNT; ++r) txt(r, L"-"); + for (int r = MR_OFXR; r < MR_COUNT; ++r) txt(r, L"-"); // (v0.10.3 phase 29c: the two group headers are in this range too) + // v0.10.3 phase 29b: the fps box's own measured cost, ms PER FRAME (GpuPerf::kOverlay; not per eye: one quad image or the + // eye pictures + the desktop mirror together) + const MenuPerfState& mp = g_menuPerf; + if (!g_fpsShow) txt(MR_FPS, L"off"); + else if (!timers) txt(MR_FPS, L"n/a"); + else if (!mp.haveBox) txt(MR_FPS, L"..."); + else MenuMs(p.rows[MR_FPS].cost, kC, mp.boxMs); // the sentence: "Costs 1.3 ms per eye now; ..." (numbers from the same snapshot as the column). The description already // says what the row does and its typical cost; this adds the LIVE figure, or WHY a greyed row is greyed. The panel shows 3 @@ -13202,8 +13934,7 @@ void MenuPerfCosts(TuningMenu::Panel& p, bool vr, int sel, wchar_t* sent, size_t case MR_MIRROR: if (!mirOn) swprintf(sent, sentCap, L"Off now: costs nothing."); else if (!live) swprintf(sent, sentCap, L"%ls", wait); - else swprintf(sent, sentCap, L"Costs %ls %ls now; dlaa.ini mirror_vr_mode / mirror_flat_mode set how many " - L"mirrors.", fig(MG_MIR), unit); + else swprintf(sent, sentCap, L"Costs %ls %ls now; fewer mirrors cost less.", fig(MG_MIR), unit); break; case MR_PRETM: if (vr) swprintf(sent, sentCap, L"Greyed in VR: VR always runs DLAA on the finished picture."); @@ -13216,6 +13947,13 @@ void MenuPerfCosts(TuningMenu::Panel& p, bool vr, int sel, wchar_t* sent, size_t else if (!live) swprintf(sent, sentCap, L"%ls", wait); else swprintf(sent, sentCap, L"Costs %ls %ls now; off saves it.", fig(MG_FWD), unit); break; + case MR_FPS: // v0.10.3 phase 29b + if (!g_fpsShow) swprintf(sent, sentCap, L"Off now: costs nothing."); + else if (!timers) swprintf(sent, sentCap, L"%ls", wait); + else if (mp.haveBox) { wchar_t b[24]; + swprintf(b, 24, mp.boxMs < 0.001 ? L"<0.001 ms" : L"%.3f ms", mp.boxMs); + swprintf(sent, sentCap, L"Costs %ls per frame now (all pictures together).", b); } + break; case MR_UPSCALE: if (!dlaaOn) swprintf(sent, sentCap, L"Off now (the mod is off)."); else if (!upOn) swprintf(sent, sentCap, L"Off now: the game's own stretch is used below Scaling 100 %%."); @@ -13224,6 +13962,449 @@ void MenuPerfCosts(TuningMenu::Panel& p, bool vr, int sel, wchar_t* sent, size_t } } +// v0.10.2 the "Mirror DLAA" row: seven states (Left / Right, wrap-around) over mirror_dlaa (the live switch, as Alt+F6), the +// mirror mode of the kind the menu shows (VR: mirror_vr_mode, flat: mirror_flat_mode), mirror_vr_views (the view count of +// mode 2, VR and flat -- MirBeginView / MirSelEndFrame read MirMode() and g_mirVrViews for both kinds) and mirror_mv (parts / +// camera, g_mirCamOnly -- one key for both kinds, as mirror_vr_views): +// 0 off mirror DLAA off (g_mirOn false; the modes stay, Alt+F6 turns it back on with them) +// 1 1 mirror (largest) mode 2, mirror_vr_views 1, mirror_mv parts (the main mirror next to the driver) +// 2 1 mirror, camera mode 2, mirror_vr_views 1, mirror_mv camera (no per-draw ids: ~0.15 ms instead of ~0.4 ms) +// 3 2 mirrors (largest) mode 2, mirror_vr_views 2, mirror_mv parts +// 4 2 mirrors, camera mode 2, mirror_vr_views 2, mirror_mv camera +// 5 all mirrors mode 1, mirror_mv parts (mirror_vr_views unchanged) +// 6 all, camera motion only mode 4 (mirror_vr_views and mirror_mv unchanged: mode 4 is camera motion whatever mirror_mv +// says -- the same state as before for a dlaa.ini with mode 4) +const char* const kMirStateLog[7] = { "off", "1 mirror (largest)", "1 mirror (largest), camera motion only", + "2 mirrors (largest)", "2 mirrors (largest), camera motion only", "all mirrors", + "all, camera motion only" }; +// row values: the 144-px value column fits ~20 characters ("all, camera motion only" would end in "..."); measured at Segoe UI +// 15 px: "all, camera motion" 122 px, "2 mirrors, camera" 115, "all, every 2nd frame" 130, "all, 2nd fr., camera" 121 +const wchar_t* const kMirStateRow[7] = { L"off", L"1 mirror (largest)", L"1 mirror, camera", L"2 mirrors (largest)", + L"2 mirrors, camera", L"all mirrors", L"all, camera motion" }; +// The state in force as TWICE its index: even = one of the seven; odd = a dlaa.ini / profile combination between two of them, +// so Left / Right go to the nearest state on that side -- mode 2 with mirror_vr_views 3..8 = 9 (between 2 mirrors, camera and +// all; either mirror_mv), mode 3 (each unit every 2nd frame) = 11 (between all and all, camera; either mirror_mv). Mode 1 with +// mirror_mv camera = 12 (all, camera: the same work as mode 4). Mode 0 (no mirror units) counts as off. +int MirMenuPos(bool vr) { + if (!g_mirOn.load()) return 0; + const bool cam = g_mirCamOnly; + switch (vr ? g_mirVrMode : g_mirFlatMode) { + case 0: return 0; + case 2: return g_mirVrViews <= 1 ? (cam ? 4 : 2) : (g_mirVrViews == 2 ? (cam ? 8 : 6) : 9); + case 1: return cam ? 12 : 10; + case 3: return 11; + default: return 12; + } +} +void MirMenuValue(wchar_t* out, size_t cap, bool vr) { + const int mode = vr ? g_mirVrMode : g_mirFlatMode; + const bool cam = g_mirCamOnly; + if (g_mirOn.load() && mode == 0) swprintf(out, cap, L"off (mode 0)"); + else if (g_mirOn.load() && mode == 2 && g_mirVrViews > 2) + swprintf(out, cap, cam ? L"%d largest, camera" : L"%d largest", g_mirVrViews); + else if (g_mirOn.load() && mode == 3) swprintf(out, cap, cam ? L"all, 2nd fr., camera" : L"all, every 2nd frame"); + else swprintf(out, cap, L"%ls", kMirStateRow[MirMenuPos(vr) / 2]); +} +// Left / Right on the row (dir -1 / +1): the next state on that side, wrap-around. Marks mirror_dlaa and the mode of this kind +// explicit (profiles keep them; Shift+F12 / the Save row writes them with mirror_mv), restarts the mirror histories (as Alt+F6; +// a mirror_mv change needs it too: the units' MV history was built with / without per-draw ids), logs, beeps: off = Alt+F6's +// low "off" tone; 1 mirror = 1, 2 mirrors = 2, all = 3 short beeps, high (1200 Hz) with per-draw ids, lower (800 Hz) with camera +// motion only. +void CycleMirrors(uint64_t n, int dir, bool vr) { + const int pos = MirMenuPos(vr); + int s = dir < 0 ? (pos + 1) / 2 - 1 : pos / 2 + 1; + if (s < 0) s = 6; + if (s > 6) s = 0; + const int oldMode = vr ? g_mirVrMode : g_mirFlatMode, oldViews = g_mirVrViews; + const bool wasOn = g_mirOn.load(), oldCam = g_mirCamOnly; + const char* const oldMv = MirMvName(oldMode); // the motion of the kind this row shows + if (s == 0) { + g_mirOn = false; + } else { + g_mirOn = true; + int& mode = vr ? g_mirVrMode : g_mirFlatMode; + mode = s <= 4 ? 2 : (s == 5 ? 1 : 4); + if (s <= 4) g_mirVrViews = (s + 1) / 2; + if (s <= 4) g_mirCamOnly = (s & 1) == 0; // 2 / 4 = camera, 1 / 3 = parts + else if (s == 5) g_mirCamOnly = false; // all mirrors = per-draw ids (all, camera = mode 4: mirror_mv kept) + // entering mode 2: the selection is learnt afresh (the key table only ages in mode 2 -- keys from an earlier mode-2 + // stretch, e.g. another truck's mirrors, would stay selected for up to kMirKeyKeep frames with views) + if (mode == 2 && (oldMode != 2 || !wasOn)) { g_mirKeyN = 0; g_mirSelN = 0; g_mirSelUsed = 0; } + g_profExplicit[vr ? PK_MIRROR_VR_MODE : PK_MIRROR_FLAT_MODE] = true; + } + g_profExplicit[PK_MIRROR_DLAA] = true; // the user's choice (profiles keep it), as Alt+F6 + MirInvalidate(); + static const char* const kWhat[7] = { + "mirror views are left to the game (no jitter, no DLAA); the units keep their resources", + "only the largest mirror view keeps DLAA (the main mirror next to you), the others are left to the game; per-draw " + "motion vectors (each part moves exactly in the glass)", + "only the largest mirror view keeps DLAA (the main mirror next to you), the others are left to the game; camera motion " + "vectors only (no per-draw ids: the cheapest per mirror, moving traffic can ghost in the glass)", + "the 2 largest mirror views keep DLAA, the others are left to the game; per-draw motion vectors (each part moves exactly " + "in the glass)", + "the 2 largest mirror views keep DLAA, the others are left to the game; camera motion vectors only (no per-draw ids: the " + "cheapest per mirror, moving traffic can ghost in the glass)", + "every mirror view gets its own DLAA unit (per-draw motion vectors)", + "every mirror view gets its own DLAA unit with camera motion vectors only (no per-draw ids: the cheapest per mirror, " + "moving traffic can ghost in the glass)" }; + const bool partsState = s == 1 || s == 3 || s == 5; + Log("mirror DLAA now %s (tuning menu %s, %s %d -> %d, mirror_vr_views %d -> %d, mirror_mv %s -> %s, mirror DLAA was %s, " + "Present #%llu) -- %s%s%s%s", + kMirStateLog[s], dir < 0 ? "Left" : "Right", vr ? "mirror_vr_mode" : "mirror_flat_mode", oldMode, + vr ? g_mirVrMode : g_mirFlatMode, oldViews, g_mirVrViews, oldMv, MirMvName(vr ? g_mirVrMode : g_mirFlatMode), + wasOn ? "on" : "off", + (unsigned long long)n, kWhat[s], s ? " (histories restart)" : "", + partsState && !g_didCfg ? " -- per-draw motion vectors are off (mv_objects != 2): the mirrors use camera motion anyway" : "", + s && g_mirCamOnly != oldCam ? " -- mirror_mv is one key for VR and flat: the other kind's mirrors follow it in modes 1 / 2 / 3" + : ""); + if (s == 0) PlayTones(1, 300, 150, 0); + else PlayTones((s + 1) / 2, partsState ? 1200 : 800, 90, 60); +} + +// ---- v0.10.2 HOLD TO BIND ---------------------------------------------------------------------------------------------------- +// While the menu is open, holding ONE key (any key ParseKeyChord can name) or ONE controller button / D-pad direction on a row +// for bind_hold_ms (default 2000) binds it to that row's hotkey action, live and in dlaa.ini (key_) at once: +// - the hold starts at the input's DOWN-EDGE (an input already held when the row was reached does not count; one held since +// the menu opened -- the open key, an engaged shifter gear -- is ignored until released once), is cancelled when it is released or a second key / button joins (Shift / Ctrl / Alt do not count: they are read +// when the hold completes, so holding Ctrl+F5 binds "Ctrl+F5"), completes once, and runs only with the game in front. +// - a keyboard hold replaces the action's keyboard part and keeps its controller part; a controller hold the reverse. +// Backspace (any modifiers) clears both parts ("none"), so Backspace itself cannot be bound in the menu. +// - an input already bound to ANOTHER action (same key + modifiers, or the same controller code) is taken from it (that part +// becomes empty there and is written too) -- but never the last binding of key_menu: that hold is refused (low tone). +// - rows with several actions (model 1..4, the minus / plus pairs, Menu keys) ask one hold per action in sequence; the next +// step needs a fresh press (the down-edge rule: release first), moving to another row or closing the menu ends the +// sequence (completed steps stay bound). The Menu keys row cannot be cleared with Backspace. +// - on every row but Menu keys the 5 current menu inputs (their key with ANY modifiers, their controller code) are no +// candidates: holding Down keeps scrolling. On the Menu keys row they are: the open key does not close the menu there, the +// menu Up / Down move the selection on RELEASE when tapped (shorter than kMenuTapMs), held longer they bind instead; no +// auto-repeat, Left / Right do nothing there. +// - the held input still does its current job once at the press (holding Shift+F11 toggles DLAA first), as any hotkey. +// Render thread only (MenuKeys / MenuBuildPanel). The input-hiding threads never read g_keys (MenuHidesInput), so g_keys may +// change here. +constexpr ULONGLONG kMenuTapMs = 300; // shorter = a tap (Menu keys row: navigates); also when the progress bar shows +constexpr int kMenuBindBar = 10; // progress bar: the buffer (max squares); drawn = MenuBarSteps() = ONE PER SECOND of + // bind_hold_ms (v0.10.3 phase 29e; was a fixed 8: "5 s shows more than 5 blocks") +inline int MenuBarSteps() { const int s = (g_bindHoldMs + 500) / 1000; return s < 1 ? 1 : (s > kMenuBindBar ? kMenuBindBar : s); } +constexpr int kSigJoy = 0x100; // input signature: 1..255 = a key (VK), kSigJoy + code = a controller code +struct MenuBindRow { + int row; + int n; // actions = holds in sequence (1..5) + KeyAction a[5]; + const char* step[5]; // the step label ("step 2/2: plus"); unused when n == 1 + const char* name; // the row name for the log line +}; +const MenuBindRow kMenuBindRows[] = { + { MR_MODE, 1, { KA_MODE_CYCLE }, { "" }, "Mode" }, + { MR_PROFILE, 1, { KA_PROFILE }, { "" }, "Performance profile" }, + { MR_MODEL, 4, { KA_MODEL1, KA_MODEL2, KA_MODEL3, KA_MODEL4 }, { "model 1", "model 2", "model 3", "model 4" }, + "DLAA model" }, + { MR_SHARP, 2, { KA_SHARPEN_DOWN, KA_SHARPEN_UP }, { "minus", "plus" }, "Sharpen strength" }, + { MR_WIDTH, 2, { KA_WIDTH_DOWN, KA_WIDTH_UP }, { "minus", "plus" }, "Sharpen width" }, + { MR_LOD, 2, { KA_LOD_DOWN, KA_LOD_UP }, { "minus", "plus" }, "Texture sharpness" }, + { MR_LODCUT, 2, { KA_LOD_CUT_DOWN, KA_LOD_CUT_UP }, { "minus", "plus" }, "Cut-out texture sharpness" }, + { MR_AREA, 2, { KA_AREA_DOWN, KA_AREA_UP }, { "minus", "plus" }, "DLAA area (VR)" }, + { MR_DRAWIDS, 1, { KA_DRAWID_TOGGLE }, { "" }, "Per-part motion vectors" }, + { MR_MIRROR, 1, { KA_MIRROR_TOGGLE }, { "" }, "Mirror DLAA" }, + { MR_PRETM, 1, { KA_PRE_TONEMAP }, { "" }, "DLAA before tonemap (flat)" }, + { MR_FWD, 1, { KA_FWD_DEPTH }, { "" }, "See-through depth" }, + { MR_UPSCALE, 1, { KA_UPSCALE_TOGGLE }, { "" }, "DLSS upscale" }, + { MR_DLAA, 1, { KA_DLAA_TOGGLE }, { "" }, "DLAA on / off" }, + { MR_MENUKEYS, 5, { KA_MENU, KA_MENU_UP, KA_MENU_DOWN, KA_MENU_LEFT, KA_MENU_RIGHT }, + { "open", "up", "down", "left", "right" }, "Menu keys" }, + { MR_SAVE, 1, { KA_SAVE }, { "" }, "Save to dlaa.ini" }, +}; +// The bind actions of a row; null = the row takes no hold (OFXR, the panel / fps box rows, the 29c group headers, Reset, Close). +const MenuBindRow* MenuBindOf(int row) { + for (const MenuBindRow& b : kMenuBindRows) if (b.row == row) return &b; + return nullptr; +} +struct MenuBindState { + int prevSig = 0; // the single input held at the previous Present: 0 none, -1 several, else a sig + int sig = 0; // the input of the running hold (0 = none) + ULONGLONG t0 = 0; // its down-edge (GetTickCount64) + int bar = 0; // progress steps shown (0..kMenuBindBar - 1; refreshed at most every 100 ms) + ULONGLONG barAt = 0; + int row = -1; // the row of the sequence + int step = 0; // its next step (0-based) + wchar_t note[48] = L""; // "taken from key_x" ... in the row's Hotkey column until noteUntil + int noteRow = -1; + ULONGLONG noteUntil = 0; + int navDir = 0; // Menu keys row: the menu Up (-1) / Down (+1) pressed, waiting for its release + ULONGLONG navAt = 0; + // inputs already held when the menu opened (the Delete that opened it, a held accelerator key, an engaged H-shifter gear = + // a button held for minutes): ignored by the scan until released once, so they neither start a hold nor block one + uint32_t ignKey[8] = {}; // bit vk + uint32_t ignBtn[4] = {}; // bit = button - 1 + unsigned ignPov = 0; +}; +MenuBindState g_mb; +inline unsigned HeldMods() { + return ((GetAsyncKeyState(VK_SHIFT) & 0x8000) ? MOD_SHIFT_BIT : 0u) | + ((GetAsyncKeyState(VK_CONTROL) & 0x8000) ? MOD_CTRL_BIT : 0u) | + ((GetAsyncKeyState(VK_MENU) & 0x8000) ? MOD_ALT_BIT : 0u); +} +// The single input held now (game in front only): 0 none, -1 several (keys and / or controller inputs), else its signature. +// Keys: only those KeyChordName can name (the list is built once; modifiers, mouse buttons and the Windows keys are not +// among them). Controller: the state PollKeys read this Present; a D-pad diagonal is two directions = several. Inputs in the +// ignore set (held since the menu opened) do not count; a released one leaves the set. adopt = put every input held now +// into the ignore set (MenuBindReset at the open). +int MenuBindScan(bool adopt = false) { + static int s_vks[256]; + static int s_nVk = -1; + if (s_nVk < 0) { + s_nVk = 0; + char nm[24]; + for (int vk = 0x08; vk <= 0xFE; ++vk) if (KeyChordName(vk, nm, sizeof(nm))) s_vks[s_nVk++] = vk; + } + if (!IsForeground()) return 0; // (the ignore set is kept while the game is in the background) + uint32_t key[8] = {}; + for (int i = 0; i < s_nVk; ++i) + if (GetAsyncKeyState(s_vks[i]) & 0x8000) key[s_vks[i] >> 5] |= 1u << (s_vks[i] & 31); + MenuBindState& m = g_mb; + for (int w = 0; w < 8; ++w) m.ignKey[w] = adopt ? key[w] : (m.ignKey[w] & key[w]); + for (int w = 0; w < 4; ++w) m.ignBtn[w] = adopt ? g_pollJoyBtn[w] : (m.ignBtn[w] & g_pollJoyBtn[w]); + m.ignPov = adopt ? g_pollJoyPov : (m.ignPov & g_pollJoyPov); + int sig = 0, count = 0; + for (int w = 0; w < 8; ++w) { + uint32_t b = key[w] & ~m.ignKey[w]; + for (int i = 0; b && i < 32; ++i, b >>= 1) + if (b & 1u) { sig = w * 32 + i; if (++count > 1) return -1; } + } + for (int w = 0; w < 4; ++w) { + uint32_t b = g_pollJoyBtn[w] & ~m.ignBtn[w]; + for (int i = 0; b && i < 32; ++i, b >>= 1) + if (b & 1u) { sig = kSigJoy + w * 32 + i + 1; if (++count > 1) return -1; } + } + const unsigned pov = g_pollJoyPov & ~m.ignPov; + for (int d = 0; d < 4; ++d) + if (pov & (1u << d)) { sig = kSigJoy + KeySwallow::kJoyPovUp + d; if (++count > 1) return -1; } + return sig; +} +// The text of an input signature ("Ctrl+F5" with the given modifiers, "Wheel7", "WheelUp"). +void MenuBindSigName(int sig, unsigned mods, char* out, size_t cap) { + if (sig >= kSigJoy) KeyBindText(0, 0, sig - kSigJoy, out, cap); + else KeyBindText(sig, mods, 0, out, cap); +} +// One of the 5 current menu inputs (keyboard: the key with any modifiers; controller: the same code)? +bool MenuBindIsMenuInput(int sig) { + static const KeyAction kMenuActs[] = { KA_MENU, KA_MENU_UP, KA_MENU_DOWN, KA_MENU_LEFT, KA_MENU_RIGHT }; + for (KeyAction m : kMenuActs) + if (sig >= kSigJoy ? g_keys[m].joy == sig - kSigJoy : g_keys[m].vk == sig) return true; + return false; +} +// A fresh state at the open; every input held right now is ignored until released (the Delete that opened the menu starts no +// hold, an engaged shifter gear blocks none). +void MenuBindReset() { + g_mb = MenuBindState(); + g_mb.row = g_menuSel; + g_mb.prevSig = MenuBindScan(true); +} +void MenuBindNote(int row, const char* text) { + MenuWiden(g_mb.note, sizeof(g_mb.note) / sizeof(g_mb.note[0]), text); + g_mb.noteRow = row; + g_mb.noteUntil = GetTickCount64() + 3000; +} +// A completed hold: binds `sig` to the row's current step (or clears it: Backspace), takes it from any other action, writes +// dlaa.ini, logs, beeps, and moves the sequence on. A refused hold (Backspace on Menu keys / the last key_menu binding) +// keeps the step. +void MenuBindComplete(const MenuBindRow& br, int sig, ULONGLONG heldMs, uint64_t n) { + const int step = g_mb.step < br.n ? g_mb.step : 0; + const KeyAction a = br.a[step]; + KeyBind& k = g_keys[a]; + const bool isKey = sig < kSigJoy; + const bool clear = isKey && sig == VK_BACK; + const unsigned mods = isKey ? HeldMods() : 0u; + char held[64]; + MenuBindSigName(sig, mods, held, sizeof(held)); + char stepTxt[24] = ""; + if (br.n > 1) snprintf(stepTxt, sizeof(stepTxt), " step %d/%d", step + 1, br.n); + if (clear && br.row == MR_MENUKEYS) { + Log("hotkey %s NOT cleared (held %s for %.1f s on row \"%s\"%s, Present #%llu): the 5 menu keys cannot be cleared in the " + "menu (dlaa.ini key_menu* can)", k.ini, held, (double)heldMs / 1000.0, br.name, stepTxt, (unsigned long long)n); + MenuBindNote(br.row, "menu keys: no clear"); + PlayTones(1, 200, 400, 0); + return; + } + int nvk = k.vk, njoy = k.joy; + unsigned nmods = k.mods; + if (clear) { nvk = 0; nmods = 0; njoy = 0; } + else if (isKey) { nvk = sig; nmods = mods; } + else { njoy = sig - kSigJoy; } + int taken[KA_COUNT]; + int nt = 0; + if (!clear) + for (int i = 0; i < KA_COUNT; ++i) { + if (i == (int)a) continue; + const KeyBind& o = g_keys[i]; + if (isKey ? (o.vk == nvk && o.mods == nmods) : (o.joy == njoy)) taken[nt++] = i; + } + for (int t = 0; t < nt; ++t) + if (taken[t] == KA_MENU && (isKey ? !g_keys[KA_MENU].joy : !g_keys[KA_MENU].vk)) { + Log("hotkey %s NOT bound to %s (held for %.1f s on row \"%s\"%s, Present #%llu): it is the only binding of key_menu -- " + "the menu must stay reachable (bind another open key in step 1 first)", held, k.ini, (double)heldMs / 1000.0, + br.name, stepTxt, (unsigned long long)n); + MenuBindNote(br.row, "key_menu needs it"); + PlayTones(1, 200, 400, 0); + return; + } + char was[64]; + snprintf(was, sizeof(was), "%s", (k.vk || k.joy) ? k.name : "none"); + k.vk = nvk; k.mods = nmods; k.joy = njoy; + KeyBindText(k.vk, k.mods, k.joy, k.name, sizeof(k.name)); + g_keyWasActive[a] = true; // the still-held input does not fire the new binding at once + IniKV kv[32] = {}; + int nkv = 0; + kv[nkv].key = k.ini; + snprintf(kv[nkv].val, sizeof(kv[0].val), "%s", k.name); + ++nkv; + char takenTxt[320] = ""; + size_t tl = 0; + for (int t = 0; t < nt; ++t) { + KeyBind& o = g_keys[taken[t]]; + if (isKey) { o.vk = 0; o.mods = 0; } else { o.joy = 0; } + KeyBindText(o.vk, o.mods, o.joy, o.name, sizeof(o.name)); + if (nkv < 32) { kv[nkv].key = o.ini; snprintf(kv[nkv].val, sizeof(kv[0].val), "%s", o.name); ++nkv; } + if (tl < sizeof(takenTxt)) { + const int w = snprintf(takenTxt + tl, sizeof(takenTxt) - tl, "%s%s (now %s)", t ? ", " : "; taken from ", o.ini, o.name); + if (w > 0) tl += (size_t)w; + } + } + const bool written = WriteIniPreserving(kv, nkv); // "none" is written as such (an empty value would delete the line) + Log("hotkey %s = %s (%s in the menu: held %s for %.1f s on row \"%s\"%s; was \"%s\"%s) -- %s, Present #%llu", k.ini, k.name, + clear ? "cleared" : "bound", held, (double)heldMs / 1000.0, br.name, stepTxt, was, takenTxt, + written ? "dlaa.ini written" : "dlaa.ini write FAILED (live until the game closes)", (unsigned long long)n); + if (!written) { + MenuBindNote(br.row, "dlaa.ini write FAILED"); + PlayTones(1, 200, 400, 0); // failure: one long 200 Hz tone (as a failed save) + } else if (clear) { + MenuBindNote(br.row, "cleared (none)"); + PlayTones(1, 300, 150, 0); // clear: one low 300 Hz tone + } else { + if (nt) { + char nb[64]; + snprintf(nb, sizeof(nb), "taken from %s%s", g_keys[taken[0]].ini, nt > 1 ? " +more" : ""); + MenuBindNote(br.row, nb); + } + BeepSeq b; // bound: the Save two-tone 600 -> 900 Hz + b.n = 2; b.freq[0] = 600; b.ms[0] = 120; b.freq[1] = 900; b.ms[1] = 120; b.gapMs = 40; + PlayBeeps(b); + } + g_mb.step = step + 1 < br.n ? step + 1 : 0; // the next step is asked at once (a fresh press starts it) +} +// Per Present while the menu is open (MenuKeys, after the navigation): the hold state machine of the selected row. +void MenuBindTick(uint64_t n) { + const ULONGLONG now = GetTickCount64(); + const int sel = g_menuSel; + if (g_mb.row != sel) { g_mb.row = sel; g_mb.step = 0; g_mb.sig = 0; g_mb.bar = 0; } // another row: the sequence ends + const MenuBindRow* br = MenuBindOf(sel); + const int raw = MenuBindScan(); + if (raw != g_mb.prevSig) { // an edge (or a change): any running hold ends, a new one may start + g_mb.sig = 0; g_mb.bar = 0; + if (raw > 0 && br && (sel == MR_MENUKEYS || !MenuBindIsMenuInput(raw))) { g_mb.sig = raw; g_mb.t0 = now; g_mb.barAt = now; } + } else if (g_mb.sig && br) { + const ULONGLONG el = now - g_mb.t0; + if (el >= (ULONGLONG)g_bindHoldMs) { + const int sig = g_mb.sig; + g_mb.sig = 0; g_mb.bar = 0; // completes once: the input stays held, no new edge + MenuBindComplete(*br, sig, el, n); + } else { + const int bar = (int)(el * MenuBarSteps() / (ULONGLONG)g_bindHoldMs); + if (bar != g_mb.bar && now - g_mb.barAt >= 100) { g_mb.bar = bar; g_mb.barAt = now; } // <= 10 panel rebuilds / s + } + } + g_mb.prevSig = raw; +} +// The hold progress bar: `steps` of MenuBarSteps() squares filled, ONE SQUARE PER SECOND of the hold (v0.10.3 phase 29d: shared by +// the bind hold and the Reset hold; 29e: one per second, was a fixed 8). +void MenuHoldBar(int steps, wchar_t (&bar)[kMenuBindBar + 1]) { + const int n = MenuBarSteps(); + const int fill = steps < 0 ? 0 : (steps > n ? n : steps); + for (int i = 0; i < n; ++i) bar[i] = i < fill ? L'\u25A0' : L'\u25A1'; // filled / empty square (WGL4) + bar[n] = 0; +} +// The selected row's hold feedback on the panel: progress bar / note in the Hotkey column, the step in the Value column of a +// multi-step row. MenuBuildPanel, after the rows. +void MenuBindDecorate(TuningMenu::Panel& p, int sel) { + const MenuBindRow* br = MenuBindOf(sel); + if (!br) return; + TuningMenu::Row& r = p.rows[sel]; + constexpr size_t kV = sizeof(r.value) / sizeof(wchar_t), kK = sizeof(r.keys) / sizeof(wchar_t); + const ULONGLONG now = GetTickCount64(); + const bool mine = g_mb.row == sel; + const bool holding = mine && g_mb.sig && now - g_mb.t0 >= kMenuTapMs; // a tap shows nothing + if (br->n > 1 && mine && (holding || g_mb.step > 0)) { + const int st = g_mb.step < br->n ? g_mb.step : 0; + swprintf(r.value, kV, L"step %d/%d: %hs", st + 1, br->n, br->step[st]); + } + if (holding) { + wchar_t bar[kMenuBindBar + 1]; + MenuHoldBar(g_mb.bar, bar); + char nm[64]; + MenuBindSigName(g_mb.sig, g_mb.sig < kSigJoy ? HeldMods() : 0u, nm, sizeof(nm)); + swprintf(r.keys, kK, L"hold %ls %hs", bar, nm); + } else if (g_mb.noteRow == sel && now < g_mb.noteUntil) { + swprintf(r.keys, kK, L"%ls", g_mb.note); + } else if (br->n > 1 && mine && g_mb.step > 0) { + swprintf(r.keys, kK, L"hold a key for: %hs", br->step[g_mb.step < br->n ? g_mb.step : 0]); + } + // (v0.10.3 phase 29c: the footer is no longer rewritten here -- one constant footer, MenuBuildPanel; the hold time and the + // step count overflowed its line in VR. The progress is the row's bar / step text above.) +} + +// ---- v0.10.3 phase 29d: "Reset to defaults" = a HOLD of the menu Right key ---------------------------------------------------- +// Left / Right reset at once before (MenuChange): one stray press lost every setting. Now a FRESH press of the menu Right on the +// Reset row (KeyHit without g_keyRepeat: an auto-repeat hit neither starts nor restarts it) starts a hold; while the action stays +// active (g_keyWasActive[KA_MENU_RIGHT] = its key with its exact modifiers or its wheel button down, as PollKeys read it this +// Present) for bind_hold_ms, the Hotkey column fills the hold-to-bind bar (MenuHoldBar, shown after kMenuTapMs as that bar), then +// ResetSettings runs ONCE (its beeps / log) and the hold is consumed: "reset done" until the release, a new press for another. +// Released early, another row, the game in the background or the menu closed / opened = nothing happens, the state clears. +// Left does nothing on the row. Kept apart from g_mb (hold to bind): the Reset row has no MenuBindRow (MenuBindOf = null, so +// MenuBindTick starts no bind there) and the 5 menu inputs are bind candidates only on the Menu keys row (MenuBindIsMenuInput). +struct MenuResetHold { + ULONGLONG t0 = 0; // the fresh press (GetTickCount64); 0 = no hold + int bar = 0; // progress steps shown (as MenuBindState: refreshed at most every 100 ms) + ULONGLONG barAt = 0; + bool done = false; // ResetSettings ran for this press: nothing more until the release +}; +MenuResetHold g_mrh; +// The hold time as the Reset row shows it: "5", "2.5" (one decimal only when not whole). +void MenuHoldSecs(char* out, size_t cap) { + if (g_bindHoldMs % 1000 == 0) snprintf(out, cap, "%d", g_bindHoldMs / 1000); + else snprintf(out, cap, "%.1f", (double)g_bindHoldMs / 1000.0); +} +// Per Present while the menu is open (MenuKeys, after the navigation and MenuChange). +void MenuResetTick(uint64_t n) { + MenuResetHold& h = g_mrh; + if (g_menuSel != MR_RESET || !g_keyWasActive[KA_MENU_RIGHT] || !IsForeground()) { h = MenuResetHold(); return; } + const ULONGLONG now = GetTickCount64(); + if (!h.t0) { + if (KeyHit(KA_MENU_RIGHT) && !g_keyRepeat[KA_MENU_RIGHT]) { h.t0 = now; h.barAt = now; } + return; + } + if (h.done) return; + const ULONGLONG el = now - h.t0; + if (el >= (ULONGLONG)g_bindHoldMs) { + h.done = true; // once per press + ResetSettings(n); + } else { + const int bar = (int)(el * MenuBarSteps() / (ULONGLONG)g_bindHoldMs); + if (bar != h.bar && now - h.barAt >= 100) { h.bar = bar; h.barAt = now; } // <= 10 panel rebuilds / s + } +} +// The Reset row's Hotkey column while held (MenuBuildPanel, after the rows; else it keeps "hold Right 5 s"). +void MenuResetDecorate(TuningMenu::Panel& p, int sel) { + if (sel != MR_RESET || !g_mrh.t0) return; + TuningMenu::Row& r = p.rows[MR_RESET]; + constexpr size_t kK = sizeof(r.keys) / sizeof(wchar_t); + if (g_mrh.done) { swprintf(r.keys, kK, L"reset done"); return; } + if (GetTickCount64() - g_mrh.t0 < kMenuTapMs) return; // a tap shows nothing (as the bind bar) + wchar_t bar[kMenuBindBar + 1]; + MenuHoldBar(g_mrh.bar, bar); + char sn[40]; + KeyShortName(KA_MENU_RIGHT, sn, sizeof(sn)); + swprintf(r.keys, kK, L"hold %ls %hs", bar, sn); +} + // One row: name, the hotkey text (+ " (VR only)" / " (flat only)" tag), greyed = not applicable now. The value is set by the caller. void MenuRow(TuningMenu::Panel& p, int id, const wchar_t* name, const char* keys, const char* tag, bool greyed) { TuningMenu::Row& r = p.rows[id]; @@ -13245,6 +14426,22 @@ void MenuBuildPanel(TuningMenu::Panel& p) { char k[128]; auto pair = [&](KeyAction a, KeyAction b) { snprintf(k, sizeof(k), "%s / %s", KeyName(a), KeyName(b)); return k; }; const wchar_t* const onOff[2] = { L"off", L"on" }; + // v0.10.3 phase 29c: the SHORT names of the 5 menu keys (footer, Menu keys row, group headers, the two built descriptions) + char snMenu[40], snUp[40], snDown[40], snLeft[40], snRight[40]; + KeyShortName(KA_MENU, snMenu, sizeof(snMenu)); + KeyShortName(KA_MENU_UP, snUp, sizeof(snUp)); + KeyShortName(KA_MENU_DOWN, snDown, sizeof(snDown)); + KeyShortName(KA_MENU_LEFT, snLeft, sizeof(snLeft)); + KeyShortName(KA_MENU_RIGHT, snRight, sizeof(snRight)); + char holdS[16]; // v0.10.3 phase 29d: the Reset hold time ("5", "2.5") + MenuHoldSecs(holdS, sizeof(holdS)); + // a group header row: "..." collapsed / "shown" expanded; the Hotkey column says what opens / closes it + auto groupRow = [&](int id, const wchar_t* name) { + const bool o = MenuGrpOpen(id); + snprintf(k, sizeof(k), "%s: %s", o ? snLeft : snRight, o ? "close" : "open"); + MenuRow(p, id, name, k, nullptr, false); + swprintf(p.rows[id].value, kV, L"%ls", o ? L"shown" : L"..."); + }; MenuRow(p, MR_MODE, L"Mode", KeyName(KA_MODE_CYCLE), nullptr, false); swprintf(p.rows[MR_MODE].value, kV, L"%ls", !g_dlaaOn.load() ? L"off" : (g_dlssUpscale.load() ? L"DLSS" : L"DLAA")); @@ -13275,7 +14472,7 @@ void MenuBuildPanel(TuningMenu::Panel& p) { MenuRow(p, MR_DRAWIDS, L"Per-part motion vectors", KeyName(KA_DRAWID_TOGGLE), nullptr, false); swprintf(p.rows[MR_DRAWIDS].value, kV, L"%ls", g_objMode == 2 ? L"on" : (g_objMode == 1 ? L"old stencil ids" : L"off")); MenuRow(p, MR_MIRROR, L"Mirror DLAA", KeyName(KA_MIRROR_TOGGLE), nullptr, false); - swprintf(p.rows[MR_MIRROR].value, kV, L"%ls", onOff[g_mirOn.load() ? 1 : 0]); + MirMenuValue(p.rows[MR_MIRROR].value, kV, vr); // v0.10.2: the seven states (CycleMirrors) MenuRow(p, MR_PRETM, L"DLAA before tonemap (flat)", KeyName(KA_PRE_TONEMAP), vr ? "flat only" : nullptr, vr); swprintf(p.rows[MR_PRETM].value, kV, L"%ls", !g_preCfg ? L"off (dlaa.ini 0)" : onOff[g_preOn.load() ? 1 : 0]); MenuRow(p, MR_FWD, L"See-through depth", KeyName(KA_FWD_DEPTH), nullptr, false); @@ -13289,6 +14486,7 @@ void MenuBuildPanel(TuningMenu::Panel& p) { if (!Ofxr::g_on.load()) swprintf(p.rows[MR_OFXR].value, kV, L"off (dlaa.ini 0)"); else if (Ofxr::Detected()) swprintf(p.rows[MR_OFXR].value, kV, L"found"); // (no live counter: it would rebuild the panel every frame) else swprintf(p.rows[MR_OFXR].value, kV, L"not found"); + groupRow(MR_PANELGRP, L"Panel settings"); // v0.10.3 phase 29c MenuRow(p, MR_POSX, L"Panel position X", vr ? "dlaa.ini menu_vr_x" : "dlaa.ini menu_x", nullptr, false); if (vr) swprintf(p.rows[MR_POSX].value, kV, L"%+d %%", g_menuVrX); else swprintf(p.rows[MR_POSX].value, kV, L"%d %%", g_menuX); @@ -13297,12 +14495,22 @@ void MenuBuildPanel(TuningMenu::Panel& p) { else swprintf(p.rows[MR_POSY].value, kV, L"%d %%", g_menuY); MenuRow(p, MR_SIZE, L"Panel size", vr ? "dlaa.ini menu_vr_scale" : "dlaa.ini menu_scale", nullptr, false); swprintf(p.rows[MR_SIZE].value, kV, L"%.1f", (double)(vr ? g_menuVrScale : g_menuScale)); - MenuRow(p, MR_DEPTH, L"Panel VR depth", "dlaa.ini menu_vr_depth", vr ? nullptr : "VR only", !vr); - swprintf(p.rows[MR_DEPTH].value, kV, L"%d px", g_menuVrDepth); + const bool vrQuad = vr && MenuVrQuad(); // v0.10.3 phase 29b: the quad path -> the quad's distance + MenuRow(p, MR_DEPTH, L"Panel VR depth", vrQuad ? "dlaa.ini menu_vr_dist" : "dlaa.ini menu_vr_depth", vr ? nullptr : "VR only", + !vr); + if (vrQuad) swprintf(p.rows[MR_DEPTH].value, kV, L"%.2f m", (double)g_menuVrDist / 100.0); + else swprintf(p.rows[MR_DEPTH].value, kV, L"%d px", g_menuVrDepth); MenuRow(p, MR_FACE, L"Panel faces you (VR)", "dlaa.ini menu_vr_face", vr ? nullptr : "VR only", !vr); // phase 16 swprintf(p.rows[MR_FACE].value, kV, L"%ls", onOff[g_menuVrFace ? 1 : 0]); + // v0.10.2: the open key is the value, the 4 others the Hotkey column (v0.10.3 phase 29c: their short names; in the group) + snprintf(k, sizeof(k), "%s / %s / %s / %s", snUp, snDown, snLeft, snRight); + MenuRow(p, MR_MENUKEYS, L"Menu keys", k, nullptr, false); + MenuWiden(p.rows[MR_MENUKEYS].value, kV, snMenu); MenuRow(p, MR_FPS, L"FPS counter", "dlaa.ini fps_show", nullptr, false); swprintf(p.rows[MR_FPS].value, kV, L"%ls", onOff[g_fpsShow ? 1 : 0]); + groupRow(MR_FPSGRP, L"FPS counter settings"); // v0.10.3 phase 29c + MenuRow(p, MR_FPSLOCK, L"FPS counter lock", "dlaa.ini fps_vr_lock", vr ? nullptr : "VR only", !vr); // v0.10.3 phase 28 + swprintf(p.rows[MR_FPSLOCK].value, kV, L"%ls", g_fpsVrLock ? L"Fixed in cab" : L"Follow head"); MenuRow(p, MR_FPSX, L"FPS counter X", vr ? "dlaa.ini fps_vr_x" : "dlaa.ini fps_x", nullptr, false); if (vr) swprintf(p.rows[MR_FPSX].value, kV, L"%+d %%", g_fpsVrX); else swprintf(p.rows[MR_FPSX].value, kV, L"%d %%", g_fpsX); @@ -13313,6 +14521,9 @@ void MenuBuildPanel(TuningMenu::Panel& p) { swprintf(p.rows[MR_FPSSIZE].value, kV, L"%.1f", (double)(vr ? g_fpsVrScale : g_fpsScale)); MenuRow(p, MR_SAVE, L"Save to dlaa.ini", KeyName(KA_SAVE), nullptr, false); swprintf(p.rows[MR_SAVE].value, kV, L"-"); + snprintf(k, sizeof(k), "hold %s %s s", snRight, holdS); // v0.10.3 phase 29d: was "dlaa.ini" (MenuResetTick) + MenuRow(p, MR_RESET, L"Reset to defaults", k, nullptr, false); + swprintf(p.rows[MR_RESET].value, kV, L"-"); MenuRow(p, MR_CLOSE, L"Close menu", KeyName(KA_MENU), nullptr, false); swprintf(p.rows[MR_CLOSE].value, kV, L"-"); @@ -13322,26 +14533,71 @@ void MenuBuildPanel(TuningMenu::Panel& p) { wchar_t sent[200]; MenuPerfCosts(p, vr, sel, sent, sizeof(sent) / sizeof(sent[0])); constexpr size_t kD = sizeof(p.desc) / sizeof(wchar_t); - if (kMenuDesc[sel]) swprintf(p.desc, kD, L"%ls%ls%ls", kMenuDesc[sel], sent[0] ? L" " : L"", sent); - else swprintf(p.desc, kD, L"Closes the menu; the arrow keys go back to the game. %hs does the same from any row.", KeyName(KA_MENU)); - swprintf(p.footer, sizeof(p.footer) / sizeof(wchar_t), L"%hs / %hs select %hs / %hs change %hs close", - KeyName(KA_MENU_UP), KeyName(KA_MENU_DOWN), KeyName(KA_MENU_LEFT), KeyName(KA_MENU_RIGHT), KeyName(KA_MENU)); + if (sel == MR_RESET) // v0.10.3 phase 29d: the hold first (no cost sentence on this row) + swprintf(p.desc, kD, L"Hold %hs for %hs s to reset. %ls", snRight, holdS, kMenuDesc[sel]); + else if (kMenuDesc[sel]) swprintf(p.desc, kD, L"%ls%ls%ls", kMenuDesc[sel], sent[0] ? L" " : L"", sent); + else if (sel == MR_MENUKEYS) // v0.10.2 + swprintf(p.desc, kD, L"The 5 keys that open and drive this menu. Hold a key or wheel button %.1f s, 5 times in a row: open " + L"/ close, up, down, left, right. Backspace cannot clear them here. A short tap of %hs / %hs moves to another row " + L"(ends the sequence); %hs does not close the menu on this row: use Close menu.", (double)g_bindHoldMs / 1000.0, + snUp, snDown, snMenu); + else swprintf(p.desc, kD, L"Closes the menu; every key and button goes back to the game. %hs does the same from " + L"any row but Menu keys.", snMenu); + // v0.10.3 phase 29c: ONE footer for every state (the hold / bind progress is in the row), from the short key names. It shares + // its line with the licence line (menu.cpp), so the rebind hint is shortened, then dropped, when the text does not fit left of + // it (TuningMenu::FooterFits, measured with the panel's font; only when a menu key name changed: cached by the full text). + { + constexpr size_t kF = sizeof(p.footer) / sizeof(wchar_t); + static const wchar_t* const kHint[] = { L" hold a key: rebind", L" hold: rebind", L"" }; + constexpr size_t kT = 256; // (5 x 39 + the words: never truncated before the fit test) + static wchar_t s_full[kT] = L"", s_shown[kT] = L""; + wchar_t full[kT]; + swprintf(full, kT, L"%hs / %hs select %hs / %hs change %hs close%ls", snUp, snDown, snLeft, snRight, snMenu, kHint[0]); + if (wcscmp(full, s_full)) { + for (const wchar_t* h : kHint) { + swprintf(s_shown, kT, L"%hs / %hs select %hs / %hs change %hs close%ls", snUp, snDown, snLeft, snRight, snMenu, h); + if (!h[0] || TuningMenu::FooterFits(s_shown)) break; + } + wcscpy_s(s_full, full); + } + wcsncpy_s(p.footer, kF, s_shown, _TRUNCATE); + } + MenuBindDecorate(p, sel); // v0.10.2 hold to bind: bar / step / note (by MR id: before the compaction) + MenuResetDecorate(p, sel); // v0.10.3 phase 29d: the Reset hold's bar (by MR id too) + + // v0.10.3 phase 29c: the rows of a collapsed group are not drawn -- the visible rows move to the front in MR order, nRows = + // their count (RefHeight: the panel shrinks), sel = the visible index of g_menuSel (a hidden selection -- not reachable, + // the open resets it -- would show its header). The vacated tail is zeroed: Draw compares the whole Panel to rebuild. + const int shown = MenuRowVisible(sel) ? sel : MenuRowGroup(sel); + int nv = 0, vsel = 0; + for (int id = 0; id < MR_COUNT; ++id) { + if (!MenuRowVisible(id)) continue; + if (id == shown) vsel = nv; + if (nv != id) memcpy(&p.rows[nv], &p.rows[id], sizeof(p.rows[0])); + ++nv; + } + if (nv < TuningMenu::kMaxRows) memset(&p.rows[nv], 0, sizeof(p.rows[0]) * (size_t)(TuningMenu::kMaxRows - nv)); + p.nRows = nv; + p.sel = vsel; } void MenuClose(uint64_t n, const char* why) { g_menuOpen = false; + g_mb = MenuBindState(); // v0.10.2: a running hold / bind sequence ends with the menu + g_mrh = MenuResetHold(); // v0.10.3 phase 29d: so does a Reset hold g_menuBlitEye = -1; g_menuBlitRt = nullptr; PlayTones(1, 300, 120, 0); char placed[240] = ""; if (g_menuMoved) - snprintf(placed, sizeof(placed), " -- panel now flat x=%d%% y=%d%% size %.1f, VR x=%+d%% y=%+d%% size %.1f depth %d px %s (%s " - "or the Save row writes it)", g_menuX, g_menuY, (double)g_menuScale, g_menuVrX, g_menuVrY, (double)g_menuVrScale, - g_menuVrDepth, g_menuVrFace ? "facing" : "flat", KeyName(KA_SAVE)); - char fpsPlaced[200] = ""; + snprintf(placed, sizeof(placed), " -- panel now flat x=%d%% y=%d%% size %.1f, VR x=%+d%% y=%+d%% size %.1f depth %d px / " + "quad %.2f m %s (%s or the Save row writes it)", g_menuX, g_menuY, (double)g_menuScale, g_menuVrX, g_menuVrY, + (double)g_menuVrScale, g_menuVrDepth, (double)g_menuVrDist / 100.0, g_menuVrFace ? "facing" : "flat", + KeyName(KA_SAVE)); + char fpsPlaced[256] = ""; // (v0.10.3 phase 28: was 200, + the VR lock state) if (g_fpsMoved) - snprintf(fpsPlaced, sizeof(fpsPlaced), " -- fps box now %s, flat x=%d%% y=%d%% size %.1f, VR x=%+d%% y=%+d%% size %.1f (%s or " + snprintf(fpsPlaced, sizeof(fpsPlaced), " -- fps box now %s, flat x=%d%% y=%d%% size %.1f, VR x=%+d y=%+d (%s) size %.1f (%s or " "the Save row writes it)", g_fpsShow ? "on" : "off", g_fpsX, g_fpsY, (double)g_fpsScale, g_fpsVrX, g_fpsVrY, - (double)g_fpsVrScale, KeyName(KA_SAVE)); + g_fpsVrLock ? "degrees, fixed in the cab" : "%, follows the head", (double)g_fpsVrScale, KeyName(KA_SAVE)); Log("tuning menu closed (%s, Present #%llu)%s%s", why, (unsigned long long)n, placed, fpsPlaced); g_menuMoved = false; g_fpsMoved = false; @@ -13373,12 +14629,15 @@ void MenuChange(int row, int dir, bool repeat, uint64_t n) { case MR_LODCUT: StepLodCutout(dir, n); break; case MR_AREA: StepArea(dir, n); break; // flat: refuses with its low beep case MR_DRAWIDS: ToggleDrawIds(n); break; - case MR_MIRROR: ToggleMirrors(n); break; + case MR_MIRROR: CycleMirrors(n, dir, vr); break; // v0.10.2: seven states (Alt+F6 stays on / off) case MR_PRETM: TogglePreTonemap(n); break; case MR_FWD: ToggleFwdDepth(n); break; case MR_UPSCALE: ToggleUpscale(n); break; case MR_DLAA: ToggleDlaa(n); break; case MR_OFXR: break; // information only (dlaa.ini ofxr_bridge, read at start) + case MR_PANELGRP: case MR_FPSGRP: // v0.10.3 phase 29c: Right opens the group, Left closes it (a fresh + MenuGrpOpen(row) = dir > 0; // press only: not a stepRow, so auto-repeat is ignored above) + break; case MR_POSX: if (vr) g_menuVrX = MenuClampI(g_menuVrX + dir, -50, 50); else g_menuX = MenuClampI(g_menuX + dir, 0, 90); g_menuExplicit = g_menuMoved = true; @@ -13390,21 +14649,32 @@ void MenuChange(int row, int dir, bool repeat, uint64_t n) { case MR_SIZE: { float& s = vr ? g_menuVrScale : g_menuScale; float v = std::floor((s + 0.1f * (float)dir) * 10.0f + 0.5f) / 10.0f; - s = v < 0.5f ? 0.5f : (v > 2.0f ? 2.0f : v); + s = v < 0.3f ? 0.3f : (v > 2.0f ? 2.0f : v); // v0.10.2: down to 0.3 (a small panel in VR) g_menuExplicit = g_menuMoved = true; break; } case MR_DEPTH: - g_menuVrDepth = MenuClampI(g_menuVrDepth + 2 * dir, 0, 200); + if (MenuVrQuad()) { // v0.10.3 phase 29b: the quad path -> its distance, 5 cm steps + g_menuVrDist = MenuClampI(g_menuVrDist + 5 * dir, 30, 300); + if (!repeat) + Log("tuning menu: VR panel quad distance %.2f m (menu_vr_dist=%d; the quad path: the same angular size, only the " + "stereo depth changes; Present #%llu)", (double)g_menuVrDist / 100.0, g_menuVrDist, (unsigned long long)n); + } else { + g_menuVrDepth = MenuClampI(g_menuVrDepth + 2 * dir, 0, 200); + } g_menuExplicit = g_menuMoved = true; break; case MR_FACE: // v0.10.0 phase 16: Left and Right both switch it (also flat: kept for VR) g_menuVrFace = g_menuVrFace ? 0 : 1; g_menuExplicit = g_menuMoved = true; - Log("tuning menu: VR panel %s (menu_vr_face=%d, Present #%llu)", g_menuVrFace ? "faces the eye (a 3-D quad turned towards it)" - : "flat (a plain picture)", g_menuVrFace, (unsigned long long)n); + Log("tuning menu: VR panel %s (menu_vr_face=%d, %s; Present #%llu)", g_menuVrFace ? "faces the eye (a 3-D quad turned towards it)" + : "flat (a plain picture)", g_menuVrFace, + MenuVrQuad() ? "the quad path: the panel quad and the head-following fps box quad turned by the compositor (phase 29b)" + : "the in-picture path: the panel drawn as a turned quad (phase 16); the fps box stays flat", + (unsigned long long)n); break; case MR_FPS: ToggleFpsBox(n); break; // Left and Right both switch it + case MR_FPSLOCK: ToggleFpsVrLock(n); break; // v0.10.3 phase 28: Left and Right both switch it (also flat: kept for VR) case MR_FPSX: if (vr) g_fpsVrX = MenuClampI(g_fpsVrX + dir, -50, 50); else g_fpsX = MenuClampI(g_fpsX + dir, 0, 95); g_fpsExplicit = g_fpsMoved = true; @@ -13421,6 +14691,7 @@ void MenuChange(int row, int dir, bool repeat, uint64_t n) { break; } case MR_SAVE: SaveSettings(n); break; + case MR_RESET: break; // v0.10.3 phase 29d: a HOLD of Right resets (MenuResetTick), no press case MR_CLOSE: MenuClose(n, "Close row"); break; default: break; } @@ -13428,25 +14699,57 @@ void MenuChange(int row, int dir, bool repeat, uint64_t n) { // Per Present, before the other user keys (PresentFrameWork). void MenuKeys(uint64_t n) { - if (KeyHit(KA_MENU)) { - if (!g_menuOpen.load()) { + const bool open = g_menuOpen.load(std::memory_order_relaxed); + // v0.10.2: on the Menu keys row the open key does not close the menu (the row binds it; Close menu closes from there) + if (KeyHit(KA_MENU) && !(open && g_menuSel == MR_MENUKEYS)) { + if (!open) { g_menuOpen = true; g_menuMoved = false; + // v0.10.3 phase 29c: both groups start collapsed at every open; a selection inside one moves to its header + g_menuGrpOpen[0] = g_menuGrpOpen[1] = false; + if (g_menuSel < 0 || g_menuSel >= MR_COUNT) g_menuSel = 0; + if (!MenuRowVisible(g_menuSel)) g_menuSel = MenuRowGroup(g_menuSel); MenuPerfOpen(); // GPU timers on while open (debug = 0) + fresh figures + MenuBindReset(); // v0.10.2 hold to bind: the held open key starts no hold (after the + // selection fix above: it records g_menuSel as the bind row) + g_mrh = MenuResetHold(); // v0.10.3 phase 29d: no Reset hold carried over PlayTones(2, 880, 60, 60); - Log("tuning menu opened (%s, Present #%llu) -- %s / %s select a row, %s / %s change it; the game does not see these " - "keys while the menu is open", KeyName(KA_MENU), (unsigned long long)n, KeyName(KA_MENU_UP), KeyName(KA_MENU_DOWN), - KeyName(KA_MENU_LEFT), KeyName(KA_MENU_RIGHT)); + Log("tuning menu opened (%s, Present #%llu) -- %s / %s select a row, %s / %s change it, hold a key or button %.1f s " + "on a row to bind it (bind_hold_ms); the game sees no key / button while the menu is open", KeyName(KA_MENU), + (unsigned long long)n, KeyName(KA_MENU_UP), KeyName(KA_MENU_DOWN), KeyName(KA_MENU_LEFT), + KeyName(KA_MENU_RIGHT), (double)g_bindHoldMs / 1000.0); } else { MenuClose(n, KeyName(KA_MENU)); } return; // the open / close press does nothing else this frame } - if (!g_menuOpen.load(std::memory_order_relaxed)) return; - if (KeyHit(KA_MENU_UP)) g_menuSel = (g_menuSel + MR_COUNT - 1) % MR_COUNT; - if (KeyHit(KA_MENU_DOWN)) g_menuSel = (g_menuSel + 1) % MR_COUNT; - if (KeyHit(KA_MENU_RIGHT)) MenuChange(g_menuSel, +1, g_keyRepeat[KA_MENU_RIGHT], n); - else if (KeyHit(KA_MENU_LEFT)) MenuChange(g_menuSel, -1, g_keyRepeat[KA_MENU_LEFT], n); + if (!open) return; + if (g_menuSel == MR_MENUKEYS) { + // v0.10.2 Menu keys row: the menu Up / Down act on RELEASE after a tap (< kMenuTapMs); held longer they are a bind hold. + // No auto-repeat here (a scroll arriving with the key held stops on this row); Left / Right do nothing on this row. + const ULONGLONG now = GetTickCount64(); + if (KeyHit(KA_MENU_UP) && !g_keyRepeat[KA_MENU_UP]) { g_mb.navDir = -1; g_mb.navAt = now; } + else if (KeyHit(KA_MENU_DOWN) && !g_keyRepeat[KA_MENU_DOWN]) { g_mb.navDir = +1; g_mb.navAt = now; } + else if (g_mb.navDir) { + const KeyAction na = g_mb.navDir < 0 ? KA_MENU_UP : KA_MENU_DOWN; + if (!g_keyWasActive[na]) { // released + if (now - g_mb.navAt < kMenuTapMs) g_menuSel = MenuStepRow(g_menuSel, g_mb.navDir); // 29c: visible rows + g_mb.navDir = 0; + } else if (now - g_mb.navAt >= kMenuTapMs) { + g_mb.navDir = 0; // held: a bind hold, not a step + } + } + } else { + g_mb.navDir = 0; + if (KeyHit(KA_MENU_UP)) g_menuSel = MenuStepRow(g_menuSel, -1); // v0.10.3 phase 29c: the next VISIBLE row + if (KeyHit(KA_MENU_DOWN)) g_menuSel = MenuStepRow(g_menuSel, +1); // (a collapsed group's rows are skipped, wraps) + if (g_menuSel != MR_MENUKEYS) { // (arriving on Menu keys: Left / Right do nothing there) + if (KeyHit(KA_MENU_RIGHT)) MenuChange(g_menuSel, +1, g_keyRepeat[KA_MENU_RIGHT], n); + else if (KeyHit(KA_MENU_LEFT)) MenuChange(g_menuSel, -1, g_keyRepeat[KA_MENU_LEFT], n); + } + } + if (g_menuOpen.load(std::memory_order_relaxed)) MenuResetTick(n); // v0.10.3 phase 29d: the Reset row's hold of Right + if (g_menuOpen.load(std::memory_order_relaxed)) MenuBindTick(n); // v0.10.2 hold to bind (the Close row may have closed it) if (g_menuOpen.load(std::memory_order_relaxed)) MenuPerfTick(); // (the Close row may have closed it just now) } @@ -13508,13 +14811,17 @@ void MenuDrawAtPresent(IDXGISwapChain* sc, ID3D11DeviceContext* bctx) { TuningMenu::Panel p; MenuBuildPanel(p); const float scale = H / 1080.0f * g_menuScale; - const float build = (MenuVr() && g_menuVrBuild > 0.0f) ? g_menuVrBuild : scale; // VR: the eyes' texture, scaled + // VR: the eyes' / quad's texture, scaled (v0.10.3 phase 29b: also while the panel IS a quad layer and MenuVr() is not + // set yet -- the VR main menu -- else the two build scales alternate and the texture is rebuilt twice per frame) + const bool vrTex = MenuVr() || (g_menuVrLayer && XrHook::OverlayActive(0)); + const float build = (vrTex && g_menuVrBuild > 0.0f) ? g_menuVrBuild : scale; TuningMenu::Draw(ctx, rtv.Get(), td.Width, td.Height, (float)g_menuX / 100.0f * W, (float)g_menuY / 100.0f * H, scale, build, outMode, p); } if (g_fpsShow) { const float scale = H / 1080.0f * g_fpsScale; - const float build = (MenuVr() && g_fpsVrBuild > 0.0f) ? g_fpsVrBuild : scale; // VR: the eyes' texture, scaled + const bool vrTex = MenuVr() || (g_menuVrLayer && XrHook::OverlayActive(1)); // (phase 29b: as the panel above) + const float build = (vrTex && g_fpsVrBuild > 0.0f) ? g_fpsVrBuild : scale; // VR: the eyes' / quad's texture, scaled // kept inside the picture (fps_x / fps_y up to 95 % with a large box would push it off the edge) const float bw = TuningMenu::kWidgetRefW * scale, bh = TuningMenu::kWidgetRefH * scale; float x0 = (float)g_fpsX / 100.0f * W, y0 = (float)g_fpsY / 100.0f * H; @@ -13522,6 +14829,7 @@ void MenuDrawAtPresent(IDXGISwapChain* sc, ID3D11DeviceContext* bctx) { if (y0 > H - bh) y0 = H - bh; if (x0 < 0.0f) x0 = 0.0f; if (y0 < 0.0f) y0 = 0.0f; + GpuPerfScope gp(ctx, GpuPerf::kOverlay); // v0.10.3 phase 29b: the fps box's own GPU cost (per frame) TuningMenu::DrawWidget(ctx, rtv.Get(), td.Width, td.Height, x0, y0, scale, build, outMode, g_fps.line1, g_fps.line2); } t_inDlaa = false; @@ -13601,14 +14909,222 @@ void MenuFacingLog(int eye, const MenuFacing& g, bool facing, float pw, float ph (double)u, (double)v, (double)shift); } +// ---- v0.10.3 phase 28: the VR fps box FIXED IN THE CAB (dlaa.ini fps_vr_lock = 1, the menu's FPS counter lock row) ---------- +// The anchor is a point in the game's OpenXR reference space (the seated / tracking space: it does not move with the head, and +// the game maps it to the cab): kFpsLockDist (0.8 m) from the space origin in the direction yaw = fps_vr_x degrees (+ right), +// pitch = -fps_vr_y degrees (fps_vr_y + = down, the head-locked sign kept). The origin of a LOCAL space (type 2) is the +// recentred seat head position and its -z is the seat's forward, used as they are; any other / unknown space type (STAGE: the +// origin is on the floor) uses a PIVOT captured from the first located views after the lock went on (the eyes' midpoint and +// the head's yaw), logged. Each eye picture: the view of that picture -- from the game's last xrEndFrame projection layer (the +// swapchain image -> view, with its sub-image rect: side-by-side / array layouts handled), else view index = eye (an +// intermediate eye texture: eye 0 = the right eye = view 1, cross-checked against the measured optical centre) over the full texture. +// The anchor goes into that view's space with the located pose (inverse rotation; OpenXR view space: +x right, +y up, -z +// forward), its view tangents (tx, ty) = (x, y) / depth land in the picture rect through the view's asymmetric fov: +// px = rx + rw (tx - tan L) / (tan R - tan L), py = ry + rh (tan U - ty) / (tan U - tan D) +// -- the same mapping the compositor uses to show the picture, so with the pose the game submits the picture with (phase 28b: +// XrHook::LatestViews hands out the located pose CORRECTED to the submitted one, in the layer space, with the submitted fov; +// see xr_hook.h) the box stays put in the reference space through the runtime's reprojection. Size: the head-locked box +// (fps_vr_scale = 8 % of the eye width per 1.0) at 0.8 m, times 0.8 / depth (a quad parallel to the eye's image plane: the +// same angle as the head-locked box when it is 0.8 m straight ahead, bigger when you lean in). The box stays upright in the +// picture (no roll with the head). No depth shift (menu_vr_depth): the per-eye projection gives the stereo depth itself. +// Result 1 = placed (*cx, *cy = the box centre px, *scale = the draw scale), 0 = no usable OpenXR views (the caller draws the +// head-locked box; logged once per reason), -1 = not on this eye (behind it / fully outside its picture: nothing drawn). +constexpr float kFpsLockDist = 0.8f; // m from the reference space origin (or the captured pivot) +constexpr double kFpsLockStale = 0.5; // s: older locate = no usable views (the game paused / no session) +struct FpsVrLockState { + bool pivotHave = false; // non-LOCAL spaces: the captured pivot + float pivot[3] = {}; + float yaw0 = 0.0f; // rad, the head's yaw at the capture + int why = -1; // last fallback reason logged (0 = placed) + int lines = 0; // fallback / eye log lines (capped) + bool eyeLogged[kMaxEyes] = {}; + ULONGLONG diagStart = 0, diagNext = 0; // phase 28b: the once-a-second eye-0 log for 10 s after the lock-on + int dirOk = 0, dirBad = 0; // phase 28b: the direction self-check (see FpsVrLockedPlace) +}; +FpsVrLockState g_fpsLock; +void FpsVrLockReset() { // the lock toggled / Reset: re-capture the pivot, log again + g_fpsLock = FpsVrLockState(); +} +// v' = conj(q) v q (the reference-space vector `v` in the view's axes) for a unit quaternion q = (x, y, z, w). +void QuatRotInv(const XrHook::View& q, const double v[3], double out[3]) { + const double qx = -q.qx, qy = -q.qy, qz = -q.qz, qw = q.qw; + const double t[3] = { 2.0 * (qy * v[2] - qz * v[1]), 2.0 * (qz * v[0] - qx * v[2]), 2.0 * (qx * v[1] - qy * v[0]) }; + out[0] = v[0] + qw * t[0] + (qy * t[2] - qz * t[1]); + out[1] = v[1] + qw * t[1] + (qz * t[0] - qx * t[2]); + out[2] = v[2] + qw * t[2] + (qx * t[1] - qy * t[0]); +} +int FpsVrLockedPlace(int eye, ID3D11Texture2D* tex, const D3D11_RENDER_TARGET_VIEW_DESC& rd, float W, float H, float scaleHead, + float* cx, float* cy, float* scale) { + FpsVrLockState& st = g_fpsLock; + XrHook::Views vs; + int why = 0; + if (!XrHook::Hooked()) why = 1; + else if (!XrHook::LatestViews(&vs)) why = 2; + else if (vs.ageSec > kFpsLockStale) why = 3; + else if ((vs.flags & 3) != 3) why = 4; // orientation + position not both valid + else if (vs.spaceType == 1) why = 5; // VIEW space: located relative to the head itself + if (why) { + if (why != st.why && st.lines < 24) { + ++st.lines; + static const char* const kWhy[6] = { "", "the OpenXR hook is not installed", "no stereo xrLocateViews + xrEndFrame " + "pose correction yet", + "the newest xrLocateViews is older than 0.5 s", "the located poses are not valid " + "(tracking lost)", "the views are located in a VIEW space (head-relative)" }; + Log("fps box VR lock: drawn FOLLOWING THE HEAD for now -- %s (eye %d; locate age %.0f ms, flags 0x%llx, space type %d)", + kWhy[why], eye, why >= 3 ? vs.ageSec * 1000.0 : 0.0, why >= 3 ? (unsigned long long)vs.flags : 0ull, + why >= 3 ? vs.spaceType : 0); + } + st.why = why; + return 0; + } + if (st.why != 0 && st.why != -1 && st.lines < 24) { + ++st.lines; + Log("fps box VR lock: OpenXR views usable again -- the box is fixed in the cab (locate #%llu, age %.1f ms)", + (unsigned long long)vs.seq, vs.ageSec * 1000.0); + } + st.why = 0; + // the view of this picture + its rect + const uint32_t slice = rd.ViewDimension == D3D11_RTV_DIMENSION_TEXTURE2DARRAY ? rd.Texture2DArray.FirstArraySlice : 0; + int32_t rect[4] = { 0, 0, (int32_t)W, (int32_t)H }; + int view = XrHook::ViewForImage(tex, slice, rect); + const bool mapped = view >= 0; + if (!mapped || rect[2] <= 0 || rect[3] <= 0 || rect[0] < 0 || rect[1] < 0 || (float)(rect[0] + rect[2]) > W || + (float)(rect[1] + rect[3]) > H) { + rect[0] = 0; rect[1] = 0; rect[2] = (int32_t)W; rect[3] = (int32_t)H; + } + auto tanOf = [](float a) { return (double)std::tan((double)a); }; + auto uOf = [&](int k) { // the view's optical axis in the rect, as uv of the whole texture + const XrHook::View& w = vs.v[k]; + const double tl = tanOf(w.angleLeft), tr = tanOf(w.angleRight); + return (rect[0] + rect[2] * (-tl) / (tr - tl)) / (double)W; + }; + auto vOf = [&](int k) { + const XrHook::View& w = vs.v[k]; + const double tu = tanOf(w.angleUp), tdn = tanOf(w.angleDown); + return (rect[1] + rect[3] * tu / (tu - tdn)) / (double)H; + }; + float mu = 0.5f, mv = 0.5f; + const bool measured = VrEyeCentre(eye, &mu, &mv); + bool swapped = false; + if (!mapped) { + view = (eye & 1) ^ 1; // eye 0 = the RIGHT eye (optical centre u < 0.5) = OpenXR view 1 + if (measured && std::fabs(uOf(view) - mu) > 0.05 && std::fabs(uOf(view ^ 1) - mu) < 0.03) { view ^= 1; swapped = true; } + } + const XrHook::View& w = vs.v[view]; + // the anchor in the reference space + const double kRad = 0.017453292519943295; + double pivot[3] = { 0.0, 0.0, 0.0 }, yaw0 = 0.0; + if (vs.spaceType != 2) { // not LOCAL: a pivot captured from the head (once per lock-on) + if (!st.pivotHave) { + st.pivot[0] = 0.5f * (vs.v[0].px + vs.v[1].px); + st.pivot[1] = 0.5f * (vs.v[0].py + vs.v[1].py); + st.pivot[2] = 0.5f * (vs.v[0].pz + vs.v[1].pz); + const double f0[3] = { 0.0, 0.0, -1.0 }; // the head's forward in the reference space = q f q* (q not inverted) + XrHook::View qf = vs.v[0]; + qf.qx = -qf.qx; qf.qy = -qf.qy; qf.qz = -qf.qz; + double fw[3]; + QuatRotInv(qf, f0, fw); + st.yaw0 = (float)std::atan2(fw[0], -fw[2]); + st.pivotHave = true; + Log("fps box VR lock: reference space type %d (%s) -- the anchor turns around a PIVOT captured now: the eyes' midpoint " + "(%.2f, %.2f, %.2f) m, head yaw %+.1f deg", vs.spaceType, vs.spaceType ? "not LOCAL" : "unknown: not created " + "through the hook", (double)st.pivot[0], (double)st.pivot[1], (double)st.pivot[2], (double)st.yaw0 / kRad); + } + pivot[0] = st.pivot[0]; pivot[1] = st.pivot[1]; pivot[2] = st.pivot[2]; + yaw0 = st.yaw0; + } + const double yaw = yaw0 + (double)g_fpsVrX * kRad, pitch = -(double)g_fpsVrY * kRad; + const double A[3] = { pivot[0] + kFpsLockDist * std::sin(yaw) * std::cos(pitch), pivot[1] + kFpsLockDist * std::sin(pitch), + pivot[2] - kFpsLockDist * std::cos(yaw) * std::cos(pitch) }; + // into the view's space, then through its fov into the picture rect + const double d[3] = { A[0] - w.px, A[1] - w.py, A[2] - w.pz }; + double p[3]; + QuatRotInv(w, d, p); + const double depth = -p[2]; + const double tl = tanOf(w.angleLeft), tr = tanOf(w.angleRight), tu = tanOf(w.angleUp), tdn = tanOf(w.angleDown); + if (!(tr - tl > 1e-3) || !(tu - tdn > 1e-3)) return 0; + const bool behind = !(depth > 0.05); + double px = 0.0, py = 0.0, k = 0.0, tx = 0.0, ty = 0.0; + if (!behind) { + tx = p[0] / depth; ty = p[1] / depth; + px = rect[0] + rect[2] * (tx - tl) / (tr - tl); + py = rect[1] + rect[3] * (tu - ty) / (tu - tdn); + k = (double)rect[2] / (double)W * (double)kFpsLockDist / depth; // the rect's own width (side-by-side: half the texture) + if (k > 6.0) k = 6.0; // (the head right at the box: keep it sane) + } + if (eye >= 0 && eye < kMaxEyes && !st.eyeLogged[eye] && st.lines < 24) { + st.eyeLogged[eye] = true; + ++st.lines; + Log("fps box VR lock: eye %d -> OpenXR view %d (%s%s), picture rect (%d,%d) %dx%d of %.0fx%.0f slice %u; view fov L%+.1f " + "R%+.1f U%+.1f D%+.1f deg -> optical centre uv=(%.3f, %.3f) vs measured %s(%.3f, %.3f); layer space type %d, located " + "in space type %d (%s), age %.1f ms; anchor yaw %+d pitch %+d deg at %.1f m -> depth %.2f m, centre (%.0f, %.0f) px, " + "draw scale x%.2f%s", + eye, view, mapped ? "the swapchain image of that view in the last xrEndFrame" : "assumed: eye index", + swapped ? ", SWAPPED: the other view's optical centre matches the measured one" : "", rect[0], rect[1], rect[2], + rect[3], (double)W, (double)H, slice, (double)w.angleLeft / kRad, (double)w.angleRight / kRad, + (double)w.angleUp / kRad, (double)w.angleDown / kRad, uOf(view), vOf(view), measured ? "" : "(not measured yet) ", + (double)mu, (double)mv, vs.spaceType, vs.locSpaceType, vs.corrected ? "corrected to the submitted pose" : "raw", + vs.ageSec * 1000.0, g_fpsVrX, + -g_fpsVrY, (double)kFpsLockDist, depth, px, py, k, behind ? " -- BEHIND the eye now: not drawn" : ""); + } + // phase 28b: the direction self-check + the once-a-second log for 10 s after the lock-on (eye 0 only). Head yaw / pitch = + // this view's forward (-z) in the layer space; the anchor's direction FROM THIS EYE; rel = anchor - head. A point to the + // RIGHT of where the eye looks (rel yaw > 0) must land right of the optical axis (tx > 0), above it (rel pitch > 0) at + // ty > 0 -- a sign mismatch = the pose / quaternion direction is wrong. + if (eye == 0 && !behind) { + const ULONGLONG nowMs = GetTickCount64(); + if (!st.diagStart) { st.diagStart = nowMs; st.diagNext = nowMs; XrHook::PoseDiagArm(10); } + const XrHook::View hq = { -w.qx, -w.qy, -w.qz, w.qw, 0, 0, 0, 0, 0, 0, 0 }; // QuatRotInv(conj q) = R(q) + const double f0[3] = { 0.0, 0.0, -1.0 }; + double fw[3]; + QuatRotInv(hq, f0, fw); + const double kDeg = 57.29577951308232; + const double hYaw = std::atan2(fw[0], -fw[2]) * kDeg, hPitch = std::asin(fw[1] < -1 ? -1 : (fw[1] > 1 ? 1 : fw[1])) * kDeg; + const double dn = std::sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); + const double aYaw = std::atan2(d[0], -d[2]) * kDeg, aPitch = dn > 1e-6 ? std::asin(d[1] / dn) * kDeg : 0.0; + double rYaw = aYaw - hYaw; + while (rYaw > 180.0) rYaw -= 360.0; + while (rYaw < -180.0) rYaw += 360.0; + const double rPitch = aPitch - hPitch; + const bool checkable = std::fabs(rYaw) > 3.0 && std::fabs(hPitch) < 45.0; + const bool ok = !checkable || ((rYaw > 0.0) == (tx > 0.0)); + if (checkable) (ok ? st.dirOk : st.dirBad)++; + if (nowMs - st.diagStart <= 10500 && nowMs >= st.diagNext) { + st.diagNext = nowMs + 1000; + Log("fps box VR lock diag (eye 0 = view %d): head yaw %+.1f pitch %+.1f pos (%+.3f %+.3f %+.3f) [located: yaw %+.1f, " + "space type %d] | anchor from this eye yaw %+.1f pitch %+.1f -> relative yaw %+.1f pitch %+.1f | view tangents " + "tx %+.3f ty %+.3f -> box (%.0f, %.0f) px, optical centre (%.0f, %.0f) px | direction check %s (so far %d ok / %d " + "WRONG)", view, hYaw, hPitch, (double)w.px, (double)w.py, (double)w.pz, + [&] { const XrHook::View& r = vs.raw[view]; const XrHook::View rq = { -r.qx, -r.qy, -r.qz, r.qw, 0, 0, 0, 0, 0, 0, 0 }; + double g[3]; QuatRotInv(rq, f0, g); return std::atan2(g[0], -g[2]) * kDeg; }(), vs.locSpaceType, + aYaw, aPitch, rYaw, rPitch, tx, ty, px, py, rect[0] + rect[2] * (-tl) / (tr - tl), rect[1] + rect[3] * tu / (tu - tdn), + checkable ? (ok ? "OK" : "WRONG: tx sign != relative yaw sign") : "n/a (|relative yaw| <= 3 deg)", st.dirOk, st.dirBad); + } + } + if (behind) return -1; + const float s = scaleHead * (float)k; + const float bw = TuningMenu::kWidgetRefW * s, bh = TuningMenu::kWidgetRefH * s; + if (px + 0.5 * bw < rect[0] || px - 0.5 * bw > rect[0] + rect[2] || py + 0.5 * bh < rect[1] || py - 0.5 * bh > rect[1] + rect[3]) + return -1; // fully outside this eye's picture + *cx = (float)px; + *cy = (float)py; + *scale = s; + return 1; +} + // VR: the panel while the menu is open, then the fps box while it is on, into `rtv` (an eye texture view); both centred on the // eye's optical centre + their own offsets, shifted inward by the same menu_vr_depth. v0.10.0 phase 15: split out of MenuDrawVr // for the menu / truck-preview eye pictures (MenuDrawPreview); the centre comes from VrEyeCentre (the world eye's, else the // preview picture's own -- the VR main menu has no world eye yet). Phase 16: the panel faces the eye (MenuFacingGeom) with // menu_vr_face = 1; the fps box stays flat. Called from the VR late panel (MenuLateArm / MenuLateOnRead). +// v0.10.3 phase 28: fps_vr_lock = 1 places the fps box fixed in the cab instead (FpsVrLockedPlace) -- every VR eye-picture +// path (the arm point, the late read, the OpenXR release MenuLateOnXrRelease, MenuDrawPreview) draws through here. +// v0.10.3 phase 29: a panel / fps box that went to the compositor as an OpenXR quad layer (menu_vr_layer = 1, XrHook:: +// OverlayActive) is NOT drawn into the eye picture -- each one separately (the other may still need the in-picture fallback). void MenuDrawVrOn(ID3D11DeviceContext* ctx, int eye, ID3D11RenderTargetView* rtv) { - const bool menuOpen = g_menuOpen.load(std::memory_order_relaxed); - if (eye < 0 || eye >= kMaxEyes || t_inDlaa || !rtv || !(menuOpen || g_fpsShow)) return; + const bool menuOpen = g_menuOpen.load(std::memory_order_relaxed) && !(g_menuVrLayer && XrHook::OverlayActive(0)); + const bool fpsShow = g_fpsShow && !(g_menuVrLayer && XrHook::OverlayActive(1)); + if (eye < 0 || eye >= kMaxEyes || t_inDlaa || !rtv || !(menuOpen || fpsShow)) return; Microsoft::WRL::ComPtr res; rtv->GetResource(res.GetAddressOf()); Microsoft::WRL::ComPtr t; @@ -13621,7 +15137,13 @@ void MenuDrawVrOn(ID3D11DeviceContext* ctx, int eye, ID3D11RenderTargetView* rtv const float W = (float)td.Width, H = (float)td.Height; float u = 0.5f, v = 0.5f; VrEyeCentre(eye, &u, &v); - const float shift = (float)g_menuVrDepth * (eye == 0 ? 1.0f : -1.0f); // inward: eye 0 right, eye 1 left + // inward = towards the nose: the left eye's panel moves right, the right eye's left (crossed disparity = nearer). v0.10.3: + // the side comes from the optical centre (it sits on the NASAL side of each eye picture: the left eye's u > 0.5), not from + // the eye index -- eye 0 is the RIGHT eye (logs: eye 0 u = 0.379, eye 1 u = 0.621), so the old "eye 0 right" shift pushed + // the panel BEYOND infinity (divergent: menu_vr_depth only split the two pictures apart, no depth). Unknown centre: eye 0 = + // the right eye. + const float inward = std::fabs(u - 0.5f) > 0.01f ? (u > 0.5f ? 1.0f : -1.0f) : (eye == 0 ? -1.0f : 1.0f); + const float shift = (float)g_menuVrDepth * inward; const int outMode = MenuOutMode(rd.Format, false); t_inDlaa = true; if (menuOpen) { @@ -13644,14 +15166,22 @@ void MenuDrawVrOn(ID3D11DeviceContext* ctx, int eye, ID3D11RenderTargetView* rtv if (!drawn) TuningMenu::Draw(ctx, rtv, td.Width, td.Height, cx0 + shift - 0.5f * pw, cy - 0.5f * ph, scale, g_menuVrBuild, outMode, p); } - if (g_fpsShow) { + if (fpsShow) { const float scale = W * 0.08f / TuningMenu::kWidgetRefW * g_fpsVrScale; // 1 = 8 % of the eye width if (eye == 0 || g_fpsVrBuild <= 0.0f) g_fpsVrBuild = scale; // one build scale for both eyes and the mirror - const float cx = u * W + (float)g_fpsVrX / 100.0f * W + shift; - const float cy = v * H + (float)g_fpsVrY / 100.0f * H; - const float bw = TuningMenu::kWidgetRefW * scale, bh = TuningMenu::kWidgetRefH * scale; - TuningMenu::DrawWidget(ctx, rtv, td.Width, td.Height, cx - 0.5f * bw, cy - 0.5f * bh, scale, g_fpsVrBuild, outMode, - g_fps.line1, g_fps.line2); + float cx = u * W + (float)g_fpsVrX / 100.0f * W + shift; + float cy = v * H + (float)g_fpsVrY / 100.0f * H; + float s = scale; + // v0.10.3 phase 28: fps_vr_lock = 1 -> the box fixed in the cab (FpsVrLockedPlace; 0 = no usable OpenXR views: the + // head-locked placement above, -1 = not on this eye). The build scale stays the head-locked one (the texture is not + // rebuilt as the distance changes; DrawWidget scales it). + const int locked = g_fpsVrLock ? FpsVrLockedPlace(eye, t.Get(), rd, W, H, scale, &cx, &cy, &s) : 0; + if (locked >= 0) { + const float bw = TuningMenu::kWidgetRefW * s, bh = TuningMenu::kWidgetRefH * s; + GpuPerfScope gp(ctx, GpuPerf::kOverlay); // v0.10.3 phase 29b: the fps box's own GPU cost (per frame: both eyes) + TuningMenu::DrawWidget(ctx, rtv, td.Width, td.Height, cx - 0.5f * bw, cy - 0.5f * bh, s, g_fpsVrBuild, outMode, + g_fps.line1, g_fps.line2); + } } t_inDlaa = false; } @@ -13763,6 +15293,12 @@ void MenuDrawPreview(ID3D11DeviceContext* ctx, int idx, char trigger) { // * One picture recorded for both eyes in the same Present (a mono screen / an eye-map flip): kept for the first eye only. // * Reads by another context (another thread / device; the log shows a Draw(4) on one reading a 3064x3248 picture) are // counted and logged, never used: nothing is drawn from another thread. +// v0.10.3 phase 27 (ATS VR log 2026-10-10 22:17, stereo scale 2.0, eye picture 6120x6496): the game never reads the eye +// picture on the D3D11 side -- it IS the OpenXR swapchain image, handed over at xrReleaseSwapchainImage -- and the only reads +// were eye_capture.dll's copies (accepted as "the eye read": the world category went late, missed 3 times, stuck at the arm +// point, where the garage / dealer UI is drawn over the panel = the flicker). Now: XrHook (xr_hook.h) wraps the release and +// the panel goes on right before it (mode 2, checked first: MenuLateOnXrRelease); reads by any module but the game exe are +// rejected (MenuLateOnRead). Without a release of the recorded picture the phase 16 / 20 behaviour stays as it was. enum { kLrNone = 0, kLrWait, kLrWatch }; // kLrWait = mode late: recorded, the panel goes on right before the game's (pattern's) read of the picture // kLrWatch = learning: the panel went on at the (pattern's) arm point, the record watches for a read @@ -13779,6 +15315,8 @@ struct MenuLateRec { uint32_t panelAt = 0; // `draws` when the panel was drawn (draws over the panel = draws - panelAt) uint64_t frame = 0; // Present counter at the arm (a re-arm of the same picture in it is no miss) uint32_t w = 0, h = 0; // the picture's size (the read's written rect is measured against it) + bool xrWait = false; // v0.10.3 phase 27: armed in mode "at the OpenXR release" (no arm-point draw) + bool xrDone = false; // ... its xrReleaseSwapchainImage came (the panel went on right before it) }; MenuLateRec g_menuLate[kMaxEyes]; static_assert(kMaxEyes <= 2, "g_menuLateTexA holds 2 eyes"); @@ -13788,13 +15326,22 @@ constexpr int kLateForgive = 3600; // ~25 s of VR frames without a // phase 20: the mode per arm-point category: 0 = world eye blit ('w'), 1 = menu / truck-preview / loading screens ('a', 'b') inline int MenuLateCat(char kind) { return kind == 'w' ? 0 : 1; } const char* const kLateCatName[2] = { "world", "menu / loading screens" }; +// v0.10.3 phase 27: mode 2 = right before the game's xrReleaseSwapchainImage of the picture (XrHook). Checked FIRST: the +// first release of a recorded picture (its swapchain image, from the xrEnumerateSwapchainImages map) switches the category to +// it at once (no learning run: the release IS the hand-over to the runtime, nothing the game draws can follow it); from the +// next arm on the arm point only records. A picture of that mode never released before its eye's next arm = an xr miss -> +// back to mode 0 (arm point, phase 16 / 20 learning intact); kLateMaxFallbacks of those and the category stays off the +// release (no OpenXR / an OpenVR session / a layer that releases elsewhere). struct MenuLateMode { - int mode = 0; // 0 = draw at the arm point (+ watch), 1 = late (right before the game's read) + int mode = 0; // 0 = arm point (+ watch), 1 = late (before the game's read), 2 = OpenXR release int run = 0; // mode 0: pictures in a row whose read was seen int fallbacks = 0; int good = 0; // mode late: pictures drawn late in a row (kLateForgive -> fallbacks forgiven) + int xrFallbacks = 0; // phase 27: mode 2 -> 0 fallbacks (xr misses) + int xrGood = 0; // phase 27: pictures drawn at the release in a row (kLateForgive -> forgiven) }; MenuLateMode g_menuLateM[2]; +std::atomic g_menuLateTid{0}; // phase 27: the thread of the last arm (the game render thread; XrHook checks it) // phase 20: events per eye per Present interval (distinct pictures armed / accepted reads) -> which one gets the panel constexpr uint64_t kLateNoFr = ~0ull; struct MenuLatePat { @@ -13832,8 +15379,13 @@ struct MenuLateStats { uint64_t dupSkips = 0; // phase 20: arm / read skipped: the eye had its panel this Present already uint64_t noPanel = 0; // phase 20: eye-Presents with a picture armed but no panel drawn uint64_t shared = 0; // phase 20: arms of a picture the other eye recorded in the same Present + uint64_t foreignMod = 0; // phase 27: reads by another module (eye_capture.dll ...): never the eye read + uint64_t xrDraws = 0; // phase 27: panel drawn right before xrReleaseSwapchainImage + uint64_t xrMisses = 0; // phase 27: mode-2 pictures never released before their eye's next arm + uint64_t xrUnmatched = 0; // phase 27: game-thread releases while a picture was recorded: image not recorded }; MenuLateStats g_menuLateSt; +std::atomic g_menuLateXrOther{0}; // phase 27: releases on another thread than the arms' (never drawn from) uint64_t g_menuLateStArms0 = 0; // arms at the last stats line std::atomic g_menuLateForeignReads{0}; // phase 20: reads of a recorded picture by another context (counted only) // phase 20: every distinct read target (destination resource + verdict), logged once; the stats line names the accepted one @@ -13866,6 +15418,7 @@ void MenuLateUpdateN() { } const char* MenuLateModeName(int cat) { const MenuLateMode& m = g_menuLateM[cat]; + if (m.mode == 2) return "at the OpenXR release (right before xrReleaseSwapchainImage)"; // phase 27 return m.mode ? "late (right before the game reads the picture)" : (m.fallbacks >= kLateMaxFallbacks ? "at the arm point (stays: no reliable read)" : "at the arm point (learning)"); } @@ -13896,6 +15449,45 @@ void MenuLateStatsLog(const char* why) { (unsigned long long)s.stale, (unsigned long long)s.superseded, (unsigned long long)s.shared, g_menuLateM[0].fallbacks, g_menuLateM[1].fallbacks, kLateMaxFallbacks, (unsigned long long)s.over, (unsigned long long)s.overPics); + // v0.10.3 phase 27: the OpenXR release path + the reads by other modules + Log("tuning menu: VR late panel stats (%s), OpenXR release: hook %s, %d component(s) wrapped, %llu release(s) seen (%llu " + "with a mapped D3D11 image, %llu on another thread than the panel's, never drawn from) | panel drawn at the release " + "%llu, release misses %llu, releases of an image not recorded %llu, xr fallbacks world %d / menu %d of %d | reads by " + "another module (capture / overlay tools: never the eye read) %llu", why, + XrHook::Hooked() ? "installed" : "NOT installed", XrHook::Components(), (unsigned long long)XrHook::Releases(), + (unsigned long long)XrHook::ReleasesMapped(), (unsigned long long)g_menuLateXrOther.load(std::memory_order_relaxed), + (unsigned long long)s.xrDraws, (unsigned long long)s.xrMisses, (unsigned long long)s.xrUnmatched, + g_menuLateM[0].xrFallbacks, g_menuLateM[1].xrFallbacks, kLateMaxFallbacks, (unsigned long long)s.foreignMod); + { // v0.10.3 phase 29: the OpenXR quad layers + const XrHook::OverlayStats os = XrHook::GetOverlayStats(); + static const char* const kFixed[4] = { "not used yet", "the game's layer space (LOCAL: origin = the seat)", + "the game's layer space around a pivot captured at lock-on", + "head-locked (the layer space is a VIEW space)" }; + Log("tuning menu: VR overlay quads (%s): menu_vr_layer=%d, %s, drawn %s, swapchain format %lld | %llu xrEndFrame(s) with our " + "quads (panel %llu, fps box %llu; now panel %s / fps box %s) | failures: create %llu, acquire %llu, wait %llu, release " + "%llu, draw %llu, runtime rejects %llu | fps box fixed in the cab: %s (space type %d)", why, g_menuVrLayer, + os.ready ? "swapchains up" : "no swapchains (yet)", os.mode == 1 ? "at xrEndFrame" : os.mode == 2 ? + "at the game's xrReleaseSwapchainImage (xrEndFrame on another thread)" : "nowhere yet", (long long)os.format, + (unsigned long long)os.frames, (unsigned long long)os.panelQuads, (unsigned long long)os.fpsQuads, + XrHook::OverlayActive(0) ? "quad" : "in-picture", XrHook::OverlayActive(1) ? "quad" : "in-picture", + (unsigned long long)os.createFails, (unsigned long long)os.acquireFails, (unsigned long long)os.waitFails, + (unsigned long long)os.releaseFails, (unsigned long long)os.drawFails, (unsigned long long)os.rejects, + kFixed[os.fixedHow >= 0 && os.fixedHow < 4 ? os.fixedHow : 0], os.fixedSpaceType); + } + if (g_fpsVrLock) { // v0.10.3 phase 28: the fps box fixed in the cab -- pose timing + const XrHook::PoseStats ps = XrHook::GetPoseStats(); + char sp[200] = ""; // phase 28b: the spaces the game locates its views in + int o = 0; + for (int k = 0; k < ps.nSpaces && o < (int)sizeof(sp) - 48; ++k) + o += snprintf(sp + o, sizeof(sp) - (size_t)o, "%s%p type %d: %llu", k ? ", " : "", ps.spaces[k].space, ps.spaces[k].type, + (unsigned long long)ps.spaces[k].count); + Log("tuning menu: VR fps box fixed in the cab (%s): %llu stereo xrLocateViews (by space: %s), %llu xrEndFrame projection " + "layers (layer space type %d), submitted pose = a located one %llu / none %llu | correction S (x) L^-1: residual of the " + "previous frame's on this frame mean %.2f deg / %.1f mm, max %.2f deg over %llu frames (= how far the box is off in the " + "compositor)", why, (unsigned long long)ps.locates, sp[0] ? sp : "none", (unsigned long long)ps.endFrames, + ps.layerSpaceType, (unsigned long long)ps.matched, (unsigned long long)ps.unmatched, ps.resMeanDeg, ps.resMeanMm, + ps.resMaxDeg, (unsigned long long)ps.resFrames); + } } // The panel + fps box into eye `eye`'s picture now; the eye is stamped for this Present (phase 20: once per eye per Present). void MenuLateDrawEye(ID3D11DeviceContext* ctx, int eye, ID3D11RenderTargetView* rtv, uint64_t fr) { @@ -13920,7 +15512,8 @@ void MenuLateRetire(int eye, bool reset) { r.late ? "late" : "at the arm point", r.kind); } const uint64_t fr = g_frames.load(std::memory_order_relaxed); - if (!reset && !r.readSeen) { + const bool done = r.xrWait ? r.xrDone : r.readSeen; // phase 27: a mode-2 picture is done at its OpenXR release + if (!reset && !done) { if (fr == r.frame) { // phase 20: another picture of this eye in the same Present ++s.superseded; // (an intermediate picture: the loading screen writes several) static int logs = 0; @@ -13935,6 +15528,22 @@ void MenuLateRetire(int eye, bool reset) { if (logs++ < 3) Log("tuning menu: VR late panel: eye %d's picture recorded at Present #%llu was never read (now #%llu: a screen " "change or pause) -- not counted as a miss", eye, (unsigned long long)r.frame, (unsigned long long)fr); + } else if (r.state == kLrWait && r.xrWait) { // phase 27: mode 2 and no xrReleaseSwapchainImage of the picture + ++s.xrMisses; + m.xrGood = 0; + static int logs = 0; + if (logs++ < 6) + Log("tuning menu: VR late panel MISSED eye %d's picture at the OpenXR release: no xrReleaseSwapchainImage of it " + "before its next arm (arm point %c, %s, %u game draw(s) into it since the arm, Present #%llu)", eye, r.kind, + kLateCatName[MenuLateCat(r.kind)], r.draws, (unsigned long long)fr); + if (m.mode == 2) { + m.mode = 0; + m.run = 0; + ++m.xrFallbacks; + Log("tuning menu: VR panel / fps box on the %s back to the arm point from the OpenXR release (xr fallback %d of " + "%d%s)", kLateCatName[MenuLateCat(r.kind)], m.xrFallbacks, kLateMaxFallbacks, + m.xrFallbacks >= kLateMaxFallbacks ? ": this category stays off the release" : ", the next release switches back"); + } } else if (r.state == kLrWait) { // mode late and the picture was never read: the panel missed it ++s.misses; m.good = 0; @@ -13977,7 +15586,8 @@ void MenuLateAtPresent(uint64_t n) { MenuLateModeName(cat)); } } - if (g_menuLate[e].state != kLrNone && g_menuLate[e].readSeen) MenuLateRetire(e, false); + const MenuLateRec& r = g_menuLate[e]; // phase 27: a mode-2 picture ends at its release, not at a read + if (r.state != kLrNone && (r.xrWait ? r.xrDone : (r.readSeen || r.xrDone))) MenuLateRetire(e, false); } MenuLateUpdateN(); } @@ -14032,9 +15642,11 @@ void MenuLateArm(ID3D11DeviceContext* ctx, int eye, ID3D11RenderTargetView* rtv, (unsigned long long)fr, o, o); return; } + g_menuLateTid.store(GetCurrentThreadId(), std::memory_order_relaxed); // phase 27: XrHook draws on this thread only // the same picture armed again in the same Present (a second flush / blit into it, also after a read): keep the record (no - // miss, no second panel); the panel still goes on at the read (late) or is there already (learning) - if (r.state != kLrNone && r.tex == (void*)res.Get() && r.frame == fr) { + // miss, no second panel); the panel still goes on at the read (late) or is there already (learning). Phase 27: not after + // its OpenXR release -- the image came back for a NEW frame (several game frames per mirror Present): a new record. + if (r.state != kLrNone && r.tex == (void*)res.Get() && r.frame == fr && !r.xrDone) { r.rtv = rtv; r.kind = kind; return; @@ -14055,8 +15667,9 @@ void MenuLateArm(ID3D11DeviceContext* ctx, int eye, ID3D11RenderTargetView* rtv, ey.kind = kind; const int idx = ey.arm.Tick(fr); // phase 20: this eye's idx-th distinct picture in this Present const MenuLateMode& m = g_menuLateM[MenuLateCat(kind)]; - if (m.mode == 1) { - r.state = kLrWait; + if (m.mode == 1 || m.mode == 2) { + r.state = kLrWait; // late: at the game's read; phase 27 mode 2: at the OpenXR release + r.xrWait = m.mode == 2; } else { r.state = kLrWatch; const int tgt = ey.arm.Target(); @@ -14096,7 +15709,8 @@ void MenuLateArm(ID3D11DeviceContext* ctx, int eye, ID3D11RenderTargetView* rtv, Log("tuning menu: VR late panel: first eye picture recorded (eye %d, arm point %c = %s, %ux%u, Present #%llu) -- drawn %s; " "the game's read of the picture (a Draw / copy into the OpenXR swapchain / stream image) is watched for", eye, kind, kind == 'w' ? "after the world eye blit" : "menu / truck-preview target flushed", r.w, r.h, (unsigned long long)fr, - m.mode ? "right before that read" : "at the arm point until that read is confirmed"); + m.mode == 2 ? "right before its xrReleaseSwapchainImage" : m.mode ? "right before that read" + : "at the arm point until that read / the OpenXR release is confirmed"); } } // phase 20: the rectangle a read writes into its destination `dd` (copy: the source box / subresource at DstX / DstY, clipped; @@ -14175,7 +15789,18 @@ void MenuLateOnRead(ID3D11DeviceContext* ctx, ID3D11Resource* src, ID3D11Resourc const double asOff = (asP > 0.0 && asR > 0.0) ? (std::max)(asR / asP, asP / asR) : 1e9; const bool bigEnough = areaP > 0.0 && areaR >= 0.5 * areaP; const bool shapeOk = asOff <= 1.4; - const bool accept = isTex && !toBb && bigEnough && shapeOk; + // v0.10.3 phase 27: the read must come from the GAME exe -- a capture / overlay tool on the game context (the 22:22 ATS log: + // eye_capture.dll+0x1f203 CopySubresourceRegion of each eye picture into a 12240x6496 target) flipped the world category + // into "late", then missed 3 times = stuck at the arm point. Cached per caller address (reads are rare: recorded source only). + static void* s_modCaller = nullptr; + static bool s_modGame = true; + if (caller != s_modCaller) { + char mb[MAX_PATH] = ""; + s_modGame = ModuleBaseOf(caller, mb, sizeof(mb)) && _stricmp(mb, GameExeBase()) == 0; + s_modCaller = caller; + } + const bool fromGame = s_modGame; + const bool accept = isTex && !toBb && bigEnough && shapeOk && fromGame; const uint64_t fr = g_frames.load(std::memory_order_relaxed); // every distinct target (destination + verdict) once in the log, then counted int ti = -1; @@ -14198,6 +15823,7 @@ void MenuLateOnRead(ID3D11DeviceContext* ctx, ID3D11Resource* src, ID3D11Resourc DescribeAddr(caller, where, sizeof(where)); strncpy_s(t.caller, where, _TRUNCATE); const char* verdict = accept ? "ACCEPTED as the eye read (the late panel's draw point)" + : !fromGame ? "rejected: the caller is not the game exe (a capture / overlay tool)" : !isTex ? "rejected: no 2D texture target" : toBb ? "rejected: the mirror window / backbuffer (it can come after the OpenXR release)" : !bigEnough ? "rejected: written rect under 50 % of the picture (an effect / mirror texture)" @@ -14214,6 +15840,7 @@ void MenuLateOnRead(ID3D11DeviceContext* ctx, ID3D11Resource* src, ID3D11Resourc } if (ti >= 0) ++g_menuLateTgt[ti].n; else ++g_menuLateTgtMore; + if (!fromGame) { ++s.foreignMod; return; } // phase 27: never the eye read if (toBb) { ++s.mirrorReads; return; } if (!accept) { ++s.otherReads; return; } ++s.reads; @@ -14224,6 +15851,7 @@ void MenuLateOnRead(ID3D11DeviceContext* ctx, ID3D11Resource* src, ID3D11Resourc MenuLateEye& ey = g_menuLateEye[eye]; const int idx = ey.read.Tick(fr); // phase 20: this eye's idx-th accepted read in this Present MenuLateMode& m = g_menuLateM[MenuLateCat(r.kind)]; + if (r.xrWait) return; // phase 27: mode 2 draws at the OpenXR release only (reads: counted) if (r.state == kLrWait) { const int tgt = ey.read.Target(); if (idx < tgt) { ++s.notLast; return; } // more reads of this eye follow in this frame (pattern) @@ -14296,6 +15924,172 @@ void MenuLateOnDraw(ID3D11DeviceContext* ctx, const char* what, UINT n, void* ca if (dres) dres->Release(); hit->Release(); } +// v0.10.3 phase 27: XrHook callback -- the game is about to call xrReleaseSwapchainImage for the swapchain image `tex` (the +// D3D11 texture from its xrEnumerateSwapchainImages map; null = not mapped). The eye picture IS that image here (ATS VR at +// stereo scale 2.0: the 6120x6496 picture, 0 D3D11 reads of it in ~22000 Presents), so this is the last moment the panel can +// go in: everything the game draws into the picture (its garage / dealer menu UI too) is in, and the runtime takes it right +// after. Only on the thread of the arms (the game render thread, owner of the immediate context; any other thread: counted, +// nothing drawn). A recorded picture whose image is released gets the panel now (MenuLateDrawEye: TuningMenu::Draw saves / +// restores the context state it touches) and its category switches to mode 2 (MenuLateMode): the arm point only records +// from then on, so the panel is drawn ONCE per picture (the arm-point draw + the game's partial cover = the flicker). +void MenuLateOnXrRelease(void* swapchain, void* tex) { + if (t_inDlaa) return; + const unsigned long armTid = g_menuLateTid.load(std::memory_order_relaxed); + if (!armTid) return; // nothing armed yet (menu closed, fps box off since the start) + if (GetCurrentThreadId() != armTid) { + g_menuLateXrOther.fetch_add(1, std::memory_order_relaxed); + return; + } + if (!g_menuLateN) return; // no picture recorded (menu closed and fps box off) + MenuLateStats& s = g_menuLateSt; + ID3D11DeviceContext* const ctx = g_gameCtx.load(std::memory_order_acquire); + if (!ctx || !tex) { ++s.xrUnmatched; return; } + const uint64_t fr = g_frames.load(std::memory_order_relaxed); + bool hit = false; + for (int e = 0; e < kMaxEyes; ++e) { + MenuLateRec& r = g_menuLate[e]; + if (r.state == kLrNone || r.tex != tex || r.xrDone || !r.rtv) continue; + hit = true; + const int cat = MenuLateCat(r.kind); + MenuLateMode& m = g_menuLateM[cat]; + if (m.mode != 2) { + if (m.xrFallbacks >= kLateMaxFallbacks) continue; // this category stays off the release (see MenuLateRetire) + const char* const was = MenuLateModeName(cat); + Log("tuning menu: VR panel / fps box on the %s now drawn at the OpenXR release -- right before the game's " + "xrReleaseSwapchainImage of the eye picture (swapchain %p, image %p; was: %s; %llu game draw(s) went over the " + "panel at the arm point so far in %llu picture(s)), Present #%llu", kLateCatName[cat], swapchain, tex, was, + (unsigned long long)s.over, (unsigned long long)s.overPics, (unsigned long long)fr); + m.mode = 2; + m.run = 0; + } + r.xrDone = true; + MenuLateDrawEye(ctx, e, r.rtv.Get(), fr); + r.drawn = true; + r.panelAt = r.draws; + ++s.xrDraws; + if (++m.xrGood >= kLateForgive && m.xrFallbacks > 0) { + m.xrFallbacks = 0; + Log("tuning menu: VR late panel: %d pictures in a row drawn at the OpenXR release on the %s since the last miss -- " + "earlier xr fallbacks forgiven", m.xrGood, kLateCatName[cat]); + } + static bool s_logged = false; + if (!s_logged) { + s_logged = true; + Log("tuning menu: VR panel drawn at xrReleaseSwapchainImage (eye %d, image %ux%u, arm point %c, swapchain %p, tid=%lu, " + "Present #%llu)", e, r.w, r.h, r.kind, swapchain, GetCurrentThreadId(), (unsigned long long)fr); + } + } + if (!hit) ++s.xrUnmatched; +} +// ---- v0.10.3 phase 29: the VR panel / fps box as OpenXR QUAD layers (dlaa.ini menu_vr_layer = 1; XrHook::OverlaySet) --------- +// XrHook owns the OpenXR side (our two swapchains, the VIEW space, the quad poses, the layers appended at xrEndFrame); this side +// hands it the placement every Present and draws the swapchain images through MenuOverlayDraw. The image px per reference px: +// the panel 1.6 x menu_vr_scale (1216 px wide at 1.0 = ~1.4 x the headset's own pixels over the panel's ~62 deg), the fps box +// 4.0 x fps_vr_scale (368 x 176 at 1.0; twice the panel's density: its text is small), capped by the swapchain size (the panel +// 2.4 = full density up to menu_vr_scale 1.5, the fps box 8.0 = up to fps_vr_scale 2.0; above that the compositor scales up). +// The quad shows only the drawn top-left part of the image (its sub-image), so the image size never changes with the scale. +constexpr float kOvPanelDensity = 1.6f, kOvPanelMax = 2.4f; +constexpr float kOvFpsDensity = 4.0f, kOvFpsMax = 8.0f; +void MenuOverlaySet() { + if (g_launchVr != 1) return; // (XrHook is installed for VR launches only) + XrHook::OverlayParams p; + p.enabled = g_menuVrLayer != 0; + p.menuOpen = g_menuOpen.load(std::memory_order_relaxed); + p.fpsShow = g_fpsShow; + p.fpsLock = g_fpsVrLock; + p.menuX = g_menuVrX; p.menuY = g_menuVrY; p.menuScale = g_menuVrScale; + p.menuDist = (float)g_menuVrDist / 100.0f; // v0.10.3 phase 29b (cm -> m) + p.menuFace = g_menuVrFace != 0; // v0.10.3 phase 29b: the panel / head-following fps box quads + p.fpsX = g_fpsVrX; p.fpsY = g_fpsVrY; p.fpsScale = g_fpsVrScale; + // the render thread: the late panel's arm thread (the game's draws on its immediate context), else this Present's thread + // (the per-frame work runs on the game render thread, also in present-layer mode) + const unsigned long armTid = g_menuLateTid.load(std::memory_order_relaxed); + p.drawTid = armTid ? armTid : GetCurrentThreadId(); + p.panelW = (uint32_t)std::lround(TuningMenu::kRefWidth * kOvPanelMax); + p.panelH = (uint32_t)std::ceil(TuningMenu::RefHeight(TuningMenu::kMaxRows) * kOvPanelMax); + p.fpsW = (uint32_t)std::lround(TuningMenu::kWidgetRefW * kOvFpsMax); + p.fpsH = (uint32_t)std::lround(TuningMenu::kWidgetRefH * kOvFpsMax); + XrHook::OverlaySet(p); +} +// XrHook's draw callback (on the render thread, inside xrEndFrame or the game's xrReleaseSwapchainImage): clear the swapchain +// image to (0, 0, 0, 0), then the panel (MenuBuildPanel + TuningMenu::Draw) or the fps box (DrawWidget) into its top-left +// corner, 1:1 texels (draw scale = build scale; g_menuVrBuild / g_fpsVrBuild = it, so the desktop mirror reuses the texture), +// TuningMenu::kOutOverlay (blend off, RGBA: the compositor blends with that alpha). Colour: kOutLinear for every format -- an +// _SRGB view encodes, and OpenXR reads a non-sRGB 8-bit swapchain image as LINEAR (XrHook picks an _SRGB format first). +bool MenuOverlayDraw(XrHook::OverlayDraw* d) { + if (!d || !d->tex || t_inDlaa || !d->w || !d->h) return false; + const unsigned long armTid = g_menuLateTid.load(std::memory_order_relaxed); + if (armTid && GetCurrentThreadId() != armTid) return false; // the immediate context: the render thread only + ID3D11DeviceContext* const ctx = g_gameCtx.load(std::memory_order_acquire); + if (!ctx) return false; + ID3D11Texture2D* const tex = static_cast(d->tex); + Microsoft::WRL::ComPtr dev, tdev; + ctx->GetDevice(dev.GetAddressOf()); + tex->GetDevice(tdev.GetAddressOf()); + if (!dev || dev.Get() != tdev.Get()) { + static int logs = 0; + if (logs++ < 3) Log("tuning menu: VR overlay image %p is not on the game context's device -- not drawn", d->tex); + return false; + } + D3D11_TEXTURE2D_DESC td{}; + tex->GetDesc(&td); + D3D11_RENDER_TARGET_VIEW_DESC rd{}; + rd.Format = (DXGI_FORMAT)d->format; // (the runtime's texture may be typeless) + if (td.ArraySize > 1) { + rd.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY; + rd.Texture2DArray.MipSlice = 0; rd.Texture2DArray.FirstArraySlice = 0; rd.Texture2DArray.ArraySize = 1; + } else { + rd.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; + rd.Texture2D.MipSlice = 0; + } + Microsoft::WRL::ComPtr rtv; // a view for this draw only (no reference on the image is kept) + HRESULT hr = dev->CreateRenderTargetView(tex, &rd, rtv.GetAddressOf()); + if (FAILED(hr) || !rtv) hr = dev->CreateRenderTargetView(tex, nullptr, rtv.GetAddressOf()); // a typed texture: its own format + if (FAILED(hr) || !rtv) { + static int logs = 0; + if (logs++ < 3) + Log("tuning menu: VR overlay image RTV create failed hr=0x%lx (%ux%u texture fmt=%d, swapchain fmt=%lld)", (unsigned long)hr, + td.Width, td.Height, (int)td.Format, (long long)d->format); + return false; + } + const int outMode = TuningMenu::kOutLinear | TuningMenu::kOutOverlay; + const FLOAT clear[4] = { 0.0f, 0.0f, 0.0f, 0.0f }; + bool ok = false; + float s = 0.0f; + t_inDlaa = true; + // v0.10.3 phase 29b: the fps box's own GPU cost (GpuPerf::kOverlay, per frame: its image's clear + draw, once per frame here) + const int gpTok = d->which ? GpuPerf::Begin(ctx, GpuPerf::kOverlay) : -1; + ctx->ClearRenderTargetView(rtv.Get(), clear); + if (d->which == 0) { + TuningMenu::Panel p; + MenuBuildPanel(p); + const float refH = TuningMenu::RefHeight(p.nRows); + s = (std::min)(kOvPanelDensity * g_menuVrScale, (std::min)((float)d->w / TuningMenu::kRefWidth, (float)d->h / refH)); + g_menuVrBuild = s; // one build scale for the quad and the desktop mirror + ok = TuningMenu::Draw(ctx, rtv.Get(), d->w, d->h, 0.0f, 0.0f, s, s, outMode, p); + d->usedW = (uint32_t)std::lround(TuningMenu::kRefWidth * s); + d->usedH = (uint32_t)std::lround(refH * s); + } else { + s = (std::min)(kOvFpsDensity * g_fpsVrScale, (std::min)((float)d->w / TuningMenu::kWidgetRefW, + (float)d->h / TuningMenu::kWidgetRefH)); + g_fpsVrBuild = s; + ok = TuningMenu::DrawWidget(ctx, rtv.Get(), d->w, d->h, 0.0f, 0.0f, s, s, outMode, g_fps.line1, g_fps.line2); + d->usedW = (uint32_t)std::lround(TuningMenu::kWidgetRefW * s); + d->usedH = (uint32_t)std::lround(TuningMenu::kWidgetRefH * s); + } + GpuPerf::End(ctx, gpTok); // (-1 = not timed: a no-op) + t_inDlaa = false; + static bool s_logged[2] = {}; + const int k = d->which ? 1 : 0; + if (ok && !s_logged[k]) { + s_logged[k] = true; + Log("tuning menu: VR %s drawn into its OpenXR quad image %p (%ux%u, texture fmt=%d, view fmt=%lld, array %u) at %.2f px per " + "reference px -> %ux%u px used (tid=%lu, Present #%llu)", k ? "fps box" : "panel", d->tex, d->w, d->h, (int)td.Format, + (long long)d->format, td.ArraySize, (double)s, d->usedW, d->usedH, GetCurrentThreadId(), + (unsigned long long)g_frames.load(std::memory_order_relaxed)); + } + return ok; +} // phase 20: a small Draw / DrawIndexed on ANOTHER context (another thread) reading a recorded picture: counted + logged only // (who reads the eye picture besides the game context -- the runtime's compositor?). Reads only the atomics; draws nothing. void MenuLateOnForeignDraw(ID3D11DeviceContext* ctx, const char* what, UINT n, void* caller) { @@ -14360,12 +16154,17 @@ void MirStatsLog(uint64_t blit) { std::string s; char b[1024]; const double pres = g_mirWinPresents ? (double)g_mirWinPresents : 1.0; + int preIdle = 0; // v0.10.2: units built at boot that no view has taken yet + for (const MirUnit& m : g_mir) if (!m.used && m.preW) ++preIdle; snprintf(b, sizeof(b), "mirror units @blit %llu: %s | views/frame %.2f (frames with mirror views %llu of %llu), handled " - "%llu, not handled %llu in total (this window over mirror_max_views=%d: %llu) |", (unsigned long long)blit, + "%llu, not handled %llu in total (this window over mirror_max_views=%d: %llu; unit builds deferred to a later " + "frame %llu, %llu in total -- one build per frame) | pre-built units not taken yet %d |", (unsigned long long)blit, MirPathLive() ? "ACTIVE" : (g_mirOn.load() ? "inactive (DLAA off / passive / warm-up)" : "OFF (mirror key / mirror_dlaa)"), (double)g_mirWinViews / pres, (unsigned long long)g_mirWinFrames, (unsigned long long)g_mirWinPresents, (unsigned long long)g_mirHandled, (unsigned long long)g_mirNotHandled, g_mirMaxViews, - (unsigned long long)g_mirWinCap); + (unsigned long long)g_mirWinCap, (unsigned long long)g_mirWinBuildDefer, (unsigned long long)g_mirBuildDefer, + preIdle); + g_mirWinBuildDefer = 0; s += b; int units = 0; double gpuFrame = 0.0; @@ -14422,9 +16221,11 @@ void MirStatsLog(uint64_t blit) { units, g_mirMaxViews, gpuFrame); s += b; { // v0.10.0 phase 8 (phase 10: flat too) - snprintf(b, sizeof(b), " | %s %d (mirror_vr_views %d%s): views left to the game as not among the largest %llu, " - "off-frame views held %llu / raw %llu", g_vrMode ? "mirror_vr_mode" : "mirror_flat_mode", MirMode(), g_mirVrViews, - MirMode() == 4 ? ", per-draw ids off in the mirrors" : "", (unsigned long long)g_mirVrSkip, (unsigned long long)g_mirAltHeld, + // v0.10.2: + mirror_mv (parts / camera / camera (mode 4)); ids off with mirror_mv camera in modes 1 / 2 / 3 too + snprintf(b, sizeof(b), " | %s %d (mirror_vr_views %d, mirror_mv %s%s): views left to the game as not among the largest " + "%llu, off-frame views held %llu / raw %llu", g_vrMode ? "mirror_vr_mode" : "mirror_flat_mode", MirMode(), + g_mirVrViews, MirMvName(), MirIdsOff() ? ", per-draw ids off in the mirrors" : "", + (unsigned long long)g_mirVrSkip, (unsigned long long)g_mirAltHeld, (unsigned long long)g_mirAltRaw); s += b; } @@ -15409,6 +17210,7 @@ bool FindNvngxDlss(wchar_t* out, DWORD cap) { void LoadConfig() { InitKeyBinds(); // v0.7.7: defaults first, key_* lines below override + g_controllerName[0] = 0; // v0.10.1 controller_name default: every controller for (bool& x : g_profExplicit) x = false; // v0.10.0 phase 10: set below for every profile key the ini names wchar_t path[MAX_PATH]; FILE* f = nullptr; @@ -15425,6 +17227,17 @@ void LoadConfig() { for (char* e = eq - 1; e >= key && (*e == ' ' || *e == '\t'); --e) *e = 0; const long v = strtol(eq + 1, nullptr, 10); if (!strncmp(key, "key_", 4)) { SetKeyBindFromIni(key, eq + 1); continue; } // v0.7.7 hotkeys + if (!strcmp(key, "controller_name")) { // v0.10.1: trimmed, inner spaces kept, a "..." pair stripped, lower case + const char* b = eq + 1; + while (*b == ' ' || *b == '\t') ++b; + size_t len = strlen(b); + while (len && (b[len - 1] == ' ' || b[len - 1] == '\t' || b[len - 1] == '\r' || b[len - 1] == '\n')) --len; + if (len >= 2 && b[0] == '"' && b[len - 1] == '"') { ++b; len -= 2; } + if (len >= sizeof(g_controllerName)) len = sizeof(g_controllerName) - 1; + for (size_t i = 0; i < len; ++i) g_controllerName[i] = (char)tolower((unsigned char)b[i]); + g_controllerName[len] = 0; + continue; + } if (!strcmp(key, "jitter_sign_x")) g_signX = v < 0 ? -1 : 1; else if (!strcmp(key, "jitter_sign_y")) g_signY = v < 0 ? -1 : 1; else if (!strcmp(key, "jitter_enabled")) g_jitterEnabled = v != 0; @@ -15524,12 +17337,18 @@ void LoadConfig() { } else if (!strcmp(key, "mv_cons_cands")) DrawIdMv::SetConsCands(v <= 0 ? 64u : (unsigned)v); else if (!strcmp(key, "mv_medoid_drop")) DrawIdMv::SetMedoidDrop(v <= 0 ? 0u : (unsigned)v); + else if (!strcmp(key, "mv_cons_fail_tol")) DrawIdMv::SetConsFailTol(v <= 0 ? 0u : (unsigned)v); // v0.10.2 else if (!strcmp(key, "mirror_vr_mode")) { // (phase 9: + 4; phase 10: default 2, explicit) g_mirVrMode = v < 0 ? 2 : (v > 4 ? 2 : (int)v); g_profExplicit[PK_MIRROR_VR_MODE] = true; } else if (!strcmp(key, "mirror_flat_mode")) { // v0.10.0 phase 10: the same modes in flat (default 1) g_mirFlatMode = v < 0 ? 1 : (v > 4 ? 1 : (int)v); g_profExplicit[PK_MIRROR_FLAT_MODE] = true; } + else if (!strcmp(key, "mirror_mv")) { // v0.10.2: parts (default) / camera -- the views of modes 1 / 2 / 3 + const char* p = eq + 1; + while (*p == ' ' || *p == '\t') ++p; + g_mirCamOnly = !_strnicmp(p, "camera", 6); + } else if (!strcmp(key, "mv_slot_pool")) g_slotPool = v != 0; else if (!strcmp(key, "mv_inst_replay")) { DrawIdMv::SetInstReplay(v != 0 ? 1 : 0); g_profExplicit[PK_INST_REPLAY] = true; } // v0.10.0 phase 14: the static replay skip (0 = off, 1..60 frames; re-check every 1..16 frames, 1 = never skipped) @@ -15543,6 +17362,7 @@ void LoadConfig() { else if (!strcmp(key, "mirror_vr_views")) g_mirVrViews = v < 1 ? 1 : (v > 8 ? 8 : (int)v); else if (!strcmp(key, "mv_area_scissor")) g_areaScissorCfg = v != 0; else if (!strcmp(key, "mv_area_margin")) g_areaMarginCfg = v < 0 ? -1 : (v > 1024 ? 1024 : (int)v); + else if (!strcmp(key, "mv_area_clip")) g_areaClipCfg = v != 0; // v0.10.2 else if (!strcmp(key, "mv_fwd_depth_res")) { g_fwdResCfg = (v == 1 || v == 2) ? (int)v : 0; g_profExplicit[PK_FWD_RES] = true; } else if (!strcmp(key, "mv_fold_dispatch")) DrawIdMv::SetFold(v <= 0 ? 0 : (v >= 2 ? 2 : 1)); // phase 18: 2 else if (!strcmp(key, "mv_vote_compact")) DrawIdMv::SetVoteCompact(v != 0); // v0.10.0 phase 18 @@ -15686,10 +17506,13 @@ void LoadConfig() { else if (!strcmp(key, "menu_vr_x")) g_menuVrX = v < -50 ? -50 : (v > 50 ? 50 : (int)v); else if (!strcmp(key, "menu_vr_y")) g_menuVrY = v < -50 ? -50 : (v > 50 ? 50 : (int)v); else if (!strcmp(key, "menu_vr_depth")) g_menuVrDepth = v < 0 ? 0 : (v > 200 ? 200 : (int)v); + else if (!strcmp(key, "menu_vr_dist")) g_menuVrDist = v < 30 ? 30 : (v > 300 ? 300 : (int)v); // v0.10.3 phase 29b else if (!strcmp(key, "menu_vr_face")) g_menuVrFace = v != 0 ? 1 : 0; // v0.10.0 phase 16 + else if (!strcmp(key, "menu_vr_layer")) g_menuVrLayer = v != 0 ? 1 : 0; // v0.10.3 phase 29 + else if (!strcmp(key, "bind_hold_ms")) g_bindHoldMs = v < 500 ? 500 : (v > 10000 ? 10000 : (int)v); // v0.10.2 else if (!strcmp(key, "menu_scale") || !strcmp(key, "menu_vr_scale")) { const double s = strtod(eq + 1, nullptr); - const float c = (s != s) ? 1.0f : (float)(s < 0.5 ? 0.5 : (s > 2.0 ? 2.0 : s)); + const float c = (s != s) ? 1.0f : (float)(s < 0.3 ? 0.3 : (s > 2.0 ? 2.0 : s)); // v0.10.2: 0.3..2.0 if (key[5] == 'v') g_menuVrScale = c; else g_menuScale = c; } // v0.10.0 live fps box (the menu's FPS counter rows change them; the save key writes them once changed there) @@ -15698,6 +17521,7 @@ void LoadConfig() { else if (!strcmp(key, "fps_y")) g_fpsY = v < 0 ? 0 : (v > 95 ? 95 : (int)v); else if (!strcmp(key, "fps_vr_x")) g_fpsVrX = v < -50 ? -50 : (v > 50 ? 50 : (int)v); else if (!strcmp(key, "fps_vr_y")) g_fpsVrY = v < -50 ? -50 : (v > 50 ? 50 : (int)v); + else if (!strcmp(key, "fps_vr_lock")) g_fpsVrLock = v != 0 ? 1 : 0; // v0.10.3 phase 28: 1 = fixed in the cab else if (!strcmp(key, "fps_scale") || !strcmp(key, "fps_vr_scale")) { const double s = strtod(eq + 1, nullptr); const float def = key[4] == 'v' ? kFpsVrScaleDefault : 1.0f; // phase 15: 0.2..3.0 (was 0.5..3.0) @@ -15826,16 +17650,31 @@ void LoadConfig() { "column / bottom row of the picture unrendered (sky in the depth), the sun-shaft / bloom haze blinks on those frames"); Log("OFXR Bridge support: ofxr_bridge=%d (%s)", (int)Ofxr::g_on.load(), Ofxr::g_on.load() ? "on: the layer's calls pass through the hooks" : "off"); + if (g_controllerName[0]) // v0.10.1 + Log("controller_name = \"%s\" (only controllers whose name contains it are read for WheelN / WheelUp ... bindings; " + "the others go to the game untouched)", g_controllerName); + else + Log("controller_name empty = every DirectInput controller the game opens is read for WheelN / WheelUp ... bindings"); #ifdef WITH_DLAA Log("tuning menu (v0.10.0): %s opens / closes it, %s / %s select a row, %s / %s change it; panel flat menu_x=%d menu_y=%d " - "menu_scale=%.1f, VR menu_vr_x=%d menu_vr_y=%d menu_vr_scale=%.1f menu_vr_depth=%d menu_vr_face=%d (%s); VR: drawn last on " - "each eye picture once the game's read of it is confirmed (phase 16)", KeyName(KA_MENU), KeyName(KA_MENU_UP), + "menu_scale=%.1f, VR menu_vr_x=%d menu_vr_y=%d menu_vr_scale=%.1f menu_vr_depth=%d menu_vr_dist=%d menu_vr_face=%d (%s); " + "v0.10.3 phase 29 " + "menu_vr_layer=%d (%s); VR in the picture: drawn last on each eye picture once the game's read of it is confirmed (phase " + "16); v0.10.2 bind_hold_ms=%d (hold a key / button that long on a row to bind it; no key / button reaches the game while " + "the menu is open)", KeyName(KA_MENU), KeyName(KA_MENU_UP), KeyName(KA_MENU_DOWN), KeyName(KA_MENU_LEFT), KeyName(KA_MENU_RIGHT), g_menuX, g_menuY, (double)g_menuScale, g_menuVrX, - g_menuVrY, (double)g_menuVrScale, g_menuVrDepth, g_menuVrFace, - g_menuVrFace ? "the VR panel turns to face the eye" : "flat VR panel"); + g_menuVrY, (double)g_menuVrScale, g_menuVrDepth, g_menuVrDist, g_menuVrFace, + g_menuVrFace ? "the VR panel turns to face the eye" : "flat VR panel", g_menuVrLayer, + g_menuVrLayer ? "the VR panel / fps box are OpenXR quad layers placed by the compositor; phase 29b: the panel quad at " + "menu_vr_dist cm, menu_vr_face turns the panel / head-following fps box quads to face the head; " + "menu_vr_depth = the in-picture fallback's shift" : "the VR panel / fps box are drawn into the eye picture " + "(menu_vr_depth / menu_vr_face; menu_vr_dist unused)", + g_bindHoldMs); Log("fps box (v0.10.0): fps_show=%d (%s), flat fps_x=%d fps_y=%d fps_scale=%.1f, VR fps_vr_x=%d fps_vr_y=%d fps_vr_scale=%.1f " - "(the tuning menu's FPS counter rows move it)", g_fpsShow ? 1 : 0, g_fpsShow ? "on: shown also while the menu is closed" : "off", - g_fpsX, g_fpsY, (double)g_fpsScale, g_fpsVrX, g_fpsVrY, (double)g_fpsVrScale); + "fps_vr_lock=%d (%s) (the tuning menu's FPS counter rows move it)", g_fpsShow ? 1 : 0, + g_fpsShow ? "on: shown also while the menu is closed" : "off", g_fpsX, g_fpsY, (double)g_fpsScale, g_fpsVrX, g_fpsVrY, + (double)g_fpsVrScale, g_fpsVrLock, g_fpsVrLock ? "VR: fixed in the cab, fps_vr_x / fps_vr_y = yaw / pitch degrees at 0.8 m" + : "VR: follows the headset"); // v0.10.0 phase 6b: the vote participation of instanced / no-MVP draws follows mv_drawid_instanced (default 1, even when the // key is absent) -- set it here, after the whole ini is parsed, so both the replay and the vote agree. DrawIdMv::SetInstanced(g_didInstancedCfg); @@ -15910,11 +17749,12 @@ void LoadConfig() { // v0.10.0 phase 8: performance -- per-sub-pass GPU timers + the cuts (each behind its ini key) GpuPerf::SetOn(g_perfCfg > 0 || (g_perfCfg < 0 && g_debugIni)); Log("phase 8 (v0.10.0): perf_timers=%d (%s) mv_vote_res=%u mv_vote_march_cap=%u mv_cons_cands=%u mv_medoid_drop=%u " - "mirror_vr_mode=%d mv_slot_pool=%d mv_inst_replay=%d (instanced draws: %s) -- %s; rigid-parent vote on every %u%s pixel in x / y with %u px march steps " + "mv_cons_fail_tol=%u mirror_vr_mode=%d mirror_mv=%s mv_slot_pool=%d mv_inst_replay=%d (instanced draws: %s) -- %s; rigid-parent vote on every %u%s pixel in x / y with %u px march steps " "(listed draws with < 64 coarse samples: every 2nd pixel, 2 px steps), <= %u marches per frame, vote grid skipped when no " - "listed draw has pixels; consensus %u world / %u cabin candidates; %s; mirrors in VR: %s; pass-slot textures %s", + "listed draw has pixels; consensus %u world / %u cabin candidates; %s; mirrors in VR: %s%s; pass-slot textures %s", g_perfCfg, GpuPerf::On() ? "on: 'perf eye N' lines every 600 blits" : "off", DrawIdMv::VoteRes(), DrawIdMv::MarchCap(), - DrawIdMv::ConsCands(), DrawIdMv::MedoidDrop(), g_mirVrMode, (int)g_slotPool, DrawIdMv::InstReplay(), + DrawIdMv::ConsCands(), DrawIdMv::MedoidDrop(), DrawIdMv::ConsFailTol(), g_mirVrMode, g_mirCamOnly ? "camera" : "parts", + (int)g_slotPool, DrawIdMv::InstReplay(), DrawIdMv::InstReplay() ? "only the shapes that took a moving parent lately, all of them every 7th pass" : "all replayed every pass", "every sub-pass of the mod has its own GPU timer per eye (gpu_perf.h); the 'perf cuts' line shows each cut's state", @@ -15926,16 +17766,20 @@ void LoadConfig() { g_mirVrMode == 0 ? "off" : (g_mirVrMode == 2 ? "only the largest views (main mirrors)" : (g_mirVrMode == 3 ? "each unit every 2nd frame (held in between)" : (g_mirVrMode == 4 ? "every view, per-draw ids off (camera motion vectors)" : "every view"))), + g_mirCamOnly && g_mirVrMode >= 1 && g_mirVrMode <= 3 ? ", per-draw ids off (mirror_mv camera: camera motion vectors)" : "", g_slotPool ? "pooled (alive = passes in flight)" : "one set per FIFO slot"); // v0.10.0 phase 9: VR cost -- area scissor, 1/2-resolution forward depth, mirror modes, folded dispatches { const int marginNow = g_areaMarginCfg >= 0 ? g_areaMarginCfg : SceneDlaa::Feather() + 32; - Log("phase 9 (v0.10.0): mv_area_scissor=%d mv_area_margin=%d (%d px) mv_fwd_depth_res=%d (%s) mirror_vr_mode=%d " - "mirror_vr_views=%d mv_fold_dispatch=%d -- %s; forward depth %s; mirrors in VR: %s; the per-draw chain runs %s (see the " - "'perf view' line every 600 blits)", - (int)g_areaScissorCfg, g_areaMarginCfg, marginNow, g_fwdResCfg, + Log("phase 9 (v0.10.0): mv_area_scissor=%d mv_area_margin=%d (%d px) mv_area_clip=%d (v0.10.2: %s) mv_fwd_depth_res=%d (%s) " + "mirror_vr_mode=%d mirror_vr_views=%d mirror_mv=%s mv_fold_dispatch=%d -- %s; forward depth %s; mirrors in VR: %s%s; the " + "per-draw chain runs %s (see the 'perf view' line every 600 blits)", + (int)g_areaScissorCfg, g_areaMarginCfg, marginNow, (int)g_areaClipCfg, + g_areaClipCfg ? "the rigid-parent pixel count / vote grid cover only the blit's own eye rect + the margin, inside the " + "pass clip" : "the rigid-parent vote grid covers the whole pass clip (VR: both eyes' rects)", + g_fwdResCfg, g_fwdResCfg == 0 ? "auto: 1/2 resolution in VR, full flat" : (g_fwdResCfg == 2 ? "1/2 resolution" : "full resolution"), - g_mirVrMode, g_mirVrViews, DrawIdMv::Fold(), + g_mirVrMode, g_mirVrViews, g_mirCamOnly ? "camera" : "parts", DrawIdMv::Fold(), g_areaScissorCfg ? "with dlaa_area < 100 the draw-id replays, the forward-depth re-draw and the rigid-parent vote run " "only inside the DLAA rect of the pass's eye(s) + the margin (the raw picture outside, as before)" : "the per-pixel work covers the whole image (phase 8)", @@ -15944,6 +17788,9 @@ void LoadConfig() { g_mirVrMode == 2 ? "the mirror_vr_views largest views keep DLAA, the rest are left to the game" : (g_mirVrMode == 4 ? "every view keeps DLAA with camera motion vectors (no per-draw ids)" : "see mirror_vr_mode"), + g_mirCamOnly && g_mirVrMode >= 1 && g_mirVrMode <= 3 + ? " -- mirror_mv camera: the handled views use camera motion vectors only (no per-draw ids: no record / replay / " + "pairing in the mirror units, ~0.15 ms per unit instead of ~0.4 ms)" : "", DrawIdMv::Fold() >= 2 ? "as 12 dispatches per eye, 14 with mv_vote_compact (phase 18: the pick spread over a group, " "resolve + inherit in one wide dispatch, list + twin + attach folded)" : (DrawIdMv::Fold() ? "as 11 dispatches per eye (pick + resolve + inherit and list + twin + attach folded)" @@ -16095,7 +17942,16 @@ bool HookFn(const char* name, void* target, void* hook, void** orig) { } DWORD WINAPI SetupThread(LPVOID) { - Ofxr::Rescan(); // v0.10.0 OFXR Bridge: layer modules already loaded (later ones: every 300 Presents) +#ifdef WITH_DLAA + // v0.10.3 phase 27: the OpenXR release hook FIRST -- it must be in before the game creates its XrInstance (the static + // loader in the exe negotiates with the runtime / API layers through GetProcAddress); VR launches only. + if (g_launchVr == 1) { + XrHook::SetReleaseCallback(&MenuLateOnXrRelease); + XrHook::SetOverlayDrawCallback(&MenuOverlayDraw); // v0.10.3 phase 29: the quad layers' images (menu_vr_layer) + XrHook::Install(); + } +#endif + Ofxr::Rescan(); // v0.10.0 OFXR Bridge: layer modules already loaded (later ones: every 300 Presents) #ifdef WITH_DLAA // v0.7.8: compile every embedded shader once, on ShaderCache's own worker thread, while the game boots (was a // D3DCompile per unit inside its first Run on the render thread: ~2 s freeze per CameraMv). Not under the @@ -16335,13 +18191,19 @@ void OnProcessDetach(bool processTerminating) { if (!processTerminating) KeySwallow::UnhookWindow(); } -// v0.10.0 tuning menu: the virtual keys the game must not see right now (dinput_wrap.cpp; input / window threads). The 5 bound -// menu keys while the menu is open, else none. g_keys is written only by LoadConfig (before any game input exists). -int MenuSwallowKeys(int* vks, int cap) { - if (!vks || cap <= 0 || !g_menuOpen.load(std::memory_order_relaxed)) return 0; - static const KeyAction kMenuKeys[] = { KA_MENU, KA_MENU_UP, KA_MENU_DOWN, KA_MENU_LEFT, KA_MENU_RIGHT }; - int n = 0; - for (KeyAction a : kMenuKeys) - if (g_keys[a].vk && n < cap) vks[n++] = g_keys[a].vk; - return n; -} +// v0.10.2 tuning menu: true while the menu is open = NO key and NO controller button reaches the game (dinput_wrap.cpp: the +// keyboard / controller device wraps and the window subclass, the game's input / window threads; replaces v0.10.0's +// MenuSwallowKeys / v0.10.1's MenuSwallowJoy, which listed only the 5 menu inputs). Releases always pass there. +bool MenuHidesInput() { return g_menuOpen.load(std::memory_order_relaxed); } +// v0.10.1 dlaa.ini controller_name filter (dinput_wrap.cpp CreateDevice, the game's thread): true = tap / filter this +// controller. Empty filter = every controller; else the product name must contain it (ASCII case-insensitive). +bool ControllerNameAllowed(const char* product) { + if (!g_controllerName[0]) return true; + if (!product) return false; + char low[260]; + size_t n = 0; + for (; product[n] && n < sizeof(low) - 1; ++n) low[n] = (char)tolower((unsigned char)product[n]); + low[n] = 0; + return strstr(low, g_controllerName) != nullptr; +} +const char* ControllerNameFilter() { return g_controllerName; } // v0.10.1 for dinput_wrap.cpp's "not tapped" log line diff --git a/src/menu.cpp b/src/menu.cpp index 4060cf1..5db872d 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include using Microsoft::WRL::ComPtr; @@ -73,6 +74,7 @@ ComPtr g_ps; ComPtr g_cb; ComPtr g_smp; ComPtr g_blend; // SrcAlpha / InvSrcAlpha, RGB write mask (alpha untouched) +ComPtr g_blendOv; // v0.10.3 phase 29 (kOutOverlay): blend off, RGBA written as the shader outputs it ComPtr g_rs; // solid, no cull, no scissor ComPtr g_dss; // depth + stencil off ID3D11Device* g_dev = nullptr; @@ -199,13 +201,13 @@ void DropWidget() { // Shaders + states for `dev` (once per device; a new device drops the old one's objects and both textures). bool Ensure(ID3D11Device* dev) { - if (g_dev == dev && g_vs && g_ps && g_cb && g_smp && g_blend && g_rs && g_dss) return true; + if (g_dev == dev && g_vs && g_ps && g_cb && g_smp && g_blend && g_blendOv && g_rs && g_dss) return true; if (g_failed && g_dev == dev) return false; // warm-up still running: try again next frame. v0.10.0 phase 17: the two menu shaders are compiled right after the core // group (~2.1 s), no longer after the whole per-draw set (~20 s): the panel works on the first menu screens. if (!ShaderCache::Ready(ShaderCache::kMenuVs) || !ShaderCache::Ready(ShaderCache::kMenuPs)) return false; g_failed = true; g_dev = dev; - g_vs.Reset(); g_ps.Reset(); g_cb.Reset(); g_smp.Reset(); g_blend.Reset(); g_rs.Reset(); g_dss.Reset(); + g_vs.Reset(); g_ps.Reset(); g_cb.Reset(); g_smp.Reset(); g_blend.Reset(); g_blendOv.Reset(); g_rs.Reset(); g_dss.Reset(); DropTexture(); DropWidget(); HRESULT hr; @@ -244,6 +246,14 @@ bool Ensure(ID3D11Device* dev) { D3D11_COLOR_WRITE_ENABLE_BLUE) : 0; } if (FAILED(hr = dev->CreateBlendState(&bd, &g_blend))) { Log("tuning menu CreateBlendState hr=0x%lx", hr); return false; } + D3D11_BLEND_DESC bo{}; // v0.10.3 phase 29: the overlay image (kOutOverlay) + bo.RenderTarget[0].BlendEnable = FALSE; + bo.RenderTarget[0].SrcBlend = D3D11_BLEND_ONE; bo.RenderTarget[0].DestBlend = D3D11_BLEND_ZERO; + bo.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD; + bo.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE; bo.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO; + bo.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD; + bo.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL; + if (FAILED(hr = dev->CreateBlendState(&bo, &g_blendOv))) { Log("tuning menu CreateBlendState (overlay) hr=0x%lx", hr); return false; } D3D11_RASTERIZER_DESC rd{}; rd.FillMode = D3D11_FILL_SOLID; rd.CullMode = D3D11_CULL_NONE; @@ -271,12 +281,22 @@ constexpr float kTitleY = 8.0f, kTitleH = 24.0f; constexpr float kPerfY = 33.0f, kPerfLineH = 15.0f; // TuningMenu::kPerfLines lines (the GPU block) constexpr float kHeadY = 82.0f, kHeadH = 18.0f; constexpr float kRowsY = 102.0f, kRowH = 19.0f; -constexpr float kDescGap = 6.0f, kDescH = 54.0f; // 3 lines +// v0.10.3 phase 29d: kDescH = 3 FULL lines of the 14 px description font at every build scale (was 54: one line of Segoe UI at +// 14 px is 19 px (tmHeight = DrawText's line step), so the 3rd line ended at 57 and was cut off above the footer). The line step +// rounds per scale (7 px font: 10 px = 20 ref px a line at 0.5; 20 px: 28 = 20 ref px at 1.4) and both rect edges round, so 3 +// lines need up to 62 ref px; 64 fits them at every scale 0.30 .. 5.00 for every row count (measured with GDI). RenderPanel also +// draws only as many WHOLE lines as fit (<= kDescLines) and ellipsises what does not: never a cut or 4th line over the footer. +constexpr float kDescGap = 6.0f, kDescH = 64.0f; // kDescLines lines +constexpr int kDescLines = 3; constexpr float kFootGap = 2.0f, kFootH = 18.0f, kBottom = 4.0f; constexpr float kNameX0 = 14.0f, kNameX1 = 236.0f; constexpr float kValX0 = 240.0f, kValX1 = 384.0f; constexpr float kKeyX0 = 388.0f, kKeyX1 = 640.0f; constexpr float kCostX0 = 644.0f, kCostX1 = 748.0f; +// v0.10.3 phase 29c: the footer and the licence line share the bottom line (the footer left, the licence right-aligned); the +// footer ends kFootGapX left of the licence text (it used to run under it: "overflows" in VR). TuningMenu::FooterFits tests it. +constexpr float kFootX0 = 14.0f, kFootGapX = 12.0f; +const wchar_t kLicence[] = L"(c) JRDevo - All rights reserved - github.com/JRDevo"; static_assert(kPerfY + kPerfLineH * (float)TuningMenu::kPerfLines <= kHeadY, "tuning menu: GPU block overlaps the header"); const COLORREF kBg = RGB(20, 20, 24); @@ -339,6 +359,36 @@ void DibFinish(Dib& d, uint32_t w, uint32_t h, std::vector& out) { d = Dib(); } +// v0.10.3 phase 29d: the description as DrawText lays it out (word-wrapped) in a box w px wide and at most maxH px high (whole +// lines, the font selected in dc): `t` itself when it fits, else the longest prefix ending at a word (binary search, then back +// to its last space) + U+2026 "..." that fits, built in out[cap]. Only at a texture rebuild, so the few measurements cost nothing. +constexpr UINT kDescFlags = DT_WORDBREAK | DT_END_ELLIPSIS | DT_NOPREFIX; +const wchar_t* DescFit(HDC dc, const wchar_t* t, LONG w, LONG maxH, wchar_t* out, size_t cap) { + auto fits = [&](const wchar_t* s, int len) { + RECT r{ 0, 0, w, 0 }; + DrawTextW(dc, s, len, &r, kDescFlags | DT_CALCRECT); + return r.bottom <= maxH; + }; + const int len = (int)wcsnlen(t, cap - 2); + if (fits(t, len)) return t; + auto build = [&](int n) { // t[0..n) without trailing blanks / commas + "..." + while (n > 0 && (t[n - 1] == L' ' || t[n - 1] == L',' || t[n - 1] == L';')) --n; + wmemcpy(out, t, (size_t)n); + out[n] = L'\u2026'; + out[n + 1] = 0; + return n + 1; + }; + int lo = 0, hi = len; // the longest prefix that fits (the empty one assumed) + while (lo < hi) { + const int mid = (lo + hi + 1) / 2; + if (fits(out, build(mid))) lo = mid; else hi = mid - 1; + } + int cut = lo; + while (cut > 0 && t[cut] != L' ') --cut; // end at a word (a prefix of one long word: keep the cut) + build(cut > 0 ? cut : lo); + return out; +} + // GDI -> g_pixels (RGBA, w x h). False = GDI failed (logged once). bool RenderPanel(const TuningMenu::Panel& p, float s, uint32_t w, uint32_t h) { static bool s_failLogged = false; @@ -400,12 +450,32 @@ bool RenderPanel(const TuningMenu::Panel& p, float s, uint32_t w, uint32_t h) { const float rowsEnd = kRowsY + kRowH * (float)n; fill(kLine, 10.0f, rowsEnd + 4.0f, W - 10.0f, rowsEnd + 5.0f); const float descY = rowsEnd + kDescGap; - text(fDesc, kDesc, p.desc, 14.0f, descY, W - 14.0f, descY + kDescH, DT_WORDBREAK | DT_END_ELLIPSIS); + if (p.desc[0]) { + // v0.10.3 phase 29d: the description gets as many WHOLE lines as its box holds (kDescLines at every scale, see kDescH), + // the box ends at the last one; a text that needs more lines is cut at a word and ends in "..." (DescFit) + SelectObject(dc, pick(fDesc)); + SetTextColor(dc, kDesc); + TEXTMETRICW tm{}; + RECT r{ px(14.0f), px(descY), px(W - 14.0f), px(descY + kDescH) }; + const LONG lineH = GetTextMetricsW(dc, &tm) && tm.tmHeight > 0 ? tm.tmHeight : (r.bottom - r.top) / kDescLines; + LONG lines = lineH > 0 ? (r.bottom - r.top) / lineH : 0; + if (lines > kDescLines) lines = kDescLines; + if (lines > 0) { + r.bottom = r.top + lines * lineH; + wchar_t fit[sizeof(p.desc) / sizeof(p.desc[0]) + 2]; + DrawTextW(dc, DescFit(dc, p.desc, r.right - r.left, r.bottom - r.top, fit, sizeof(fit) / sizeof(fit[0])), -1, &r, + kDescFlags); + } + } const float footY = descY + kDescH + kFootGap; - text(fSmall, kHead, p.footer, 14.0f, footY, W - 14.0f, footY + kFootH, one); + // v0.10.3 phase 29c: the footer is clipped (end ellipsis) kFootGapX left of the licence text, never under it + SelectObject(dc, pick(fSmall)); + SIZE lic{}; + if (!GetTextExtentPoint32W(dc, kLicence, (int)(sizeof(kLicence) / sizeof(kLicence[0]) - 1), &lic)) lic.cx = 0; + const float footX1 = (std::max)(W * 0.25f, W - kFootX0 - (float)lic.cx / s - kFootGapX); + text(fSmall, kHead, p.footer, kFootX0, footY, footX1, footY + kFootH, one); // licence line, bottom right: the GitHub page is the only place this mod exists - text(fSmall, kHead, L"(c) JRDevo - All rights reserved - github.com/JRDevo", - W * 0.5f, footY, W - 14.0f, footY + kFootH, DT_SINGLELINE | DT_VCENTER | DT_RIGHT | DT_END_ELLIPSIS); + text(fSmall, kHead, kLicence, W * 0.5f, footY, W - kFootX0, footY + kFootH, DT_SINGLELINE | DT_VCENTER | DT_RIGHT | DT_END_ELLIPSIS); SelectObject(dc, oldFont); DibFinish(d, w, h, g_pixels); if (fBody) DeleteObject(fBody); @@ -540,6 +610,8 @@ bool EnsureWidgetTexture(ID3D11Device* dev, ID3D11DeviceContext* ctx, const wcha // touched state saved and restored (SaveState / RestoreState). The device objects must exist (Ensure). void DrawCb(ID3D11DeviceContext* ctx, ID3D11RenderTargetView* rtv, uint32_t rtW, uint32_t rtH, CbData& cb, int outMode, ID3D11ShaderResourceView* srv, bool textureAlpha) { + const bool overlay = (outMode & TuningMenu::kOutOverlay) != 0; // v0.10.3 phase 29: blend off, RGBA written + outMode &= ~TuningMenu::kOutOverlay; cb.opt[0] = (float)(outMode < TuningMenu::kOutRaw ? TuningMenu::kOutRaw : (outMode > TuningMenu::kOutPq ? TuningMenu::kOutPq : outMode)); cb.opt[1] = 0.88f; cb.opt[2] = textureAlpha ? 1.0f : 0.0f; // 1 = the fps box: alpha comes from the texture @@ -567,7 +639,7 @@ void DrawCb(ID3D11DeviceContext* ctx, ID3D11RenderTargetView* rtv, uint32_t rtW, ctx->PSSetSamplers(0, 1, &smp); ctx->RSSetState(g_rs.Get()); ctx->RSSetViewports(1, &vp); - ctx->OMSetBlendState(g_blend.Get(), bf, 0xffffffffu); + ctx->OMSetBlendState(overlay ? g_blendOv.Get() : g_blend.Get(), bf, 0xffffffffu); ctx->OMSetDepthStencilState(g_dss.Get(), 0); ctx->Draw(4, 0); // (hooked: passes straight through inside t_inDlaa) RestoreState(ctx); @@ -601,6 +673,27 @@ float RefHeight(int nRows) { return kRowsY + kRowH * (float)nRows + kDescGap + kDescH + kFootGap + kFootH + kBottom; } +// v0.10.3 phase 29c: measured at scale 1 (the small font = 13 px there): the widest case relative to the panel -- the size is +// rounded up from 12.5 and the hinting widens small text (Segoe UI: the default footer is 430 px at 13 px, 403 at 50 px / 4), +// so what fits here fits at every larger build scale (VR quad 1.6+). The room = the panel width - both margins - the licence +// text - the gap, as RenderPanel lays the line out. No GDI = "no". +bool FooterFits(const wchar_t* footer) { + if (!footer || !footer[0]) return true; + constexpr float kM = 1.0f; + HDC dc = CreateCompatibleDC(nullptr); + if (!dc) return false; + HFONT f = MakeFont(12.5f * kM, FW_NORMAL); + if (!f) { DeleteDC(dc); return false; } + HGDIOBJ old = SelectObject(dc, f); + SIZE a{}, b{}; + const bool ok = GetTextExtentPoint32W(dc, footer, (int)wcslen(footer), &a) && + GetTextExtentPoint32W(dc, kLicence, (int)(sizeof(kLicence) / sizeof(kLicence[0]) - 1), &b); + SelectObject(dc, old); + DeleteObject(f); + DeleteDC(dc); + return ok && (float)a.cx / kM <= kRefWidth - 2.0f * kFootX0 - (float)b.cx / kM - kFootGapX; +} + bool Draw(ID3D11DeviceContext* ctx, ID3D11RenderTargetView* rtv, uint32_t rtW, uint32_t rtH, float x0, float y0, float scale, float buildScale, int outMode, const Panel& p) { if (!ctx || !rtv || !rtW || !rtH || !(scale > 0.0f) || !(buildScale > 0.0f)) return false; diff --git a/src/menu.h b/src/menu.h index 3dfedd2..683133d 100644 --- a/src/menu.h +++ b/src/menu.h @@ -21,7 +21,9 @@ namespace TuningMenu { -constexpr int kMaxRows = 26; // (was 24 before the 4 fps box rows) +constexpr int kMaxRows = 31; // (was 24 before the 4 fps box rows, 26 before the Reset row, 27 before v0.10.2 Menu keys, + // 28 before the v0.10.3 phase 28 FPS counter lock row, 29 before the phase 29c + // group header rows; a Panel holds only the VISIBLE rows, nRows <= this) constexpr int kPerfLines = 3; // the GPU block under the title (small font, one line each) constexpr float kRefWidth = 760.0f; // panel width in reference px (scale 1; was 720 before the GPU cost column) constexpr float kWidgetRefW = 92.0f; // the fps box in reference px (scale 1) @@ -49,6 +51,10 @@ struct Panel { void RegisterShaders(); // VS + PS into ShaderCache (setup thread, before ShaderCache::Start) float RefHeight(int nRows); // panel height in reference px +// v0.10.3 phase 29c: does `footer` fit on the footer line LEFT of the licence line (which shares it, right-aligned)? Measured +// with GDI in the panel's small font (no device objects; a memory DC for the call). The caller shortens the text if not; Draw +// clips the footer at the licence line anyway (end ellipsis), so a wrong answer never overlaps the two. +bool FooterFits(const wchar_t* footer); // Draws `p` into `rtv` (a target of rtW x rtH px) with its top-left corner at (x0, y0) px and `scale` px per reference // px. The texture is rendered at `buildScale` (the GPU scales it by scale / buildScale) so two targets of different // sizes in one frame (VR eyes + the desktop mirror) do not rebuild it twice per frame. outMode = how the target stores @@ -57,6 +63,10 @@ enum OutMode : int { kOutRaw = 0, // 8-bit UNORM view: the sRGB panel bytes as they are kOutLinear = 1, // _SRGB view (the hardware encodes) or scRGB float: decoded to linear (white = 1.0) kOutPq = 2, // HDR10 (R10G10B10A2, PQ / Rec.2020): white at 200 nits, PQ-encoded + // v0.10.3 phase 29: OR-ed into any of the above = an OVERLAY image (the OpenXR quad layer's swapchain image): blend OFF, + // RGBA written as the shader outputs it (colour + alpha: the panel max(0.88, luminance), the fps box its own outline + // alpha), so the compositor gets the alpha. Without the flag every draw is as before (blend, RGB write mask). + kOutOverlay = 0x100, }; bool Draw(ID3D11DeviceContext* ctx, ID3D11RenderTargetView* rtv, uint32_t rtW, uint32_t rtH, float x0, float y0, float scale, float buildScale, int outMode, const Panel& p); diff --git a/src/motion_vectors.cpp b/src/motion_vectors.cpp index f2e0f51..f47ee48 100644 --- a/src/motion_vectors.cpp +++ b/src/motion_vectors.cpp @@ -1498,6 +1498,7 @@ bool CameraMv::Generate(ID3D11DeviceContext* ctx, uint32_t w, uint32_t h, uint32 m_didN = 0; // v0.10.0 (set by DidPrepare when pass B can use the ids) m_didNG = 0; m_didIdSrv = nullptr; + m_did.SetEyeRect(x0, y0, w, h); // v0.10.2 (mv_area_clip): the vote grid follows this eye's DLAA rect if (ctx && m_fwdCnt) FwdCountPoll(ctx); // v0.9.0 r11: near-range forward-depth counts that landed if (!m_ready || !ctx || !depthTwinSrv || !depthR32Uav || !mvUav || !cur.Ready()) { ObjNoRun(!cur.Ready() ? "Generate early-out: the candidate record is not ready" diff --git a/src/scene_dlaa.cpp b/src/scene_dlaa.cpp index a938039..b111463 100644 --- a/src/scene_dlaa.cpp +++ b/src/scene_dlaa.cpp @@ -624,6 +624,62 @@ void SceneDlaa::CropRect(uint32_t fullW, uint32_t fullH, int area, float cu, flo if (h) *h = ch; } +// v0.10.2: the sizes a Run on a fullW x fullH colour derives (was inline in Run; Prebuild / ReadyFor use the same numbers). +// v0.6.4 DLAA area: crop size from the area (recomputed every Run, cheap; a change rebuilds in Ensure), origin centred on this +// eye's optical centre, clamped into the image, even pixels. Area 100 = whole image, origin (0,0) = the v0.6.3 path. Outside +// the rect the game image stays the raw jittered frame. +// v0.7.0 upscale: only when the output is >= the tonemap in both axes and larger in one (else v0.6.5 path). Output rect = the +// crop mapped into output space: size = round(crop * out / full) per axis (depends on the crop size only, so a rect move never +// rebuilds), origin = round(origin * out / full), clamped so the rect stays inside the output. Area 100 -> (0, 0, outW, outH). +SceneDlaa::RunGeom SceneDlaa::Geometry(uint32_t fullW, uint32_t fullH, uint32_t outW, uint32_t outH, int area) const { + RunGeom g{}; + g.cw = fullW; g.ch = fullH; + CropSize(fullW, fullH, area, &g.cw, &g.ch); + g.rx = RectOrigin(fullW, g.cw, m_cu); + g.ry = RectOrigin(fullH, g.ch, m_cv); + g.up = outW && outH && outW >= fullW && outH >= fullH && (outW > fullW || outH > fullH); + g.ofw = 0; g.ofh = 0; g.ow = g.cw; g.oh = g.ch; g.oxc = g.rx; g.oyc = g.ry; + if (g.up) { + g.ofw = outW; g.ofh = outH; + g.ow = ScaleRound(g.cw, outW, fullW); if (g.ow > outW) g.ow = outW; + g.oh = ScaleRound(g.ch, outH, fullH); if (g.oh > outH) g.oh = outH; + g.oxc = ScaleRound(g.rx, outW, fullW); if (g.oxc > outW - g.ow) g.oxc = outW - g.ow; + g.oyc = ScaleRound(g.ry, outH, fullH); if (g.oyc > outH - g.oh) g.oyc = outH - g.oh; + } + return g; +} + +// v0.10.2: Run's "no build" test (was inline in Run): textures + NGX feature exist for exactly these sizes, the colour kind +// active or parked (v0.10.0 phase 7: a swap of the parked colour set is no build). +bool SceneDlaa::BuiltFor(const RunGeom& g, uint32_t fullW, uint32_t fullH, bool hdr) const { + return m_ready && g.cw == m_w && g.ch == m_h && fullW == m_fullW && fullH == m_fullH && g.ofw == m_outFullW && + g.ofh == m_outFullH && g.ow == m_ow && g.oh == m_oh && (hdr == m_hdr || (m_park.valid && m_park.hdr == hdr)); +} + +bool SceneDlaa::ReadyFor(uint32_t fullW, uint32_t fullH, bool hdr, int area) const { + return BuiltFor(Geometry(fullW, fullH, 0, 0, area), fullW, fullH, hdr); +} + +// v0.10.2: see scene_dlaa.h. Exactly the Ensure call of Run (same Geometry, outW = outH = 0, the DLAA area in force). +bool SceneDlaa::Prebuild(ID3D11DeviceContext* ctx, uint32_t fullW, uint32_t fullH, bool hdr) { + m_deferred = false; + if (!ctx || !fullW || !fullH) return false; + if (!(m_menuUnit ? ShaderCache::CoreDone() : ShaderCache::Done())) { m_deferred = true; return false; } // as Run + const RunGeom g = Geometry(fullW, fullH, 0, 0, s_area); + if (BuiltFor(g, fullW, fullH, hdr)) return true; + ComPtr dev; + ctx->GetDevice(&dev); + if (!dev) return false; + CsState saved; // NGX may bind compute state while creating the feature (PrewarmNgx) + saved.Save(ctx); + m_budgetBypass = true; // the boot screen: several creates in one Present are invisible + const bool ok = Ensure(dev.Get(), fullW, fullH, g.cw, g.ch, g.rx, g.ry, g.ofw, g.ofh, g.ow, g.oh, hdr); + m_budgetBypass = false; + saved.Restore(ctx); + if (!ok) Shutdown(); // not "failed at these sizes": the live Run tries once more + return ok; +} + bool SceneDlaa::Ensure(ID3D11Device* dev, uint32_t fullW, uint32_t fullH, uint32_t w, uint32_t h, uint32_t rx, uint32_t ry, uint32_t outFullW, uint32_t outFullH, uint32_t ow, uint32_t oh, bool hdr) { const bool sameSize = w == m_w && h == m_h && fullW == m_fullW && fullH == m_fullH && @@ -646,7 +702,7 @@ bool SceneDlaa::Ensure(ID3D11Device* dev, uint32_t fullW, uint32_t fullH, uint32 return true; } if (m_parkFailed[k]) { m_altFailed = true; return false; } - if (!DlaaProcessor::CreateBudgetFree()) { m_deferred = true; return false; } + if (!m_budgetBypass && !DlaaProcessor::CreateBudgetFree()) { m_deferred = true; return false; } // (v0.10.2 Prebuild) ShutdownParked(); // (holds nothing here: a parked set of this kind was swapped in above) SwapParked(); // the current set is parked with its history; the active slots are empty if (!BuildColourSet(dev, hdr, true)) { @@ -665,7 +721,8 @@ bool SceneDlaa::Ensure(ID3D11Device* dev, uint32_t fullW, uint32_t fullH, uint32 } // v0.7.8: a (re)build creates an NGX feature (~10-40 ms with textures): at most one per Present, so two units // never build in the same frame. Nothing is torn down here; the next Present retries. - if (!DlaaProcessor::CreateBudgetFree()) { m_deferred = true; return false; } + // v0.10.2: a mirror-unit pre-build on the boot screen (Prebuild) does not wait for the budget. + if (!m_budgetBypass && !DlaaProcessor::CreateBudgetFree()) { m_deferred = true; return false; } // Dims changed (or first use, or v0.6.4 the DLAA area changed, or v0.7.0 upscale on/off / output size): // tear down and rebuild everything. @@ -1460,36 +1517,18 @@ bool SceneDlaa::Run(ID3D11DeviceContext* ctx, ID3D11Texture2D* tonemap, ID3D11Te return false; } - // v0.6.4 DLAA area: crop size from the area (recomputed every Run, cheap; a change rebuilds in Ensure), - // origin centred on this eye's optical centre, clamped into the image, even pixels. Area 100 = whole image, - // origin (0,0) = the v0.6.3 path. Outside the rect the game image stays the raw jittered frame. - uint32_t cw = td.Width, ch = td.Height; - CropSize(td.Width, td.Height, s_area, &cw, &ch); - const uint32_t rx = RectOrigin(td.Width, cw, m_cu); - const uint32_t ry = RectOrigin(td.Height, ch, m_cv); - - // v0.7.0 upscale: only when the output is >= the tonemap in both axes and larger in one (else v0.6.5 path). - // Output rect = the crop mapped into output space: size = round(crop * out / full) per axis (depends on the - // crop size only, so a rect move never rebuilds), origin = round(origin * out / full), clamped so the rect - // stays inside the output. Area 100 -> (0, 0, outW, outH) exactly. - const bool up = outW && outH && outW >= td.Width && outH >= td.Height && (outW > td.Width || outH > td.Height); - uint32_t ofw = 0, ofh = 0, ow = cw, oh = ch, oxc = rx, oyc = ry; - if (up) { - ofw = outW; ofh = outH; - ow = ScaleRound(cw, outW, td.Width); if (ow > outW) ow = outW; - oh = ScaleRound(ch, outH, td.Height); if (oh > outH) oh = outH; - oxc = ScaleRound(rx, outW, td.Width); if (oxc > outW - ow) oxc = outW - ow; - oyc = ScaleRound(ry, outH, td.Height); if (oyc > outH - oh) oyc = outH - oh; - } + // v0.6.4 DLAA area crop + v0.7.0 upscale output rect (v0.10.2: computed in Geometry, shared with Prebuild / ReadyFor) + const RunGeom g = Geometry(td.Width, td.Height, outW, outH, s_area); + const uint32_t cw = g.cw, ch = g.ch, rx = g.rx, ry = g.ry; + const uint32_t ofw = g.ofw, ofh = g.ofh, ow = g.ow, oh = g.oh, oxc = g.oxc, oyc = g.oyc; + const bool up = g.up; ComPtr dev; ctx->GetDevice(&dev); // v0.7.8: a Run that (re)builds the unit is timed and logged (proof that no build costs more than its textures + // its own NGX feature any more: shaders come from ShaderCache, NGX is pre-warmed). // v0.10.0 phase 7: a swap of the parked colour set is no build - const bool building = !(m_ready && cw == m_w && ch == m_h && td.Width == m_fullW && td.Height == m_fullH && - ofw == m_outFullW && ofh == m_outFullH && ow == m_ow && oh == m_oh && - (hdr == m_hdr || (m_park.valid && m_park.hdr == hdr))); + const bool building = !BuiltFor(g, td.Width, td.Height, hdr); LARGE_INTEGER runT0{}, ensT1{}; if (building) QueryPerformanceCounter(&runT0); if (!dev || !Ensure(dev.Get(), td.Width, td.Height, cw, ch, rx, ry, ofw, ofh, ow, oh, hdr)) return false; diff --git a/src/scene_dlaa.h b/src/scene_dlaa.h index 8791c20..0ef4aed 100644 --- a/src/scene_dlaa.h +++ b/src/scene_dlaa.h @@ -184,6 +184,18 @@ class SceneDlaa { // enough for a menu / truck-preview unit (SetMenuUnit) -- camera MVs, depth, RCAS, composite, MV debug. static bool CoreShadersReady(); static bool PrewarmNgx(ID3D11DeviceContext* ctx); + // v0.10.2 mirror units built ahead (the injector's mirror size cache, at boot): + // ReadyFor(fullW, fullH, hdr, area): a Run on a fullW x fullH colour of that kind (RGBA16F = hdr), without upscaling + // (outW = outH = 0), at DLAA area `area`, would NOT (re)build -- its textures + NGX feature exist for exactly those + // sizes (a parked colour set of that kind counts, as in Run). + // Prebuild(ctx, fullW, fullH, hdr): the build the first such Run would do -- the same Ensure call with the same sizes + // (Geometry, the DLAA area in force: the caller sets it as it does around Run), without a frame or a colour texture. + // Render thread, the game's immediate context, compute state saved / restored. It ignores the one-create-per-Present + // budget (meant for the boot / loading screen). The unit's first Run then finds it built (no CreateFeature). false = + // not built: shaders not ready (Deferred) or the build failed -- the unit is left empty (Shutdown), so the live Run + // tries once more instead of finding the size marked failed. + bool ReadyFor(uint32_t fullW, uint32_t fullH, bool hdr, int area) const; + bool Prebuild(ID3D11DeviceContext* ctx, uint32_t fullW, uint32_t fullH, bool hdr); // v0.7.0 output-space rect of the last Run (origin in the full output, size = m_out / m_sharp / NGX target). uint32_t OutRectX() const { return m_oxc; } uint32_t OutRectY() const { return m_oyc; } @@ -315,6 +327,12 @@ class SceneDlaa { // v0.8.0: hdr = build RGBA16F colour textures + an IsHDR feature (part of the "same unit" test). bool Ensure(ID3D11Device* dev, uint32_t fullW, uint32_t fullH, uint32_t cw, uint32_t ch, uint32_t rx, uint32_t ry, uint32_t outFullW, uint32_t outFullH, uint32_t ow, uint32_t oh, bool hdr); + // v0.10.2: the sizes Run derives for a fullW x fullH colour (crop rect at `area`, upscale output rect; outW = outH = 0 = + // no upscale) -- the Ensure arguments -- and Run's "already built for them" test. Shared by Run, Prebuild and ReadyFor. + struct RunGeom { uint32_t cw, ch, rx, ry, ofw, ofh, ow, oh, oxc, oyc; bool up; }; + RunGeom Geometry(uint32_t fullW, uint32_t fullH, uint32_t outW, uint32_t outH, int area) const; + bool BuiltFor(const RunGeom& g, uint32_t fullW, uint32_t fullH, bool hdr) const; + bool m_budgetBypass = false; // v0.10.2: Prebuild's Ensure skips the one-create-per-Present budget // v0.10.0 phase 7: the colour-kind part of Ensure (colorIn / m_out / m_sharp + the NGX feature) for the CURRENT sizes into // the active slots; logs like Ensure. false = failed (the caller tidies up). bool BuildColourSet(ID3D11Device* dev, bool hdr, bool keepsOther); diff --git a/src/xr_hook.cpp b/src/xr_hook.cpp new file mode 100644 index 0000000..32fa13a --- /dev/null +++ b/src/xr_hook.cpp @@ -0,0 +1,1518 @@ +// XrHook -- see xr_hook.h. v0.10.3 phase 27: OpenXR swapchain release hook (GetProcAddress -> negotiation -> GIPA thunks). +#include "xr_hook.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include "MinHook.h" +#include "log.h" + +namespace XrHook { + +namespace { + +// ---- the minimal OpenXR / loader-interface types (openxr.h + openxr_loader_negotiation.h, 1.0; x64 only) ------------ +#define XRH_CALL __stdcall +typedef int32_t XrResult; // >= 0 = success (XR_SUCCEEDED) +typedef uint64_t XrVersion; +typedef void* XrInstance; // XR_DEFINE_HANDLE = a pointer on 64-bit +typedef void* XrSwapchain; +typedef void (XRH_CALL* PFN_xrVoidFunction)(void); +typedef XrResult (XRH_CALL* PFN_xrGetInstanceProcAddr)(XrInstance, const char*, PFN_xrVoidFunction*); +typedef XrResult (XRH_CALL* PFN_xrReleaseSwapchainImage)(XrSwapchain, const void* releaseInfo); +typedef XrResult (XRH_CALL* PFN_xrAcquireSwapchainImage)(XrSwapchain, const void* acquireInfo, uint32_t* index); +typedef XrResult (XRH_CALL* PFN_xrEnumerateSwapchainImages)(XrSwapchain, uint32_t capacity, uint32_t* countOut, void* images); +typedef XrResult (XRH_CALL* PFN_xrDestroySwapchain)(XrSwapchain); +enum : int32_t { // XrLoaderInterfaceStructs + kLisLoaderInfo = 1, kLisApiLayerRequest = 2, kLisRuntimeRequest = 3, +}; +constexpr int32_t kTypeSwapchainImageD3D11 = 1000027001; // XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR +struct XrNegotiateLoaderInfo { + int32_t structType; + uint32_t structVersion; + size_t structSize; + uint32_t minInterfaceVersion, maxInterfaceVersion; + XrVersion minApiVersion, maxApiVersion; +}; +struct XrNegotiateRuntimeRequest { + int32_t structType; + uint32_t structVersion; + size_t structSize; + uint32_t runtimeInterfaceVersion; + XrVersion runtimeApiVersion; + PFN_xrGetInstanceProcAddr getInstanceProcAddr; +}; +struct XrNegotiateApiLayerRequest { + int32_t structType; + uint32_t structVersion; + size_t structSize; + uint32_t layerInterfaceVersion; + XrVersion layerApiVersion; + PFN_xrGetInstanceProcAddr getInstanceProcAddr; + void* createApiLayerInstance; +}; +typedef XrResult (XRH_CALL* PFN_NegRuntime)(const XrNegotiateLoaderInfo*, XrNegotiateRuntimeRequest*); +typedef XrResult (XRH_CALL* PFN_NegLayer)(const XrNegotiateLoaderInfo*, const char* layerName, XrNegotiateApiLayerRequest*); +struct XrSwapchainImageD3D11 { // XrSwapchainImageD3D11KHR + int32_t type; + void* next; + void* texture; // ID3D11Texture2D* +}; +// v0.10.3 phase 28: the view / frame / space types (openxr.h 1.0 layouts; natural x64 alignment matches the C headers) +typedef void* XrSession; +typedef void* XrSpace; +typedef int64_t XrTime; +struct XrQuaternionf { float x, y, z, w; }; +struct XrVector3f { float x, y, z; }; +struct XrPosef { XrQuaternionf orientation; XrVector3f position; }; +struct XrFovf { float angleLeft, angleRight, angleUp, angleDown; }; +struct XrViewLocateInfo { int32_t type; const void* next; int32_t viewConfigurationType; XrTime displayTime; XrSpace space; }; +struct XrViewState { int32_t type; void* next; uint64_t viewStateFlags; }; +struct XrView { int32_t type; void* next; XrPosef pose; XrFovf fov; }; +struct XrReferenceSpaceCreateInfo { int32_t type; const void* next; int32_t referenceSpaceType; XrPosef poseInReferenceSpace; }; +struct XrCompositionLayerBaseHeader { int32_t type; const void* next; uint64_t layerFlags; XrSpace space; }; +struct XrSwapchainSubImage { XrSwapchain swapchain; int32_t x, y, w, h; uint32_t imageArrayIndex; }; // imageRect flattened +struct XrCompositionLayerProjectionView { int32_t type; const void* next; XrPosef pose; XrFovf fov; XrSwapchainSubImage subImage; }; +struct XrCompositionLayerProjection { + int32_t type; const void* next; uint64_t layerFlags; XrSpace space; + uint32_t viewCount; const XrCompositionLayerProjectionView* views; +}; +struct XrFrameEndInfo { + int32_t type; const void* next; XrTime displayTime; int32_t environmentBlendMode; + uint32_t layerCount; const XrCompositionLayerBaseHeader* const* layers; +}; +static_assert(sizeof(XrView) == 64 && sizeof(XrCompositionLayerProjectionView) == 96 && sizeof(XrFrameEndInfo) == 40 && + sizeof(XrCompositionLayerProjection) == 48, "OpenXR struct layout (x64)"); +constexpr int32_t kTypeCompositionLayerProjection = 35; // XR_TYPE_COMPOSITION_LAYER_PROJECTION +constexpr int32_t kViewConfigPrimaryStereo = 2; // XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO +typedef XrResult (XRH_CALL* PFN_xrLocateViews)(XrSession, const XrViewLocateInfo*, XrViewState*, uint32_t, uint32_t*, XrView*); +typedef XrResult (XRH_CALL* PFN_xrEndFrame)(XrSession, const XrFrameEndInfo*); +typedef XrResult (XRH_CALL* PFN_xrCreateReferenceSpace)(XrSession, const XrReferenceSpaceCreateInfo*, XrSpace*); +struct XrSpaceLocation { int32_t type; void* next; uint64_t locationFlags; XrPosef pose; }; // phase 28b (diagnostics) +typedef XrResult (XRH_CALL* PFN_xrLocateSpace)(XrSpace, XrSpace, XrTime, XrSpaceLocation*); +// v0.10.3 phase 29: the overlay quads -- swapchain / quad layer / space types, values and layouts copied from the OpenXR SDK +// header openxr.h (OpenXR-SDK 1.1.62, E:/OpenXR-EyeCapture/build/_deps/openxr_sdk-src/include/openxr/openxr.h) +typedef int64_t XrDuration; +struct XrSwapchainCreateInfo { + int32_t type; const void* next; uint64_t createFlags; uint64_t usageFlags; int64_t format; + uint32_t sampleCount, width, height, faceCount, arraySize, mipCount; +}; +struct XrSwapchainImageAcquireInfo { int32_t type; const void* next; }; +struct XrSwapchainImageWaitInfo { int32_t type; const void* next; XrDuration timeout; }; +struct XrSwapchainImageReleaseInfo { int32_t type; const void* next; }; +struct XrExtent2Df { float width, height; }; +struct XrCompositionLayerQuad { + int32_t type; const void* next; uint64_t layerFlags; XrSpace space; int32_t eyeVisibility; + XrSwapchainSubImage subImage; XrPosef pose; XrExtent2Df size; +}; +static_assert(sizeof(XrSwapchainCreateInfo) == 64 && sizeof(XrSwapchainImageWaitInfo) == 24 && sizeof(XrSwapchainSubImage) == 32 && + sizeof(XrCompositionLayerQuad) == 112 && offsetof(XrCompositionLayerQuad, eyeVisibility) == 32 && + offsetof(XrCompositionLayerQuad, subImage) == 40 && offsetof(XrCompositionLayerQuad, pose) == 72 && + offsetof(XrCompositionLayerQuad, size) == 100 && sizeof(XrReferenceSpaceCreateInfo) == 48, + "OpenXR struct layout (x64)"); +constexpr int32_t kTypeSwapchainCreateInfo = 9; // XR_TYPE_SWAPCHAIN_CREATE_INFO +constexpr int32_t kTypeCompositionLayerQuad = 36; // XR_TYPE_COMPOSITION_LAYER_QUAD +constexpr int32_t kTypeReferenceSpaceCreateInfo = 37; // XR_TYPE_REFERENCE_SPACE_CREATE_INFO +constexpr int32_t kTypeSwapchainImageAcquireInfo = 55; // XR_TYPE_SWAPCHAIN_IMAGE_ACQUIRE_INFO +constexpr int32_t kTypeSwapchainImageWaitInfo = 56; // XR_TYPE_SWAPCHAIN_IMAGE_WAIT_INFO +constexpr int32_t kTypeSwapchainImageReleaseInfo = 57; // XR_TYPE_SWAPCHAIN_IMAGE_RELEASE_INFO +constexpr uint64_t kUsageColorAttachment = 0x00000001; // XR_SWAPCHAIN_USAGE_COLOR_ATTACHMENT_BIT +constexpr uint64_t kUsageSampled = 0x00000020; // XR_SWAPCHAIN_USAGE_SAMPLED_BIT +constexpr uint64_t kLayerBlendSrcAlpha = 0x00000002; // XR_COMPOSITION_LAYER_BLEND_TEXTURE_SOURCE_ALPHA_BIT +constexpr uint64_t kLayerUnpremultiplied = 0x00000004; // XR_COMPOSITION_LAYER_UNPREMULTIPLIED_ALPHA_BIT +constexpr int32_t kEyeVisibilityBoth = 0; // XR_EYE_VISIBILITY_BOTH +constexpr int32_t kRefSpaceView = 1, kRefSpaceLocal = 2; // XR_REFERENCE_SPACE_TYPE_VIEW / _LOCAL +constexpr XrDuration kInfiniteDuration = 0x7fffffffffffffffLL; // XR_INFINITE_DURATION +constexpr XrResult kTimeoutExpired = 1, kErrSessionLost = -17; // XR_TIMEOUT_EXPIRED, XR_ERROR_SESSION_LOST +typedef XrResult (XRH_CALL* PFN_xrEnumerateSwapchainFormats)(XrSession, uint32_t, uint32_t*, int64_t*); +typedef XrResult (XRH_CALL* PFN_xrCreateSwapchain)(XrSession, const XrSwapchainCreateInfo*, XrSwapchain*); +typedef XrResult (XRH_CALL* PFN_xrWaitSwapchainImage)(XrSwapchain, const XrSwapchainImageWaitInfo*); +typedef XrResult (XRH_CALL* PFN_xrDestroySession)(XrSession); +typedef XrResult (XRH_CALL* PFN_xrDestroySpace)(XrSpace); + +// ---- components (one per runtime / layer / loader entry point) -------------------------------------------------------- +enum { kKindRuntime = 0, kKindLayer = 1, kKindLoader = 2 }; +const char* const kKindName[3] = { "runtime", "API layer", "loader DLL" }; +constexpr int kSlots = 8; +struct Slot { + std::atomic realEntry{nullptr}; // what GetProcAddress returned (negotiate fn / loader GIPA): the slot key + std::atomic gipa{nullptr}; // the real xrGetInstanceProcAddr of this component + std::atomic release{nullptr}, acquire{nullptr}, enumerate{nullptr}, destroy{nullptr}; + std::atomic locate{nullptr}, endFrame{nullptr}, createRefSpace{nullptr}; // v0.10.3 phase 28 + std::atomic locateSpace{nullptr}; // phase 28b (diagnostics) + std::atomic destroySession{nullptr}; // phase 29 (the overlay's objects) + std::atomic instance{nullptr}; // phase 29: the last non-null XrInstance this component's GIPA was asked with + int kind = 0; + char module[64] = ""; +}; +Slot s_slot[kSlots]; +std::atomic s_slotN{0}; +std::mutex s_slotMx; // slot creation only (GetProcAddress of the 3 names; rare) + +// ---- the swapchain -> D3D11 image map (outermost calls only = the game's swapchains) ---------------------------------- +constexpr int kSc = 16, kImg = 8, kQ = 4; +struct ScEntry { + void* sc = nullptr; + uint32_t n = 0; + void* img[kImg] = {}; + uint32_t q[kQ] = {}; // acquired, not yet released indices (FIFO: release = the oldest) + int qh = 0, qn = 0; +}; +ScEntry s_sc[kSc]; +SRWLOCK s_scLock = SRWLOCK_INIT; + +// ---- v0.10.3 phase 28: the game's located views (ring) + its last submitted projection layout ------------------------------ +// v0.10.3 phase 28b (ATS VR test 2026-10-11 09:29, Virtual Desktop runtime + its oculus-compatibility layer: "it rotates opposite +// the player's facing direction"; the submitted view-0 pose equalled a located one in only 1736 of 11185 frames, the "lag" flipped +// 0 / 1, the first stereo locate was in a VIEW space while the projection layer is in a LOCAL space): the compositor shows each +// picture with the SUBMITTED pose (xrEndFrame, in the layer's space), not with whatever the game located. So the box is now +// projected with the located pose CORRECTED to the submitted one: at every xrEndFrame, per view and per locate space, +// C = S (x) L^-1 (S = the submitted pose, L = that space's newest locate at the image release = the one the box used) +// and LatestViews hands out C (x) L_newest -- exact when the game submits a fixed transform of what it located (C constant: a +// copy = identity, a seat offset, another space), one frame of head motion off when it does not (the residual of the previous +// C on this frame's L against the actual S is measured at every xrEndFrame: PoseStats). The fov is the submitted one. +constexpr int kRing = 8; +struct LocRec { + uint64_t seq = 0; // 0 = empty + View v[2] = {}; + XrSpace space = nullptr; + uint64_t flags = 0; + LONGLONG qpc = 0; // QueryPerformanceCounter when the locate returned +}; +LocRec s_loc[kRing]; // s_loc[seq % kRing] +uint64_t s_locSeq = 0; // the newest seq (0 = none yet) +struct Pose { double q[4]; double p[3]; }; // q = (x, y, z, w) +constexpr int kLocSpaces = 4; +struct LocSpace { // phase 28b: one per XrSpace the game locates its views in + XrSpace space = nullptr; + int type = 0; + uint64_t count = 0; // stereo locates in it + uint64_t newest = 0; // its newest locate seq + uint64_t atRelease = 0; // ... at the last outermost xrReleaseSwapchainImage + bool haveC = false; + Pose c[2] = {}; // the correction per view, S (x) L^-1 +}; +LocSpace s_lsp[kLocSpaces]; +struct LayoutRec { XrSwapchain sc = nullptr; int32_t rect[4] = {}; uint32_t slice = 0; }; +LayoutRec s_layout[2]; // per view, from the last xrEndFrame's first projection layer +float s_subFov[2][4] = {}; // the submitted fov per view (L, R, U, D) +XrSpace s_layoutSpace = nullptr; +bool s_haveLayout = false; +constexpr int kSpaces = 16; +struct SpaceRec { XrSpace space = nullptr; int type = 0; }; +SpaceRec s_spaces[kSpaces]; // xrCreateReferenceSpace results (outermost = the game's) +int s_spaceNext = 0; +double s_resAngSum = 0.0, s_resPosSum = 0.0, s_resAngMax = 0.0; // residual of the previous C (deg / mm), see above +uint64_t s_resN = 0; +LONGLONG s_diagUntil = 0, s_diagNext = 0; // phase 28b: the once-a-second pose log window (PoseDiagArm) +SRWLOCK s_poseLock = SRWLOCK_INIT; // all of the above (short sections: copies only) +std::atomic s_nLocates{0}, s_nEndFrames{0}, s_nMatched{0}, s_nUnmatched{0}, s_nLocateSpace{0}; + +int SpaceTypeLocked(XrSpace sp) { // under s_poseLock + for (const SpaceRec& r : s_spaces) if (r.space && r.space == sp) return r.type; + return 0; +} +const char* SpaceTypeName(int t) { + return t == 2 ? "LOCAL" : t == 3 ? "STAGE" : t == 1 ? "VIEW" : t == 1000426000 ? "LOCAL_FLOOR" : t ? "other" : "unknown"; +} +// ---- phase 28b: pose maths (unit quaternions (x, y, z, w); a pose maps a point x of its own space to R x + p) ---------- +void QMul(const double a[4], const double b[4], double o[4]) { + const double x = a[3] * b[0] + a[0] * b[3] + a[1] * b[2] - a[2] * b[1]; + const double y = a[3] * b[1] - a[0] * b[2] + a[1] * b[3] + a[2] * b[0]; + const double z = a[3] * b[2] + a[0] * b[1] - a[1] * b[0] + a[2] * b[3]; + const double w = a[3] * b[3] - a[0] * b[0] - a[1] * b[1] - a[2] * b[2]; + o[0] = x; o[1] = y; o[2] = z; o[3] = w; +} +void QRot(const double q[4], const double v[3], double o[3]) { // R(q) v + const double t[3] = { 2.0 * (q[1] * v[2] - q[2] * v[1]), 2.0 * (q[2] * v[0] - q[0] * v[2]), 2.0 * (q[0] * v[1] - q[1] * v[0]) }; + o[0] = v[0] + q[3] * t[0] + (q[1] * t[2] - q[2] * t[1]); + o[1] = v[1] + q[3] * t[1] + (q[2] * t[0] - q[0] * t[2]); + o[2] = v[2] + q[3] * t[2] + (q[0] * t[1] - q[1] * t[0]); +} +void QNorm(double q[4]) { + const double n = std::sqrt(q[0] * q[0] + q[1] * q[1] + q[2] * q[2] + q[3] * q[3]); + if (n > 1e-9) for (int i = 0; i < 4; ++i) q[i] /= n; +} +Pose PoseOf(const View& v) { return Pose{ { v.qx, v.qy, v.qz, v.qw }, { v.px, v.py, v.pz } }; } +Pose PoseOf(const XrPosef& v) { + return Pose{ { v.orientation.x, v.orientation.y, v.orientation.z, v.orientation.w }, { v.position.x, v.position.y, v.position.z } }; +} +Pose Compose(const Pose& a, const Pose& b) { // a (x) b: first b, then a + Pose o; + QMul(a.q, b.q, o.q); + QNorm(o.q); + QRot(a.q, b.p, o.p); + for (int i = 0; i < 3; ++i) o.p[i] += a.p[i]; + return o; +} +Pose Inverse(const Pose& a) { + Pose o{ { -a.q[0], -a.q[1], -a.q[2], a.q[3] }, {} }; + QRot(o.q, a.p, o.p); + for (int i = 0; i < 3; ++i) o.p[i] = -o.p[i]; + return o; +} +// yaw (+ = right) / pitch (+ = up) in degrees of the pose's forward (-z); and the angle between two orientations (deg) +void YawPitch(const double q[4], double* yaw, double* pitch) { + const double f0[3] = { 0.0, 0.0, -1.0 }; + double f[3]; + QRot(q, f0, f); + *yaw = std::atan2(f[0], -f[2]) * 57.29577951308232; + *pitch = std::asin(f[1] < -1.0 ? -1.0 : (f[1] > 1.0 ? 1.0 : f[1])) * 57.29577951308232; +} +double AngleBetween(const double a[4], const double b[4]) { + double d = std::fabs(a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]); + if (d > 1.0) d = 1.0; + return 2.0 * std::acos(d) * 57.29577951308232; +} + +std::atomic s_cb{nullptr}; +std::atomic s_hooked{false}; +std::atomic s_releases{0}, s_releasesMapped{0}; +thread_local int t_depth = 0; // > 0 inside one of our wrapped calls (an inner layer's call: pass through) + +typedef FARPROC (WINAPI* PFN_GetProcAddress)(HMODULE, LPCSTR); +PFN_GetProcAddress oGetProcAddressK32 = nullptr; // kernel32!GetProcAddress (trampoline) +PFN_GetProcAddress oGetProcAddressKb = nullptr; // kernelbase!GetProcAddress (trampoline) + +ScEntry* FindSc(void* sc) { + for (ScEntry& e : s_sc) if (e.sc == sc) return &e; + return nullptr; +} + +// ---- v0.10.3 phase 29: the overlay quads (see xr_hook.h) ------------------------------------------------------------------ +// Our objects belong to ONE session (the one at the game's xrEndFrame): two swapchains (0 = the panel, 1 = the fps box) and a +// VIEW reference space (identity pose) for the head-locked quads, made at the first xrEndFrame that wants a quad, kept for the +// session, dropped at its xrDestroySession (or forgotten when another session ends a frame: they died with the old one). The +// OpenXR functions are resolved through the real xrGetInstanceProcAddr of the component whose thunk handles the game's +// outermost xrEndFrame, with the XrInstance its GIPA was last asked with (the loader's dispatch starts there). +struct OvFns { + PFN_xrEnumerateSwapchainFormats enumFormats = nullptr; + PFN_xrCreateSwapchain createSc = nullptr; + PFN_xrDestroySwapchain destroySc = nullptr; + PFN_xrEnumerateSwapchainImages enumImages = nullptr; + PFN_xrAcquireSwapchainImage acquire = nullptr; + PFN_xrWaitSwapchainImage wait = nullptr; + PFN_xrReleaseSwapchainImage release = nullptr; + PFN_xrCreateReferenceSpace createSpace = nullptr; + PFN_xrDestroySpace destroySpace = nullptr; +}; +struct OvSc { XrSwapchain sc = nullptr; uint32_t w = 0, h = 0, n = 0; void* img[kImg] = {}; }; +struct OvState { + int slot = -1; // the component the functions were resolved at + bool resolved = false; + int resolveTries = 0; + OvFns fn; + XrSession ses = nullptr; // the session our objects belong to + bool ready = false; // swapchains + VIEW space made for `ses` + bool dead = false; // given up for `ses` (create failed / layers rejected / an image we cannot release) + int64_t format = 0; + OvSc sc[2]; // 0 panel, 1 fps box + XrSpace viewSpace = nullptr; + bool have[2] = {}; // quad drawn (and released) for the frame that ends at the next xrEndFrame + uint32_t usedW[2] = {}, usedH[2] = {}; + uint64_t endSeq = 0, relSeq = ~0ull; // xrEndFrame count; the interval the release draw (mode 2) ran in + int mode = 0; // 1 drawn at xrEndFrame, 2 at the game's first release of the frame + int acqRun = 0; // frames in a row with an acquire failure + int lastLock = 0; // the fps box fixed in the cab: params.fpsLock at the last xrEndFrame + XrSpace pivotSpace = nullptr; // ... the layer space the pivot was captured in + bool pivotHave = false; + double pivot[3] = {}, yaw0 = 0.0; // ... non-LOCAL layer spaces: the eyes' midpoint + head yaw at lock-on (rad) + bool zChecked[2] = {}, zFlip[2] = {}; // the quad's +z verified to point back (QRot; OvFacingQuat): 0 the fps box fixed + // in the cab (at the pivot), 1 the quads facing the head (phase 29b) + bool firstLog[3] = {}; // first panel / follow-head / fixed fps quad logged + bool fovBadLogged = false, capLogged = false; +}; +OvState s_ov; +std::mutex s_ovMx; // s_ov (xrEndFrame, the release draw, xrDestroySession); never held over the real xrEndFrame +OverlayParams s_ovPar; +SRWLOCK s_ovParLock = SRWLOCK_INIT; +std::atomic s_ovCb{nullptr}; +std::atomic s_ovOk[2] = {}; // OverlayActive (+ s_ovOkQpc: the last xrEndFrame that set them) +std::atomic s_ovOkQpc{0}; +std::atomic s_ovFrames{0}, s_ovPanel{0}, s_ovFps{0}, s_ovCreateFails{0}, s_ovAcqFails{0}, s_ovWaitFails{0}, + s_ovRelFails{0}, s_ovDrawFails{0}, s_ovRejects{0}; +std::atomic s_ovMode{0}, s_ovFixedHow{0}, s_ovFixedType{0}; +std::atomic s_ovFormat{0}; +std::atomic s_ovReady{false}; +constexpr int kOvMaxLayers = 16; // the game's layers + ours (more: no quads this frame) + +OverlayParams OvParams() { + AcquireSRWLockShared(&s_ovParLock); + const OverlayParams p = s_ovPar; + ReleaseSRWLockShared(&s_ovParLock); + return p; +} +const char* OvFormatName(int64_t f) { + return f == 29 ? "R8G8B8A8_UNORM_SRGB" : f == 91 ? "B8G8R8A8_UNORM_SRGB" : f == 28 ? "R8G8B8A8_UNORM" : + f == 87 ? "B8G8R8A8_UNORM" : "?"; +} +void OvSetOk(bool panel, bool fps) { + LARGE_INTEGER now; + QueryPerformanceCounter(&now); + s_ovOk[0].store(panel, std::memory_order_relaxed); + s_ovOk[1].store(fps, std::memory_order_relaxed); + s_ovOkQpc.store(now.QuadPart, std::memory_order_release); +} +// under s_ovMx: the functions through component i's real GIPA +void OvResolveLocked(int i) { + s_ov.slot = i; + s_ov.resolved = false; + ++s_ov.resolveTries; + auto gipa = reinterpret_cast(s_slot[i].gipa.load(std::memory_order_acquire)); + XrInstance inst = s_slot[i].instance.load(std::memory_order_acquire); + if (!gipa || !inst) { + if (s_ov.resolveTries <= 3) + Log("OpenXR overlay: cannot resolve the swapchain functions yet at the %s %s (GIPA %p, instance %p) -- the VR panel " + "stays in the eye picture", kKindName[s_slot[i].kind], s_slot[i].module, reinterpret_cast(gipa), inst); + return; + } + static const char* const kNames[9] = { "xrEnumerateSwapchainFormats", "xrCreateSwapchain", "xrDestroySwapchain", + "xrEnumerateSwapchainImages", "xrAcquireSwapchainImage", "xrWaitSwapchainImage", + "xrReleaseSwapchainImage", "xrCreateReferenceSpace", "xrDestroySpace" }; + void* f[9] = {}; + int missing = -1; + for (int k = 0; k < 9; ++k) { + PFN_xrVoidFunction fp = nullptr; + ++t_depth; + const XrResult r = gipa(inst, kNames[k], &fp); + --t_depth; + f[k] = r >= 0 ? reinterpret_cast(fp) : nullptr; + if (!f[k] && missing < 0) missing = k; + } + if (missing >= 0) { + if (s_ov.resolveTries <= 3) + Log("OpenXR overlay: %s not resolved at the %s %s (instance %p) -- the VR panel stays in the eye picture", + kNames[missing], kKindName[s_slot[i].kind], s_slot[i].module, inst); + return; + } + OvFns& o = s_ov.fn; + o.enumFormats = reinterpret_cast(f[0]); + o.createSc = reinterpret_cast(f[1]); + o.destroySc = reinterpret_cast(f[2]); + o.enumImages = reinterpret_cast(f[3]); + o.acquire = reinterpret_cast(f[4]); + o.wait = reinterpret_cast(f[5]); + o.release = reinterpret_cast(f[6]); + o.createSpace = reinterpret_cast(f[7]); + o.destroySpace = reinterpret_cast(f[8]); + s_ov.resolved = true; + Log("OpenXR overlay: swapchain / space functions resolved at the %s %s (slot %d = the game's outermost xrEndFrame, " + "instance %p)", kKindName[s_slot[i].kind], s_slot[i].module, i, inst); +} +// under s_ovMx: our swapchains + space go (destroy = through the runtime; false = they died with the session already) +void OvDropLocked(bool destroy) { + const OvFns& o = s_ov.fn; + for (OvSc& c : s_ov.sc) { + if (destroy && c.sc && o.destroySc) { ++t_depth; o.destroySc(c.sc); --t_depth; } + c = OvSc(); + } + if (destroy && s_ov.viewSpace && o.destroySpace) { ++t_depth; o.destroySpace(s_ov.viewSpace); --t_depth; } + s_ov.viewSpace = nullptr; + s_ov.ready = false; + s_ov.have[0] = s_ov.have[1] = false; + s_ov.pivotHave = false; + s_ov.pivotSpace = nullptr; + s_ovReady.store(false, std::memory_order_relaxed); +} +// under s_ovMx: the two swapchains (+ their D3D11 images) and the VIEW space for session `ses`. False = failed (logged; the +// session is given up: dead). +bool OvCreateLocked(XrSession ses, const OverlayParams& par) { + const OvFns& o = s_ov.fn; + auto fail = [&](const char* what, XrResult r) { + s_ovCreateFails.fetch_add(1, std::memory_order_relaxed); + Log("OpenXR overlay: %s failed (result %d) -- the VR panel / fps box stay in the eye picture for this session", what, r); + OvDropLocked(true); + s_ov.dead = true; + return false; + }; + // the format: an _SRGB one first (the compositor reads a non-sRGB 8-bit image as LINEAR: the dark panel would band) + int64_t fmts[64] = {}; + uint32_t nf = 0; + ++t_depth; + XrResult r = o.enumFormats(ses, 0, &nf, nullptr); + if (r >= 0) { if (nf > 64) nf = 64; r = o.enumFormats(ses, nf, &nf, fmts); } + --t_depth; + if (r < 0) return fail("xrEnumerateSwapchainFormats", r); + if (nf > 64) nf = 64; + static const int64_t kPref[4] = { 29, 91, 28, 87 }; // R8G8B8A8_UNORM_SRGB, B8G8R8A8_UNORM_SRGB, R8G8B8A8_UNORM, B8G8R8A8_UNORM + int64_t pick = 0; + for (int64_t want : kPref) { + for (uint32_t k = 0; k < nf && !pick; ++k) if (fmts[k] == want) pick = want; + if (pick) break; + } + char list[256] = ""; + for (uint32_t k = 0, at = 0; k < nf && at < sizeof(list) - 24; ++k) + at += (uint32_t)snprintf(list + at, sizeof(list) - at, "%s%lld", k ? " " : "", (long long)fmts[k]); + if (!pick) { + Log("OpenXR overlay: the runtime offers none of the 8-bit RGBA swapchain formats (offered: %s)", list); + return fail("picking a swapchain format", 0); + } + const uint32_t sw[2] = { par.panelW, par.fpsW }, sh[2] = { par.panelH, par.fpsH }; + for (int k = 0; k < 2; ++k) { + OvSc& c = s_ov.sc[k]; + if (sw[k] < 16 || sh[k] < 16 || sw[k] > 4096 || sh[k] > 4096) return fail("the overlay image size check", 0); + XrSwapchainCreateInfo ci{}; + ci.type = kTypeSwapchainCreateInfo; + ci.usageFlags = kUsageColorAttachment | kUsageSampled; + ci.format = pick; + ci.sampleCount = 1; ci.width = sw[k]; ci.height = sh[k]; ci.faceCount = 1; ci.arraySize = 1; ci.mipCount = 1; + ++t_depth; + r = o.createSc(ses, &ci, &c.sc); + --t_depth; + if (r < 0 || !c.sc) { c.sc = nullptr; return fail(k ? "xrCreateSwapchain (fps box)" : "xrCreateSwapchain (panel)", r); } + c.w = sw[k]; c.h = sh[k]; + uint32_t ni = 0; + XrSwapchainImageD3D11 im[kImg] = {}; + for (XrSwapchainImageD3D11& e : im) e.type = kTypeSwapchainImageD3D11; + ++t_depth; + r = o.enumImages(c.sc, 0, &ni, nullptr); + if (r >= 0 && ni >= 1 && ni <= (uint32_t)kImg) r = o.enumImages(c.sc, ni, &ni, im); + --t_depth; + if (r < 0 || ni < 1 || ni > (uint32_t)kImg || !im[0].texture) + return fail("xrEnumerateSwapchainImages (D3D11) of our swapchain", r < 0 ? r : (XrResult)ni); + c.n = ni; + for (uint32_t m = 0; m < ni; ++m) c.img[m] = im[m].texture; + } + XrReferenceSpaceCreateInfo si{}; + si.type = kTypeReferenceSpaceCreateInfo; + si.referenceSpaceType = kRefSpaceView; + si.poseInReferenceSpace.orientation.w = 1.0f; + ++t_depth; + r = o.createSpace(ses, &si, &s_ov.viewSpace); + --t_depth; + if (r < 0 || !s_ov.viewSpace) { s_ov.viewSpace = nullptr; return fail("xrCreateReferenceSpace (VIEW)", r); } + s_ov.format = pick; + s_ov.ready = true; + s_ovFormat.store(pick, std::memory_order_relaxed); + s_ovReady.store(true, std::memory_order_relaxed); + Log("OpenXR overlay: session %p -- panel swapchain %p %ux%u (%u images, first %p), fps box swapchain %p %ux%u (%u images), " + "format %lld = %s (offered: %s), our VIEW space %p; the VR panel / fps box are quad layers from now on (tid=%lu)", ses, + s_ov.sc[0].sc, s_ov.sc[0].w, s_ov.sc[0].h, s_ov.sc[0].n, s_ov.sc[0].img[0], s_ov.sc[1].sc, s_ov.sc[1].w, s_ov.sc[1].h, + s_ov.sc[1].n, (long long)pick, OvFormatName(pick), list, s_ov.viewSpace, GetCurrentThreadId()); + return true; +} +// under s_ovMx, t_depth > 0: one image of quad `which`: acquire, wait, the draw callback, release. True = drawn + released +// (s_ov.have / usedW / usedH set). +bool OvDrawLocked(int which) { + const OvFns& o = s_ov.fn; + OvSc& c = s_ov.sc[which]; + uint32_t idx = 0; + const XrSwapchainImageAcquireInfo ai{ kTypeSwapchainImageAcquireInfo, nullptr }; + XrResult r = o.acquire(c.sc, &ai, &idx); + if (r < 0) { + const uint64_t n = s_ovAcqFails.fetch_add(1, std::memory_order_relaxed); + if (n < 4) Log("OpenXR overlay: xrAcquireSwapchainImage of our %s swapchain failed (result %d)", which ? "fps box" : "panel", r); + if (r == kErrSessionLost) s_ov.dead = true; + return false; + } + const XrSwapchainImageWaitInfo wi{ kTypeSwapchainImageWaitInfo, nullptr, kInfiniteDuration }; + r = o.wait(c.sc, &wi); + if (r < 0 || r == kTimeoutExpired) { // an acquired image we may not release: the session is given up + s_ovWaitFails.fetch_add(1, std::memory_order_relaxed); + Log("OpenXR overlay: xrWaitSwapchainImage of our %s swapchain failed (result %d) -- the quad path is off for this session", + which ? "fps box" : "panel", r); + s_ov.dead = true; + return false; + } + OverlayDraw d; + d.which = which; + d.tex = idx < c.n ? c.img[idx] : nullptr; + d.w = c.w; d.h = c.h; + d.format = s_ov.format; + bool drew = false; + if (d.tex) + if (OverlayDrawFn cb = s_ovCb.load(std::memory_order_acquire)) drew = cb(&d); + if (drew) { + if (d.usedW > c.w) d.usedW = c.w; + if (d.usedH > c.h) d.usedH = c.h; + if (d.usedW < 4 || d.usedH < 4) drew = false; + } + if (!drew) s_ovDrawFails.fetch_add(1, std::memory_order_relaxed); + const XrSwapchainImageReleaseInfo ri{ kTypeSwapchainImageReleaseInfo, nullptr }; + r = o.release(c.sc, &ri); + if (r < 0) { + s_ovRelFails.fetch_add(1, std::memory_order_relaxed); + Log("OpenXR overlay: xrReleaseSwapchainImage of our %s swapchain failed (result %d) -- the quad path is off for this session", + which ? "fps box" : "panel", r); + s_ov.dead = true; + return false; + } + if (!drew) return false; + s_ov.have[which] = true; + s_ov.usedW[which] = d.usedW; + s_ov.usedH[which] = d.usedH; + return true; +} +// under s_ovMx: the wanted quads drawn now (both paths); 60 frames in a row with an acquire failure give up the session +void OvDrawWantedLocked(const OverlayParams& par) { + const uint64_t a0 = s_ovAcqFails.load(std::memory_order_relaxed); + ++t_depth; + if (par.menuOpen && !s_ov.dead) OvDrawLocked(0); + if (par.fpsShow && !s_ov.dead) OvDrawLocked(1); + --t_depth; + const bool acqFail = s_ovAcqFails.load(std::memory_order_relaxed) != a0; + s_ov.acqRun = acqFail ? s_ov.acqRun + 1 : 0; + if (s_ov.acqRun >= 60 && !s_ov.dead) { + s_ov.dead = true; + Log("OpenXR overlay: 60 frames in a row without an image of our swapchains -- the quad path is off for this session"); + } +} +// rotation of `ang` rad about the +y / +x axis as a quaternion (x, y, z, w) +void QAxisY(double ang, double q[4]) { q[0] = 0.0; q[1] = std::sin(0.5 * ang); q[2] = 0.0; q[3] = std::cos(0.5 * ang); } +void QAxisX(double ang, double q[4]) { q[0] = std::sin(0.5 * ang); q[1] = 0.0; q[2] = 0.0; q[3] = std::cos(0.5 * ang); } +// v0.10.3 phase 29b (factored out of the phase 29 fixed-in-cab box): the orientation that turns a quad to FACE back along `dir` +// (unit, from the point it faces -- the pivot / the VIEW-space origin = the head -- to the quad centre). The quad is seen from +// its +z side: R(q) (0,0,1) must be -dir, +y up (no roll): yaw = atan2(dir.x, -dir.z), pitch = asin(dir.y), q = rot_y(-yaw) (x) +// rot_x(pitch). Verified numerically with QRot once per kind `k` (0 the fps box fixed in the cab, 1 the quads facing the head) +// at its first use off the axis (> 0.5 deg; on the axis q is the identity) and logged; a negative result turns it 180 deg about +// its y axis from then on (a sign slip would show the back side). `what` / `to` name the quad and the point (log). Under s_ovMx. +void OvFacingQuat(int k, const char* what, const char* to, const double dir[3], double rq[4]) { + const double kRad = 0.017453292519943295; + const double yaw = std::atan2(dir[0], -dir[2]); + const double pitch = std::asin(dir[1] < -1.0 ? -1.0 : (dir[1] > 1.0 ? 1.0 : dir[1])); + double qy[4], qx[4]; + QAxisY(-yaw, qy); + QAxisX(pitch, qx); + QMul(qy, qx, rq); + QNorm(rq); + if (!s_ov.zChecked[k] && (std::fabs(yaw) > 0.5 * kRad || std::fabs(pitch) > 0.5 * kRad)) { + const double z0[3] = { 0.0, 0.0, 1.0 }, y0[3] = { 0.0, 1.0, 0.0 }; + double zr[3], yr[3]; + QRot(rq, z0, zr); + QRot(rq, y0, yr); + const double dot = -(zr[0] * dir[0] + zr[1] * dir[1] + zr[2] * dir[2]); + s_ov.zChecked[k] = true; + s_ov.zFlip[k] = dot < 0.0; + Log("OpenXR overlay: %s quad orientation check: yaw %+.1f pitch %+.1f deg, R(q)(0,0,1) = (%+.3f %+.3f %+.3f) vs back-to-%s " + "(%+.3f %+.3f %+.3f): dot %+.3f -> %s; R(q)(0,1,0) = (%+.3f %+.3f %+.3f)", what, yaw / kRad, pitch / kRad, zr[0], zr[1], + zr[2], to, -dir[0], -dir[1], -dir[2], dot, + dot > 0.999 ? "OK (faces it)" : (dot < 0.0 ? "POINTS AWAY: turned 180 deg about its y axis from now on" : "NOT exact (kept)"), + yr[0], yr[1], yr[2]); + } + if (s_ov.zFlip[k]) { + double f180[4], t[4]; + QAxisY(3.141592653589793, f180); + QMul(rq, f180, t); + memcpy(rq, t, sizeof(t)); + QNorm(rq); + } +} +// under s_ovMx: the quad layer of `which` from the frame's projection layer `proj` (its space, view 0's submitted fov, the +// submitted poses for the pivot). False = not placeable (bad fov). +bool OvBuildQuadLocked(int which, const OverlayParams& par, const XrCompositionLayerProjection* proj, XrCompositionLayerQuad& q) { + const XrFovf& f = proj->views[0].fov; + const double tl = std::tan((double)f.angleLeft), tr = std::tan((double)f.angleRight); + const double tu = std::tan((double)f.angleUp), tdn = std::tan((double)f.angleDown); + const double fw = tr - tl, fh = tu - tdn; + if (!(fw > 0.1 && fw < 20.0) || !(fh > 0.1 && fh < 20.0)) { + if (!s_ov.fovBadLogged) { + s_ov.fovBadLogged = true; + Log("OpenXR overlay: the submitted view 0 fov (L%+.1f R%+.1f U%+.1f D%+.1f deg) is not usable -- no quads", + f.angleLeft * 57.29578, f.angleRight * 57.29578, f.angleUp * 57.29578, f.angleDown * 57.29578); + } + return false; + } + q = XrCompositionLayerQuad{}; + q.type = kTypeCompositionLayerQuad; + q.layerFlags = kLayerBlendSrcAlpha | kLayerUnpremultiplied; + q.eyeVisibility = kEyeVisibilityBoth; + q.subImage.swapchain = s_ov.sc[which].sc; + q.subImage.x = 0; q.subImage.y = 0; + q.subImage.w = (int32_t)s_ov.usedW[which]; q.subImage.h = (int32_t)s_ov.usedH[which]; + q.subImage.imageArrayIndex = 0; + const double aspect = (double)s_ov.usedH[which] / (double)s_ov.usedW[which]; + const double kRad = 0.017453292519943295; + double pos[3] = { 0.0, 0.0, 0.0 }, rq[4] = { 0.0, 0.0, 0.0, 1.0 }, wM = 0.0; + int logIdx = which; // 0 panel, 1 fps follows the head, 2 fps fixed in the cab + int how = 0, lt = 0; + // v0.10.3 phase 29b, menu_vr_face = 1: a VIEW-space quad at `pos` (d ahead) turned to FACE the head (the VIEW origin), its + // size times |pos| / d so it keeps the angle it has straight ahead (the phase 16 "same size from every angle"); 0 = parallel + // to the view plane (identity: a flat picture seen at an angle off the axis, as phase 29) + auto faceHead = [&](double d, const char* what) { + const double r = std::sqrt(pos[0] * pos[0] + pos[1] * pos[1] + pos[2] * pos[2]); + if (!par.menuFace || !(r > 1e-6)) return; + const double dir[3] = { pos[0] / r, pos[1] / r, pos[2] / r }; + OvFacingQuat(1, what, "head", dir, rq); + wM *= r / d; + }; + if (which == 0) { // the panel: VIEW space, menu_vr_dist ahead (phase 29b: was 1 m) + const double d = par.menuDist >= 0.3f && par.menuDist <= 3.0f ? (double)par.menuDist : 1.0; + wM = d * fw * 0.54 * (double)par.menuScale; // (scales with d: the same angle at every distance) + pos[0] = d * fw * (double)par.menuX / 100.0; + pos[1] = -d * fh * (double)par.menuY / 100.0; + pos[2] = -d; + faceHead(d, "panel facing the head"); + q.space = s_ov.viewSpace; + } else { + const double d = 0.8; // the fps box: 0.8 m (the phase 28 anchor distance) + wM = d * fw * 0.08 * (double)par.fpsScale; + if (par.fpsLock) { + AcquireSRWLockShared(&s_poseLock); + lt = SpaceTypeLocked(proj->space); + ReleaseSRWLockShared(&s_poseLock); + } + if (par.fpsLock && lt != kRefSpaceView) { // fixed in the cab: the game's projection-layer space + if (!s_ov.lastLock || proj->space != s_ov.pivotSpace) { s_ov.pivotHave = false; s_ov.pivotSpace = proj->space; } + double piv[3] = { 0.0, 0.0, 0.0 }, yaw0 = 0.0; + if (lt == kRefSpaceLocal) { + how = 1; // LOCAL: its origin is the seat, its -z the seat's forward + } else { + how = 2; // other / unknown: a pivot from the submitted views, once per lock-on + if (!s_ov.pivotHave) { + const XrPosef& a = proj->views[0].pose; + const XrPosef& b = proj->views[1].pose; + s_ov.pivot[0] = 0.5 * ((double)a.position.x + (double)b.position.x); + s_ov.pivot[1] = 0.5 * ((double)a.position.y + (double)b.position.y); + s_ov.pivot[2] = 0.5 * ((double)a.position.z + (double)b.position.z); + const Pose pa = PoseOf(a); + double yd = 0.0, pd = 0.0; + YawPitch(pa.q, &yd, &pd); + s_ov.yaw0 = yd * kRad; + s_ov.pivotHave = true; + Log("OpenXR overlay: fps box fixed in the cab -- layer space %p type %d (%s): the anchor turns around a PIVOT " + "captured now from the submitted views: the eyes' midpoint (%+.3f %+.3f %+.3f) m, head yaw %+.1f deg", + proj->space, lt, SpaceTypeName(lt), s_ov.pivot[0], s_ov.pivot[1], s_ov.pivot[2], yd); + } + piv[0] = s_ov.pivot[0]; piv[1] = s_ov.pivot[1]; piv[2] = s_ov.pivot[2]; + yaw0 = s_ov.yaw0; + } + const double yaw = yaw0 + (double)par.fpsX * kRad, pitch = -(double)par.fpsY * kRad; + const double dir[3] = { std::sin(yaw) * std::cos(pitch), std::sin(pitch), -std::cos(yaw) * std::cos(pitch) }; + for (int k = 0; k < 3; ++k) pos[k] = piv[k] + d * dir[k]; + OvFacingQuat(0, "fps box fixed-in-cab", "pivot", dir, rq); // faces the pivot (phase 29b: the shared helper) + q.space = proj->space; + logIdx = 2; + } else { // follows the head (or the layer space is a VIEW space) + how = par.fpsLock ? 3 : 0; + pos[0] = d * fw * (double)par.fpsX / 100.0; + pos[1] = -d * fh * (double)par.fpsY / 100.0; + pos[2] = -d; + faceHead(d, "fps box facing the head"); // phase 29b: menu_vr_face, as the panel + q.space = s_ov.viewSpace; + } + if (par.fpsLock) { s_ovFixedHow.store(how, std::memory_order_relaxed); s_ovFixedType.store(lt, std::memory_order_relaxed); } + } + q.pose.orientation.x = (float)rq[0]; q.pose.orientation.y = (float)rq[1]; + q.pose.orientation.z = (float)rq[2]; q.pose.orientation.w = (float)rq[3]; + q.pose.position.x = (float)pos[0]; q.pose.position.y = (float)pos[1]; q.pose.position.z = (float)pos[2]; + q.size.width = (float)wM; + q.size.height = (float)(wM * aspect); + if (!s_ov.firstLog[logIdx]) { + s_ov.firstLog[logIdx] = true; + static const char* const kWhat[3] = { "panel (VIEW space, ours)", "fps box following the head (VIEW space, ours)", + "fps box FIXED IN THE CAB (the game's projection-layer space)" }; + Log("OpenXR overlay: first %s quad -- space %p, pose q=(%+.3f %+.3f %+.3f %+.3f) p=(%+.3f %+.3f %+.3f) m, size %.3f x %.3f m, " + "sub-image %dx%d of %ux%u px; view 0 fov tangents L%+.3f R%+.3f U%+.3f D%+.3f%s%s", kWhat[logIdx], q.space, + rq[0], rq[1], rq[2], rq[3], pos[0], pos[1], pos[2], wM, wM * aspect, q.subImage.w, q.subImage.h, s_ov.sc[which].w, + s_ov.sc[which].h, tl, tr, tu, tdn, + how == 3 ? " (fixed in the cab asked, but the layer space is a VIEW space: head-locked)" : "", + logIdx == 2 ? "" : (par.menuFace ? "; menu_vr_face=1: turned to face the head (phase 29b)" + : "; menu_vr_face=0: parallel to the view plane")); + } + return true; +} +// The game's outermost xrEndFrame (`proj` = its first stereo projection layer; null = none this frame): the wanted quads +// (drawn here on the render thread, or at the game's first release of the frame -- mode 2) appended after the game's layers +// into outFe / outLayers / quads (the caller's arrays). True = outFe is the frame to submit. +bool OvEndFrame(int i, XrSession ses, const XrFrameEndInfo* fe, const XrCompositionLayerProjection* proj, XrFrameEndInfo* outFe, + const XrCompositionLayerBaseHeader** outLayers, XrCompositionLayerQuad* quads) { + const OverlayParams par = OvParams(); + std::lock_guard lk(s_ovMx); + struct EndSeq { uint64_t& s; ~EndSeq() { ++s; } } endSeq{ s_ov.endSeq }; // this frame's release-draw interval ends + bool have[2] = { s_ov.have[0], s_ov.have[1] }; + s_ov.have[0] = s_ov.have[1] = false; + if (!par.enabled) { OvSetOk(false, false); return false; } + if (ses != s_ov.ses) { + if (s_ov.ses) + Log("OpenXR overlay: xrEndFrame of another session (%p, was %p) -- our swapchains / space of the old one are forgotten " + "(they died with it)", ses, s_ov.ses); + OvDropLocked(false); + s_ov.ses = ses; + s_ov.dead = false; + have[0] = have[1] = false; + } + if (!proj) return false; // no picture this frame: nothing to place the quads against + const bool want[2] = { par.menuOpen, par.fpsShow }; + if (!s_ov.resolved || s_ov.slot != i) { + if (s_ov.slot != i) s_ov.resolveTries = 0; + if (s_ov.resolveTries < 3 && (want[0] || want[1])) OvResolveLocked(i); + } + if (!s_ov.resolved || s_ov.dead) { OvSetOk(false, false); return false; } + if (!s_ov.ready) { + if (!(want[0] || want[1])) { OvSetOk(false, false); return false; } // made at the first frame that wants a quad + if (!OvCreateLocked(ses, par)) { OvSetOk(false, false); return false; } + } + // the thread: the draw needs the game's immediate context (the render thread, drawTid) + const unsigned long tid = GetCurrentThreadId(); + const int mode = (par.drawTid && tid == par.drawTid) ? 1 : 2; + if (mode != s_ov.mode) { + static int s_logs = 0; + if (s_logs++ < 6) + Log("OpenXR overlay: the game's xrEndFrame runs on tid=%lu, the render thread is tid=%lu -> the quads are drawn %s", tid, + par.drawTid, mode == 1 ? "AT xrEndFrame (same thread)" : "at the game's first xrReleaseSwapchainImage of each " + "frame on the render thread (another thread ends the frame; the layers are appended here)"); + s_ov.mode = mode; + s_ovMode.store(mode, std::memory_order_relaxed); + } + if (mode == 1) { + OvDrawWantedLocked(par); + have[0] = s_ov.have[0]; have[1] = s_ov.have[1]; + s_ov.have[0] = s_ov.have[1] = false; + } + if (s_ov.dead) { OvSetOk(false, false); return false; } + int nq = 0; + bool ok[2] = { !want[0], !want[1] }; // not wanted = fine (nothing to draw into the picture either) + const int nGame = (int)fe->layerCount; + if (nGame + 2 > kOvMaxLayers) { + if (!s_ov.capLogged) { + s_ov.capLogged = true; + Log("OpenXR overlay: the game submits %d layers (we append ours up to %d in all) -- no quads in such frames", nGame, + kOvMaxLayers); + } + OvSetOk(ok[0], ok[1]); + return false; + } + // phase 29b: the later layer is drawn on top -- the panel last when it sits nearer than the fps box's 0.8 m (menu_vr_dist) + const bool panelTop = par.menuDist < 0.8f; + for (int k = 0; k < 2; ++k) { + const int w = panelTop ? 1 - k : k; + if (!want[w] || !have[w]) continue; + if (!OvBuildQuadLocked(w, par, proj, quads[nq])) continue; + ++nq; + ok[w] = true; + (w ? s_ovFps : s_ovPanel).fetch_add(1, std::memory_order_relaxed); + } + s_ov.lastLock = par.fpsLock; + OvSetOk(ok[0], ok[1]); + if (!nq) return false; + for (int k = 0; k < nGame; ++k) outLayers[k] = fe->layers[k]; + for (int k = 0; k < nq; ++k) outLayers[nGame + k] = reinterpret_cast(&quads[k]); + *outFe = *fe; + outFe->layerCount = (uint32_t)(nGame + nq); + outFe->layers = outLayers; + s_ovFrames.fetch_add(1, std::memory_order_relaxed); + return true; +} +// The runtime refused the frame with our layers (result r): counted, logged, the quad path off for this session. +void OvRejected(XrResult r) { + std::lock_guard lk(s_ovMx); + s_ovRejects.fetch_add(1, std::memory_order_relaxed); + Log("OpenXR overlay: the runtime REJECTED xrEndFrame with our quad layers (result %d) -- the frame was submitted again without " + "them; the VR panel / fps box go back into the eye picture for this session", r); + s_ov.dead = true; + OvSetOk(false, false); +} +// Mode 2 (another thread ends the frame): the game's outermost xrReleaseSwapchainImage on the render thread draws the wanted +// quads once per frame (the first release after an xrEndFrame); xrEndFrame appends them. +void OvAtRelease() { + if (s_ovMode.load(std::memory_order_relaxed) != 2) return; + const OverlayParams par = OvParams(); + if (!par.enabled || !(par.menuOpen || par.fpsShow) || !par.drawTid || GetCurrentThreadId() != par.drawTid) return; + std::lock_guard lk(s_ovMx); + if (!s_ov.ready || s_ov.dead || s_ov.mode != 2 || s_ov.relSeq == s_ov.endSeq) return; + s_ov.relSeq = s_ov.endSeq; + OvDrawWantedLocked(par); + if (s_ov.have[0]) s_ovOk[0].store(true, std::memory_order_relaxed); // (this frame's in-picture draw follows: skip it) + if (s_ov.have[1]) s_ovOk[1].store(true, std::memory_order_relaxed); +} + +// ---- the per-slot implementations --------------------------------------------------------------------------------------- +XrResult EnumerateImpl(int i, XrSwapchain sc, uint32_t cap, uint32_t* cnt, void* images) { + auto real = reinterpret_cast(s_slot[i].enumerate.load(std::memory_order_acquire)); + if (!real) return -1; // XR_ERROR_VALIDATION_FAILURE (never: the thunk is only handed out with it) + const bool outer = t_depth == 0; + ++t_depth; + const XrResult r = real(sc, cap, cnt, images); + --t_depth; + if (outer && r >= 0 && cap > 0 && cnt && images) { + const XrSwapchainImageD3D11* im = static_cast(images); + if (im[0].type == kTypeSwapchainImageD3D11) { + const uint32_t n = (std::min)((std::min)(*cnt, cap), (uint32_t)kImg); + AcquireSRWLockExclusive(&s_scLock); + ScEntry* e = FindSc(sc); + if (!e) e = FindSc(nullptr); + if (!e) e = &s_sc[(uintptr_t)sc % kSc]; // table full (swapchains never destroyed through us): overwrite one + *e = ScEntry(); + e->sc = sc; + e->n = n; + for (uint32_t k = 0; k < n; ++k) e->img[k] = im[k].texture; + ReleaseSRWLockExclusive(&s_scLock); + static std::atomic s_logs{0}; + if (s_logs.fetch_add(1, std::memory_order_relaxed) < 8) + Log("OpenXR hook: swapchain %p has %u D3D11 image(s) (first %p) -- mapped for the VR panel's release draw " + "(via the %s %s, tid=%lu)", sc, *cnt, im[0].texture, kKindName[s_slot[i].kind], s_slot[i].module, + GetCurrentThreadId()); + } + } + return r; +} +XrResult AcquireImpl(int i, XrSwapchain sc, const void* info, uint32_t* index) { + auto real = reinterpret_cast(s_slot[i].acquire.load(std::memory_order_acquire)); + if (!real) return -1; + const bool outer = t_depth == 0; + ++t_depth; + const XrResult r = real(sc, info, index); + --t_depth; + if (outer && r >= 0 && index) { + AcquireSRWLockExclusive(&s_scLock); + if (ScEntry* e = FindSc(sc)) { + if (e->qn == kQ) { e->qh = (e->qh + 1) % kQ; --e->qn; } // (never: a runtime allows few acquires) drop the oldest + e->q[(e->qh + e->qn) % kQ] = *index; + ++e->qn; + } + ReleaseSRWLockExclusive(&s_scLock); + } + return r; +} +XrResult ReleaseImpl(int i, XrSwapchain sc, const void* info) { + auto real = reinterpret_cast(s_slot[i].release.load(std::memory_order_acquire)); + if (!real) return -1; + if (t_depth == 0) { + void* tex = nullptr; + AcquireSRWLockExclusive(&s_scLock); + if (ScEntry* e = FindSc(sc)) { + if (e->qn > 0) { + const uint32_t idx = e->q[e->qh]; + e->qh = (e->qh + 1) % kQ; + --e->qn; + if (idx < e->n) tex = e->img[idx]; + } + } + ReleaseSRWLockExclusive(&s_scLock); + AcquireSRWLockExclusive(&s_poseLock); // v0.10.3 phase 28b: each locate space's newest locate at this release + for (LocSpace& e : s_lsp) e.atRelease = e.newest; // (= the L the box was drawn with: the correction's reference) + ReleaseSRWLockExclusive(&s_poseLock); + s_releases.fetch_add(1, std::memory_order_relaxed); + if (tex) s_releasesMapped.fetch_add(1, std::memory_order_relaxed); + static std::atomic s_logged{false}; + if (!s_logged.exchange(true)) + Log("OpenXR hook: first xrReleaseSwapchainImage seen (swapchain %p, image %p%s; via the %s %s, tid=%lu)", sc, tex, + tex ? "" : " = NOT mapped: no D3D11 xrEnumerateSwapchainImages / xrAcquireSwapchainImage seen for it", + kKindName[s_slot[i].kind], s_slot[i].module, GetCurrentThreadId()); + OvAtRelease(); // v0.10.3 phase 29: the quads, when another thread ends the frame (mode 2) + if (ReleaseFn cb = s_cb.load(std::memory_order_acquire)) { + ++t_depth; // (the callback draws through D3D11 only; an OpenXR call from it would pass) + cb(sc, tex); + --t_depth; + } + } + ++t_depth; + const XrResult r = real(sc, info); + --t_depth; + return r; +} +XrResult DestroyImpl(int i, XrSwapchain sc) { + auto real = reinterpret_cast(s_slot[i].destroy.load(std::memory_order_acquire)); + if (!real) return -1; + if (t_depth == 0) { + AcquireSRWLockExclusive(&s_scLock); + if (ScEntry* e = FindSc(sc)) *e = ScEntry(); + ReleaseSRWLockExclusive(&s_scLock); + } + ++t_depth; + const XrResult r = real(sc); + --t_depth; + return r; +} +// v0.10.3 phase 28: xrLocateViews -- the game's stereo view poses + fovs go into the ring (read only; the call is untouched). +XrResult LocateImpl(int i, XrSession ses, const XrViewLocateInfo* li, XrViewState* vs, uint32_t cap, uint32_t* cnt, XrView* views) { + auto real = reinterpret_cast(s_slot[i].locate.load(std::memory_order_acquire)); + if (!real) return -1; + const bool outer = t_depth == 0; + ++t_depth; + const XrResult r = real(ses, li, vs, cap, cnt, views); + --t_depth; + if (outer && r >= 0 && li && li->viewConfigurationType == kViewConfigPrimaryStereo && cap >= 2 && cnt && *cnt >= 2 && views) { + LARGE_INTEGER now; + QueryPerformanceCounter(&now); + AcquireSRWLockExclusive(&s_poseLock); + const uint64_t seq = ++s_locSeq; + LocRec& rec = s_loc[seq % kRing]; + rec.seq = seq; + for (int k = 0; k < 2; ++k) { + const XrPosef& p = views[k].pose; + const XrFovf& f = views[k].fov; + rec.v[k] = View{ p.orientation.x, p.orientation.y, p.orientation.z, p.orientation.w, p.position.x, p.position.y, + p.position.z, f.angleLeft, f.angleRight, f.angleUp, f.angleDown }; + } + rec.space = li->space; + rec.flags = vs ? vs->viewStateFlags : 0; + rec.qpc = now.QuadPart; + const int spType = SpaceTypeLocked(li->space); + // phase 28b: per locate space (a game may locate in VIEW and LOCAL spaces; each gets its own correction) + LocSpace* ls = nullptr; + for (LocSpace& e : s_lsp) if (e.space == li->space) { ls = &e; break; } + bool newSpace = false; + if (!ls) { + LocSpace* oldest = &s_lsp[0]; + for (LocSpace& e : s_lsp) if (e.newest < oldest->newest) oldest = &e; // (an empty slot has newest 0) + *oldest = LocSpace(); + ls = oldest; + ls->space = li->space; + newSpace = true; + } + ls->type = spType; + ++ls->count; + ls->newest = seq; + ReleaseSRWLockExclusive(&s_poseLock); + if (newSpace && s_nLocateSpace.fetch_add(1, std::memory_order_relaxed) < 12) + Log("OpenXR hook: stereo xrLocateViews in a NEW space %p (%s, type %d), locate #%llu, display time %lld -- view 0 pose " + "q=(%+.3f %+.3f %+.3f %+.3f) p=(%+.3f %+.3f %+.3f)", li->space, SpaceTypeName(spType), spType, + (unsigned long long)seq, (long long)li->displayTime, views[0].pose.orientation.x, views[0].pose.orientation.y, + views[0].pose.orientation.z, views[0].pose.orientation.w, views[0].pose.position.x, views[0].pose.position.y, + views[0].pose.position.z); + if (s_nLocates.fetch_add(1, std::memory_order_relaxed) == 0) + Log("OpenXR hook: first stereo xrLocateViews (space %p = %s, flags 0x%llx, view 0 fov L%+.1f R%+.1f U%+.1f D%+.1f deg, " + "view 1 fov L%+.1f R%+.1f U%+.1f D%+.1f deg; via the %s %s, tid=%lu) -- kept for the fps box fixed in the cab " + "(fps_vr_lock)", li->space, spType == 2 ? "LOCAL" : spType == 3 ? "STAGE" : spType == 1 ? "VIEW" : + spType == 1000426000 ? "LOCAL_FLOOR" : spType ? "other reference space" : "not created through us", + (unsigned long long)rec.flags, views[0].fov.angleLeft * 57.29578, views[0].fov.angleRight * 57.29578, + views[0].fov.angleUp * 57.29578, views[0].fov.angleDown * 57.29578, views[1].fov.angleLeft * 57.29578, + views[1].fov.angleRight * 57.29578, views[1].fov.angleUp * 57.29578, views[1].fov.angleDown * 57.29578, + kKindName[s_slot[i].kind], s_slot[i].module, GetCurrentThreadId()); + } + return r; +} +// v0.10.3 phase 28: xrEndFrame -- the first projection layer: its per-view swapchain / rect / slice (the picture layout) and +// the submitted poses + fovs (the per-space correction C = S (x) L^-1, phase 28b). Read only. +XrResult EndFrameImpl(int i, XrSession ses, const XrFrameEndInfo* fe) { + auto real = reinterpret_cast(s_slot[i].endFrame.load(std::memory_order_acquire)); + if (!real) return -1; + const bool outer = t_depth == 0; + const XrCompositionLayerProjection* proj = nullptr; // (phase 29: also the overlay's) + if (outer && fe && fe->layers) { + for (uint32_t k = 0; k < fe->layerCount && !proj; ++k) { + const XrCompositionLayerBaseHeader* h = fe->layers[k]; + if (h && h->type == kTypeCompositionLayerProjection) { + const XrCompositionLayerProjection* p = reinterpret_cast(h); + if (p->viewCount >= 2 && p->views) proj = p; + } + } + if (proj) { + bool first = false; + LARGE_INTEGER now; + QueryPerformanceCounter(&now); + AcquireSRWLockExclusive(&s_poseLock); + first = !s_haveLayout; + for (int v = 0; v < 2; ++v) { + const XrSwapchainSubImage& si = proj->views[v].subImage; + s_layout[v].sc = si.swapchain; + s_layout[v].rect[0] = si.x; s_layout[v].rect[1] = si.y; s_layout[v].rect[2] = si.w; s_layout[v].rect[3] = si.h; + s_layout[v].slice = si.imageArrayIndex; + const XrFovf& f = proj->views[v].fov; + s_subFov[v][0] = f.angleLeft; s_subFov[v][1] = f.angleRight; s_subFov[v][2] = f.angleUp; s_subFov[v][3] = f.angleDown; + } + s_layoutSpace = proj->space; + s_haveLayout = true; + const int layerType = SpaceTypeLocked(proj->space); + // the submitted pose of view 0 against the ring (exact copy?) -- statistics only since phase 28b + const XrPosef& sp = proj->views[0].pose; + bool found = false; + for (const LocRec& rec : s_loc) { + const View& w = rec.v[0]; + if (rec.seq && w.qx == sp.orientation.x && w.qy == sp.orientation.y && w.qz == sp.orientation.z && + w.qw == sp.orientation.w && w.px == sp.position.x && w.py == sp.position.y && w.pz == sp.position.z) + found = true; + } + (found ? s_nMatched : s_nUnmatched).fetch_add(1, std::memory_order_relaxed); + // phase 28b: the correction C = S (x) L^-1 per locate space and view (L = its newest locate at the image release); + // first the residual of the OLD C of the space LatestViews uses (the one with the newest locate) on this frame + LocSpace* best = nullptr; + for (LocSpace& e : s_lsp) if (e.space && e.atRelease && (!best || e.atRelease > best->atRelease)) best = &e; + const Pose S0 = PoseOf(proj->views[0].pose); + Pose L0{}, C0{}; + bool diagHave = false; + for (LocSpace& e : s_lsp) { + if (!e.space || !e.atRelease) continue; + const LocRec& rec = s_loc[e.atRelease % kRing]; + if (rec.seq != e.atRelease) continue; // (overwritten: more than kRing locates since) + if (&e == best && e.haveC) { + const Pose P = Compose(e.c[0], PoseOf(rec.v[0])); + const double ang = AngleBetween(P.q, S0.q); + const double dx = P.p[0] - S0.p[0], dy = P.p[1] - S0.p[1], dz = P.p[2] - S0.p[2]; + s_resAngSum += ang; + s_resPosSum += std::sqrt(dx * dx + dy * dy + dz * dz) * 1000.0; + if (ang > s_resAngMax) s_resAngMax = ang; + ++s_resN; + } + for (int v = 0; v < 2; ++v) + e.c[v] = Compose(PoseOf(proj->views[v].pose), Inverse(PoseOf(rec.v[v]))); + e.haveC = true; + if (&e == best) { L0 = PoseOf(rec.v[0]); C0 = e.c[0]; diagHave = true; } + } + const int bestType = best ? best->type : 0; + const XrSpace bestSpace = best ? best->space : nullptr; + bool diagNow = false; + if (diagHave && s_diagUntil && now.QuadPart < s_diagUntil && now.QuadPart >= s_diagNext) { + LARGE_INTEGER fq; + QueryPerformanceFrequency(&fq); + s_diagNext = now.QuadPart + fq.QuadPart; // once a second + diagNow = true; + } + const LayoutRec l0 = s_layout[0], l1 = s_layout[1]; + const double resA = s_resN ? s_resAngSum / (double)s_resN : 0.0; + ReleaseSRWLockExclusive(&s_poseLock); + s_nEndFrames.fetch_add(1, std::memory_order_relaxed); + if (first) + Log("OpenXR hook: first xrEndFrame projection layer (space %p = %s): view 0 = swapchain %p rect (%d,%d) %dx%d slice %u, " + "view 1 = swapchain %p rect (%d,%d) %dx%d slice %u; submitted pose %s", proj->space, SpaceTypeName(layerType), + l0.sc, l0.rect[0], l0.rect[1], l0.rect[2], l0.rect[3], l0.slice, l1.sc, l1.rect[0], l1.rect[1], l1.rect[2], + l1.rect[3], l1.slice, found ? "= a located one" : "matches NO located pose (corrected: S (x) L^-1)"); + if (diagNow) { + double ly, lp, sy, spt, cy, cp; + YawPitch(L0.q, &ly, &lp); + YawPitch(S0.q, &sy, &spt); + YawPitch(C0.q, &cy, &cp); + const double cAng = AngleBetween(C0.q, Pose{ { 0, 0, 0, 1 }, {} }.q); + Log("OpenXR hook pose diag: view 0 LOCATED (space %p %s) yaw %+.1f pitch %+.1f pos (%+.3f %+.3f %+.3f) | SUBMITTED " + "(layer space %p %s) yaw %+.1f pitch %+.1f pos (%+.3f %+.3f %+.3f) | correction C = S (x) L^-1: rotation %.1f deg " + "(yaw %+.1f pitch %+.1f) offset (%+.3f %+.3f %+.3f) m | mean residual of the previous C %.2f deg over %llu frames", + bestSpace, SpaceTypeName(bestType), ly, lp, L0.p[0], L0.p[1], L0.p[2], proj->space, SpaceTypeName(layerType), sy, + spt, S0.p[0], S0.p[1], S0.p[2], cAng, cy, cp, C0.p[0], C0.p[1], C0.p[2], resA, (unsigned long long)s_resN); + } + } + } + // v0.10.3 phase 29: our quad layers appended (a copy of the frame info; the game's own stays untouched) + XrFrameEndInfo ovFe{}; + const XrCompositionLayerBaseHeader* ovLayers[kOvMaxLayers] = {}; + XrCompositionLayerQuad ovQuads[2] = {}; + bool ov = false; + if (outer && fe) { + ++t_depth; + ov = OvEndFrame(i, ses, fe, proj, &ovFe, ovLayers, ovQuads); + --t_depth; + } + ++t_depth; + XrResult r = real(ses, ov ? &ovFe : fe); + if (ov && r < 0 && r != kErrSessionLost) { // refused with our layers: the game's frame again, as it was + OvRejected(r); + r = real(ses, fe); + } + --t_depth; + return r; +} +// v0.10.3 phase 29: xrDestroySession -- our swapchains / space of that session go first (through the runtime). +XrResult DestroySessionImpl(int i, XrSession ses) { + auto real = reinterpret_cast(s_slot[i].destroySession.load(std::memory_order_acquire)); + if (!real) return -1; + if (t_depth == 0) { + std::lock_guard lk(s_ovMx); + if (ses && ses == s_ov.ses) { + const bool had = s_ov.ready; + OvDropLocked(true); + s_ov.ses = nullptr; + s_ov.dead = false; + Log("OpenXR overlay: xrDestroySession(%p) by the game -- %s", ses, + had ? "our swapchains + VIEW space destroyed first" : "none of our objects existed"); + } + OvSetOk(false, false); + } + ++t_depth; + const XrResult r = real(ses); + --t_depth; + return r; +} +// v0.10.3 phase 28: xrCreateReferenceSpace -- the type of each space the game creates (LOCAL / STAGE ...; read only). +XrResult CreateRefSpaceImpl(int i, XrSession ses, const XrReferenceSpaceCreateInfo* ci, XrSpace* out) { + auto real = reinterpret_cast(s_slot[i].createRefSpace.load(std::memory_order_acquire)); + if (!real) return -1; + const bool outer = t_depth == 0; + ++t_depth; + const XrResult r = real(ses, ci, out); + --t_depth; + if (outer && r >= 0 && ci && out && *out) { + AcquireSRWLockExclusive(&s_poseLock); + SpaceRec* slot = nullptr; + for (SpaceRec& s : s_spaces) if (s.space == *out) slot = &s; // a recycled handle value + if (!slot) { slot = &s_spaces[s_spaceNext]; s_spaceNext = (s_spaceNext + 1) % kSpaces; } + slot->space = *out; + slot->type = ci->referenceSpaceType; + ReleaseSRWLockExclusive(&s_poseLock); + static std::atomic s_logs{0}; + if (s_logs.fetch_add(1, std::memory_order_relaxed) < 8) + Log("OpenXR hook: xrCreateReferenceSpace type %d -> space %p (offset pose pos %.2f %.2f %.2f; via the %s %s)", + ci->referenceSpaceType, *out, ci->poseInReferenceSpace.position.x, ci->poseInReferenceSpace.position.y, + ci->poseInReferenceSpace.position.z, kKindName[s_slot[i].kind], s_slot[i].module); + } + return r; +} +// v0.10.3 phase 28b: xrLocateSpace -- diagnostics only: which space the game locates against which (an engine that locates +// its views in VIEW space usually gets the head pose with xrLocateSpace(view, local)); the first 8 distinct pairs are logged. +XrResult LocateSpaceImpl(int i, XrSpace sp, XrSpace base, XrTime t, XrSpaceLocation* loc) { + auto real = reinterpret_cast(s_slot[i].locateSpace.load(std::memory_order_acquire)); + if (!real) return -1; + const bool outer = t_depth == 0; + ++t_depth; + const XrResult r = real(sp, base, t, loc); + --t_depth; + if (outer && r >= 0 && loc) { + static SRWLOCK s_lk = SRWLOCK_INIT; + static XrSpace s_pairs[8][2] = {}; + static int s_nPairs = 0; + bool fresh = false; + int st = 0, bt = 0; + AcquireSRWLockExclusive(&s_lk); + bool seen = false; + for (int k = 0; k < s_nPairs; ++k) if (s_pairs[k][0] == sp && s_pairs[k][1] == base) seen = true; + if (!seen && s_nPairs < 8) { s_pairs[s_nPairs][0] = sp; s_pairs[s_nPairs][1] = base; ++s_nPairs; fresh = true; } + ReleaseSRWLockExclusive(&s_lk); + if (fresh) { + AcquireSRWLockShared(&s_poseLock); + st = SpaceTypeLocked(sp); + bt = SpaceTypeLocked(base); + ReleaseSRWLockShared(&s_poseLock); + Log("OpenXR hook: xrLocateSpace(space %p %s, base %p %s, time %lld) by the game -> flags 0x%llx q=(%+.3f %+.3f %+.3f %+.3f) " + "p=(%+.3f %+.3f %+.3f) (first call of this pair; tid=%lu)", sp, SpaceTypeName(st), base, SpaceTypeName(bt), + (long long)t, (unsigned long long)loc->locationFlags, loc->pose.orientation.x, loc->pose.orientation.y, + loc->pose.orientation.z, loc->pose.orientation.w, loc->pose.position.x, loc->pose.position.y, loc->pose.position.z, + GetCurrentThreadId()); + } + } + return r; +} +XrResult GipaImpl(int i, XrInstance inst, const char* name, PFN_xrVoidFunction* fn); +XrResult NegRuntimeImpl(int i, const XrNegotiateLoaderInfo* li, XrNegotiateRuntimeRequest* rq); +XrResult NegLayerImpl(int i, const XrNegotiateLoaderInfo* li, const char* layerName, XrNegotiateApiLayerRequest* rq); + +template struct Thunk { + static XrResult XRH_CALL Gipa(XrInstance a, const char* b, PFN_xrVoidFunction* c) { return GipaImpl(I, a, b, c); } + static XrResult XRH_CALL NegRuntime(const XrNegotiateLoaderInfo* a, XrNegotiateRuntimeRequest* b) { + return NegRuntimeImpl(I, a, b); + } + static XrResult XRH_CALL NegLayer(const XrNegotiateLoaderInfo* a, const char* b, XrNegotiateApiLayerRequest* c) { + return NegLayerImpl(I, a, b, c); + } + static XrResult XRH_CALL Release(XrSwapchain a, const void* b) { return ReleaseImpl(I, a, b); } + static XrResult XRH_CALL Acquire(XrSwapchain a, const void* b, uint32_t* c) { return AcquireImpl(I, a, b, c); } + static XrResult XRH_CALL Enumerate(XrSwapchain a, uint32_t b, uint32_t* c, void* d) { return EnumerateImpl(I, a, b, c, d); } + static XrResult XRH_CALL Destroy(XrSwapchain a) { return DestroyImpl(I, a); } + static XrResult XRH_CALL Locate(XrSession a, const XrViewLocateInfo* b, XrViewState* c, uint32_t d, uint32_t* e, XrView* f) { + return LocateImpl(I, a, b, c, d, e, f); // v0.10.3 phase 28 + } + static XrResult XRH_CALL EndFrame(XrSession a, const XrFrameEndInfo* b) { return EndFrameImpl(I, a, b); } + static XrResult XRH_CALL CreateRefSpace(XrSession a, const XrReferenceSpaceCreateInfo* b, XrSpace* c) { + return CreateRefSpaceImpl(I, a, b, c); + } + static XrResult XRH_CALL LocateSpace(XrSpace a, XrSpace b, XrTime c, XrSpaceLocation* d) { return LocateSpaceImpl(I, a, b, c, d); } + static XrResult XRH_CALL DestroySession(XrSession a) { return DestroySessionImpl(I, a); } // phase 29 +}; +struct ThunkSet { void *gipa, *negRuntime, *negLayer, *release, *acquire, *enumerate, *destroy, *locate, *endFrame, *createRefSpace, + *locateSpace, *destroySession; }; +template ThunkSet MakeSet() { + return ThunkSet{ reinterpret_cast(&Thunk::Gipa), reinterpret_cast(&Thunk::NegRuntime), + reinterpret_cast(&Thunk::NegLayer), reinterpret_cast(&Thunk::Release), + reinterpret_cast(&Thunk::Acquire), reinterpret_cast(&Thunk::Enumerate), + reinterpret_cast(&Thunk::Destroy), reinterpret_cast(&Thunk::Locate), + reinterpret_cast(&Thunk::EndFrame), reinterpret_cast(&Thunk::CreateRefSpace), + reinterpret_cast(&Thunk::LocateSpace), reinterpret_cast(&Thunk::DestroySession) }; +} +template const ThunkSet* MakeTable(std::index_sequence) { + static const ThunkSet t[] = { MakeSet<(int)Is>()... }; + return t; +} +const ThunkSet* Sets() { + static const ThunkSet* t = MakeTable(std::make_index_sequence{}); + return t; +} + +XrResult GipaImpl(int i, XrInstance inst, const char* name, PFN_xrVoidFunction* fn) { + auto real = reinterpret_cast(s_slot[i].gipa.load(std::memory_order_acquire)); + if (!real) return -1; + const XrResult r = real(inst, name, fn); + if (inst) s_slot[i].instance.store(inst, std::memory_order_release); // phase 29: the overlay resolves with it + if (r < 0 || !fn || !*fn || !name) return r; + std::atomic* store = nullptr; + void* thunk = nullptr; + const ThunkSet& ts = Sets()[i]; + if (!strcmp(name, "xrReleaseSwapchainImage")) { store = &s_slot[i].release; thunk = ts.release; } + else if (!strcmp(name, "xrAcquireSwapchainImage")) { store = &s_slot[i].acquire; thunk = ts.acquire; } + else if (!strcmp(name, "xrEnumerateSwapchainImages")) { store = &s_slot[i].enumerate; thunk = ts.enumerate; } + else if (!strcmp(name, "xrDestroySwapchain")) { store = &s_slot[i].destroy; thunk = ts.destroy; } + else if (!strcmp(name, "xrLocateViews")) { store = &s_slot[i].locate; thunk = ts.locate; } // phase 28 + else if (!strcmp(name, "xrEndFrame")) { store = &s_slot[i].endFrame; thunk = ts.endFrame; } + else if (!strcmp(name, "xrCreateReferenceSpace")) { store = &s_slot[i].createRefSpace; thunk = ts.createRefSpace; } + else if (!strcmp(name, "xrLocateSpace")) { store = &s_slot[i].locateSpace; thunk = ts.locateSpace; } // 28b + else if (!strcmp(name, "xrDestroySession")) { store = &s_slot[i].destroySession; thunk = ts.destroySession; } // 29 + else if (!strcmp(name, "xrGetInstanceProcAddr") && reinterpret_cast(*fn) == s_slot[i].gipa.load()) { + *fn = reinterpret_cast(ts.gipa); // a GIPA asked for itself: stay wrapped + return r; + } + if (!store) return r; + void* const got = reinterpret_cast(*fn); + if (got == thunk) return r; // (already ours) + store->store(got, std::memory_order_release); + *fn = reinterpret_cast(thunk); + static std::atomic s_logs{0}; + if (s_logs.fetch_add(1, std::memory_order_relaxed) < 16) + Log("OpenXR hook: %s wrapped at the %s %s (real %p)", name, kKindName[s_slot[i].kind], s_slot[i].module, got); + return r; +} +XrResult NegRuntimeImpl(int i, const XrNegotiateLoaderInfo* li, XrNegotiateRuntimeRequest* rq) { + auto real = reinterpret_cast(s_slot[i].realEntry.load(std::memory_order_acquire)); + if (!real) return -1; + const XrResult r = real(li, rq); + if (r >= 0 && rq && rq->structType == kLisRuntimeRequest && rq->structSize >= sizeof(XrNegotiateRuntimeRequest) && + rq->getInstanceProcAddr && reinterpret_cast(rq->getInstanceProcAddr) != Sets()[i].gipa) { + s_slot[i].gipa.store(reinterpret_cast(rq->getInstanceProcAddr), std::memory_order_release); + rq->getInstanceProcAddr = reinterpret_cast(Sets()[i].gipa); + Log("OpenXR hook: runtime %s negotiated (interface %u, API 0x%llx) -- its xrGetInstanceProcAddr is wrapped", s_slot[i].module, + rq->runtimeInterfaceVersion, (unsigned long long)rq->runtimeApiVersion); + } + return r; +} +XrResult NegLayerImpl(int i, const XrNegotiateLoaderInfo* li, const char* layerName, XrNegotiateApiLayerRequest* rq) { + auto real = reinterpret_cast(s_slot[i].realEntry.load(std::memory_order_acquire)); + if (!real) return -1; + const XrResult r = real(li, layerName, rq); + if (r >= 0 && rq && rq->structType == kLisApiLayerRequest && rq->structSize >= sizeof(XrNegotiateApiLayerRequest) && + rq->getInstanceProcAddr && reinterpret_cast(rq->getInstanceProcAddr) != Sets()[i].gipa) { + s_slot[i].gipa.store(reinterpret_cast(rq->getInstanceProcAddr), std::memory_order_release); + rq->getInstanceProcAddr = reinterpret_cast(Sets()[i].gipa); + Log("OpenXR hook: API layer \"%s\" (%s) negotiated -- its xrGetInstanceProcAddr is wrapped", layerName ? layerName : "?", + s_slot[i].module); + } + return r; +} + +// The slot for `entry` (what GetProcAddress returned) -- the same entry again gets the same slot; -1 = table full. +int SlotFor(void* entry, int kind, HMODULE mod) { + std::lock_guard lk(s_slotMx); + const int n = s_slotN.load(std::memory_order_relaxed); + for (int i = 0; i < n; ++i) + if (s_slot[i].realEntry.load(std::memory_order_relaxed) == entry) return i; + if (n >= kSlots) return -1; + Slot& s = s_slot[n]; + s.kind = kind; + wchar_t w[MAX_PATH] = L""; + if (GetModuleFileNameW(mod, w, MAX_PATH)) { + const wchar_t* b = wcsrchr(w, L'\\'); + WideCharToMultiByte(CP_UTF8, 0, b ? b + 1 : w, -1, s.module, (int)sizeof(s.module) - 1, nullptr, nullptr); + } + if (!s.module[0]) strcpy_s(s.module, "?"); + s.realEntry.store(entry, std::memory_order_release); + if (kind == kKindLoader) s.gipa.store(entry, std::memory_order_release); + s_slotN.store(n + 1, std::memory_order_release); + return n; +} + +bool IsLoaderModule(HMODULE mod) { + wchar_t w[MAX_PATH] = L""; + if (!GetModuleFileNameW(mod, w, MAX_PATH)) return false; + const wchar_t* b = wcsrchr(w, L'\\'); + return _wcsicmp(b ? b + 1 : w, L"openxr_loader.dll") == 0; +} + +bool IsOurThunk(FARPROC p) { + const void* const v = reinterpret_cast(p); + const ThunkSet* t = Sets(); + for (int i = 0; i < kSlots; ++i) + if (v == t[i].gipa || v == t[i].negRuntime || v == t[i].negLayer) return true; + return false; +} +FARPROC Filter(HMODULE mod, LPCSTR name, FARPROC p) { + // fast path: an ordinal, a failed lookup or any name not starting "xr" (every other caller in the process) + if (!p || (uintptr_t)name <= 0xFFFF || name[0] != 'x' || name[1] != 'r') return p; + if (IsOurThunk(p)) return p; // kernel32's stub -> kernelbase: both detoured, wrapped once + int kind = -1; + if (!strcmp(name, "xrNegotiateLoaderRuntimeInterface")) kind = kKindRuntime; + else if (!strcmp(name, "xrNegotiateLoaderApiLayerInterface")) kind = kKindLayer; + else if (!strcmp(name, "xrGetInstanceProcAddr") && IsLoaderModule(mod)) kind = kKindLoader; + if (kind < 0) return p; + const int i = SlotFor(reinterpret_cast(p), kind, mod); + if (i < 0) { + static std::atomic s_full{false}; + if (!s_full.exchange(true)) + Log("OpenXR hook: WARNING more than %d OpenXR components -- %s not wrapped (the VR panel falls back to the arm " + "point if the release is not seen)", kSlots, name); + return p; + } + const ThunkSet& ts = Sets()[i]; + static std::atomic s_logs{0}; + if (s_logs.fetch_add(1, std::memory_order_relaxed) < 16) + Log("OpenXR hook: GetProcAddress(%s, %s) -> wrapped (%s, slot %d)", s_slot[i].module, name, kKindName[kind], i); + return reinterpret_cast(kind == kKindRuntime ? ts.negRuntime : kind == kKindLayer ? ts.negLayer : ts.gipa); +} +// kernel32!GetProcAddress (what the game exe imports) is a stub that may go to kernelbase!GetProcAddress or straight to +// kernelbase!GetProcAddressForCaller depending on the Windows build -- both exports are detoured (Filter skips a pointer +// that is already one of our thunks, so a stub -> kernelbase chain wraps once). +FARPROC WINAPI hkGetProcAddressK32(HMODULE mod, LPCSTR name) { return Filter(mod, name, oGetProcAddressK32(mod, name)); } +FARPROC WINAPI hkGetProcAddressKb(HMODULE mod, LPCSTR name) { return Filter(mod, name, oGetProcAddressKb(mod, name)); } + +bool HookOne(const wchar_t* dll, void* hook, PFN_GetProcAddress* orig) { + HMODULE m = GetModuleHandleW(dll); + void* target = m ? reinterpret_cast(GetProcAddress(m, "GetProcAddress")) : nullptr; + if (!target) { + Log("OpenXR hook: %ls!GetProcAddress not found", dll); + return false; + } + MH_STATUS st = MH_CreateHook(target, hook, reinterpret_cast(orig)); + if (st == MH_ERROR_ALREADY_CREATED) { // kernel32's export forwards to the kernelbase function detoured already + Log("OpenXR hook: %ls!GetProcAddress (%p) is the kernelbase function -- detoured once", dll, target); + return true; + } + if (st == MH_OK) st = MH_EnableHook(target); + if (st != MH_OK) { + Log("OpenXR hook: detour of %ls!GetProcAddress (%p) failed: %s", dll, target, MH_StatusToString(st)); + return false; + } + Log("OpenXR hook: %ls!GetProcAddress detoured (%p)", dll, target); + return true; +} + +} // namespace + +bool Install() { + if (s_hooked.load()) return true; + MH_STATUS st = MH_Initialize(); + if (st != MH_OK && st != MH_ERROR_ALREADY_INITIALIZED) { + Log("OpenXR hook: MH_Initialize failed: %s -- VR panel stays at the arm point", MH_StatusToString(st)); + return false; + } + Sets(); // the thunk table before the first lookup can need it + // kernelbase first: once it is detoured, the kernel32 lookup below already runs through it (harmless: not an "xr" name) + const bool kb = HookOne(L"kernelbase.dll", reinterpret_cast(&hkGetProcAddressKb), &oGetProcAddressKb); + const bool k32 = HookOne(L"kernel32.dll", reinterpret_cast(&hkGetProcAddressK32), &oGetProcAddressK32); + if (!kb && !k32) return false; + s_hooked.store(true); + Log("OpenXR hook: installed (kernelbase %s, kernel32 %s) -- the OpenXR runtime / API layer negotiation and " + "xrReleaseSwapchainImage are wrapped when the game creates its OpenXR instance", kb ? "yes" : "NO", k32 ? "yes" : "NO"); + return true; +} +void SetReleaseCallback(ReleaseFn fn) { s_cb.store(fn, std::memory_order_release); } +bool Hooked() { return s_hooked.load(std::memory_order_relaxed); } +int Components() { return s_slotN.load(std::memory_order_relaxed); } +uint64_t Releases() { return s_releases.load(std::memory_order_relaxed); } +uint64_t ReleasesMapped() { return s_releasesMapped.load(std::memory_order_relaxed); } + +// v0.10.3 phase 28 (see xr_hook.h). Phase 28b: the newest locate of the locate space with the newest locate, CORRECTED to the +// submitted pose (C (x) L, that space's C from the last xrEndFrame), in the projection LAYER's space, with the submitted fov. +// False until an xrEndFrame gave a correction (no layer = no picture to place the box in anyway). +bool LatestViews(Views* out) { + if (!out) return false; + LARGE_INTEGER now, freq; + QueryPerformanceCounter(&now); + QueryPerformanceFrequency(&freq); + AcquireSRWLockShared(&s_poseLock); + const LocSpace* best = nullptr; + for (const LocSpace& e : s_lsp) if (e.space && e.haveC && e.newest && (!best || e.newest > best->newest)) best = &e; + const LocRec* rec = best ? &s_loc[best->newest % kRing] : nullptr; + if (!best || !s_haveLayout || rec->seq != best->newest) { + out->seq = 0; + out->corrected = 0; + ReleaseSRWLockShared(&s_poseLock); + return false; + } + for (int k = 0; k < 2; ++k) { + const Pose P = Compose(best->c[k], PoseOf(rec->v[k])); + View& v = out->v[k]; + v.qx = (float)P.q[0]; v.qy = (float)P.q[1]; v.qz = (float)P.q[2]; v.qw = (float)P.q[3]; + v.px = (float)P.p[0]; v.py = (float)P.p[1]; v.pz = (float)P.p[2]; + v.angleLeft = s_subFov[k][0]; v.angleRight = s_subFov[k][1]; v.angleUp = s_subFov[k][2]; v.angleDown = s_subFov[k][3]; + out->raw[k] = rec->v[k]; + } + out->space = s_layoutSpace; + out->spaceType = SpaceTypeLocked(s_layoutSpace); + out->locSpace = best->space; + out->locSpaceType = best->type; + out->flags = rec->flags; + out->ageSec = freq.QuadPart > 0 ? (double)(now.QuadPart - rec->qpc) / (double)freq.QuadPart : 0.0; + out->corrected = 1; + out->seq = best->newest; + ReleaseSRWLockShared(&s_poseLock); + return true; +} +void PoseDiagArm(int seconds) { + LARGE_INTEGER now, fq; + QueryPerformanceCounter(&now); + QueryPerformanceFrequency(&fq); + AcquireSRWLockExclusive(&s_poseLock); + s_diagUntil = seconds > 0 ? now.QuadPart + fq.QuadPart * seconds : 0; + s_diagNext = now.QuadPart; + ReleaseSRWLockExclusive(&s_poseLock); +} +int ViewForImage(void* tex, uint32_t slice, int32_t rect[4]) { + if (!tex) return -1; + XrSwapchain sc = nullptr; // the swapchain holding image `tex` (the release map) + AcquireSRWLockShared(&s_scLock); + for (const ScEntry& e : s_sc) { + if (!e.sc) continue; + for (uint32_t k = 0; k < e.n && !sc; ++k) if (e.img[k] == tex) sc = e.sc; + if (sc) break; + } + ReleaseSRWLockShared(&s_scLock); + if (!sc) return -1; + int view = -1; + AcquireSRWLockShared(&s_poseLock); + if (s_haveLayout) + for (int v = 0; v < 2 && view < 0; ++v) + if (s_layout[v].sc == sc && s_layout[v].slice == slice) { + view = v; + if (rect) memcpy(rect, s_layout[v].rect, sizeof(s_layout[v].rect)); + } + ReleaseSRWLockShared(&s_poseLock); + return view; +} +PoseStats GetPoseStats() { + PoseStats s{}; + s.locates = s_nLocates.load(std::memory_order_relaxed); + s.endFrames = s_nEndFrames.load(std::memory_order_relaxed); + s.matched = s_nMatched.load(std::memory_order_relaxed); + s.unmatched = s_nUnmatched.load(std::memory_order_relaxed); + AcquireSRWLockShared(&s_poseLock); + s.resFrames = s_resN; + s.resMeanDeg = s_resN ? s_resAngSum / (double)s_resN : 0.0; + s.resMeanMm = s_resN ? s_resPosSum / (double)s_resN : 0.0; + s.resMaxDeg = s_resAngMax; + int n = 0; + for (const LocSpace& e : s_lsp) { + if (!e.space || n >= 4) continue; + s.spaces[n].space = e.space; s.spaces[n].type = e.type; s.spaces[n].count = e.count; + ++n; + } + s.nSpaces = n; + s.layerSpaceType = SpaceTypeLocked(s_layoutSpace); + ReleaseSRWLockShared(&s_poseLock); + return s; +} + +// ---- v0.10.3 phase 29: the overlay quads (see xr_hook.h) ---- +void OverlaySet(const OverlayParams& p) { + AcquireSRWLockExclusive(&s_ovParLock); + s_ovPar = p; + ReleaseSRWLockExclusive(&s_ovParLock); + if (!p.enabled) { s_ovOk[0].store(false, std::memory_order_relaxed); s_ovOk[1].store(false, std::memory_order_relaxed); } +} +void SetOverlayDrawCallback(OverlayDrawFn fn) { s_ovCb.store(fn, std::memory_order_release); } +bool OverlayActive(int which) { + if (which < 0 || which > 1 || !s_ovOk[which].load(std::memory_order_relaxed)) return false; + static LONGLONG s_freq = 0; + if (!s_freq) { LARGE_INTEGER f; QueryPerformanceFrequency(&f); s_freq = f.QuadPart > 0 ? f.QuadPart : 1; } + LARGE_INTEGER now; + QueryPerformanceCounter(&now); + return now.QuadPart - s_ovOkQpc.load(std::memory_order_acquire) < s_freq / 2; // the last xrEndFrame within 0.5 s +} +OverlayStats GetOverlayStats() { + OverlayStats s; + s.enabled = OvParams().enabled; + s.ready = s_ovReady.load(std::memory_order_relaxed); + s.mode = s_ovMode.load(std::memory_order_relaxed); + s.format = s_ovFormat.load(std::memory_order_relaxed); + s.frames = s_ovFrames.load(std::memory_order_relaxed); + s.panelQuads = s_ovPanel.load(std::memory_order_relaxed); + s.fpsQuads = s_ovFps.load(std::memory_order_relaxed); + s.createFails = s_ovCreateFails.load(std::memory_order_relaxed); + s.acquireFails = s_ovAcqFails.load(std::memory_order_relaxed); + s.waitFails = s_ovWaitFails.load(std::memory_order_relaxed); + s.releaseFails = s_ovRelFails.load(std::memory_order_relaxed); + s.drawFails = s_ovDrawFails.load(std::memory_order_relaxed); + s.rejects = s_ovRejects.load(std::memory_order_relaxed); + s.fixedHow = s_ovFixedHow.load(std::memory_order_relaxed); + s.fixedSpaceType = s_ovFixedType.load(std::memory_order_relaxed); + return s; +} + +} // namespace XrHook diff --git a/src/xr_hook.h b/src/xr_hook.h new file mode 100644 index 0000000..dbf8182 --- /dev/null +++ b/src/xr_hook.h @@ -0,0 +1,150 @@ +// XrHook -- v0.10.3 phase 27: the OpenXR swapchain release, seen from the game's side. +// +// Why: the VR tuning panel / fps box must be the LAST thing drawn into each eye picture. In ATS / ETS2 VR the eye picture +// IS the OpenXR swapchain image (stereo scale 2.0: 6120x6496); the runtime takes it at xrReleaseSwapchainImage, a call the +// D3D11 hooks never see (the v0.10.0 phase 16 / 20 "late" mode waits for a D3D11 read of the picture that never comes: +// 0 accepted game reads in ~22000 Presents). This module wraps xrReleaseSwapchainImage (+ xrEnumerateSwapchainImages / +// xrAcquireSwapchainImage / xrDestroySwapchain for the swapchain -> ID3D11Texture2D* image map) and calls a callback right +// BEFORE the real release, with the D3D11 texture being released. +// +// How it gets in: the game exe links the OpenXR loader STATICALLY (amtrucks.exe has the loader's RuntimeInterface / +// ApiLayerInterface code and no openxr_loader.dll ships), so there is no loader export to detour. Instead kernelbase! +// GetProcAddress is detoured (MinHook) and three names are answered with our thunks: +// * "xrNegotiateLoaderRuntimeInterface" (the runtime DLL) and "xrNegotiateLoaderApiLayerInterface" (each API layer DLL, +// OFXR Bridge included): after the real negotiation the returned getInstanceProcAddr is replaced by a thunk. The loader +// builds the game's dispatch table from the TOP of the chain (the first layer, else the runtime), and each layer gets +// its "next" from the same negotiated pointers -- so every level is wrapped and a thread-local depth counter makes only +// the OUTERMOST call (the game's own) act: the image map and the release callback are always the game's view, above +// the layers (OFXR Bridge's own nested calls are passed straight through). +// * "xrGetInstanceProcAddr" resolved from a module named openxr_loader.dll (a game build that ships the loader DLL): +// the same thunk on the loader's own entry point. +// v0.10.3 phase 28: + xrLocateViews / xrEndFrame / xrCreateReferenceSpace (read only: the view poses, see LatestViews). +// v0.10.3 phase 29: + xrDestroySession, and xrEndFrame gets our quad layers appended (OverlaySet below). +// Only these function names are touched; everything else the GIPA thunks return is the real pointer. No OpenXR SDK +// dependency: the few types needed are declared in xr_hook.cpp. No D3D calls here (the texture is passed as an identity). +#pragma once +#include + +namespace XrHook { + +// Called on the thread that calls xrReleaseSwapchainImage, before the real release. `tex` = the ID3D11Texture2D* of the +// image being released (identity, no reference added; null: no D3D11 image map for that swapchain -- not enumerated +// through us, or not a D3D11 swapchain). +typedef void (*ReleaseFn)(void* swapchain, void* tex); + +// Detours GetProcAddress (initialises MinHook if needed). Call once, early (before the game creates its XrInstance). +bool Install(); +void SetReleaseCallback(ReleaseFn fn); + +// Diagnostics (atomics; any thread). +bool Hooked(); // GetProcAddress detoured +int Components(); // runtime / layer / loader entry points wrapped so far +uint64_t Releases(); // outermost xrReleaseSwapchainImage calls seen +uint64_t ReleasesMapped(); // ... with a known D3D11 image + +// ---- v0.10.3 phase 28: the game's view poses (the VR fps box "Fixed in cab", dlaa.ini fps_vr_lock = 1) ---------------- +// xrLocateViews, xrEndFrame and xrCreateReferenceSpace are wrapped too (outermost call = the game's own, as above). Each +// successful PRIMARY_STEREO xrLocateViews is kept (a ring of 8, with the space it was located in); each xrEndFrame's first +// projection layer gives the LAYOUT the runtime will use for the pictures (per view: swapchain, sub-image rect, array slice, +// layer space, fov) and the SUBMITTED poses. Phase 28b (the "lag" matching of phase 28 replaced: the ATS / Virtual Desktop +// test showed submitted poses that equal no located one in 85 % of the frames): per locate space and view, the correction +// C = S (x) L^-1 between the submitted pose S and the locate L the box was drawn with; LatestViews hands out C (x) L_newest +// in the LAYER space -- the pose the compositor shows the picture with (its timewarp then keeps the box fixed in that space). +struct View { + float qx, qy, qz, qw; // orientation in the reference space (unit quaternion) + float px, py, pz; // position in the reference space (m); OpenXR: +x right, +y up, -z forward + float angleLeft, angleRight, angleUp, angleDown; // fov (radians; left / down negative) +}; +struct Views { + View v[2]; // phase 28b: the pose CORRECTED to the submitted one (C (x) L), the submitted fov + View raw[2]; // ... the located pose / fov as the game got it (diagnostics) + void* space = nullptr; // the projection layer's XrSpace (the space v[] is in) + int spaceType = 0; // its XrReferenceSpaceType if created through us (1 VIEW, 2 LOCAL, 3 STAGE, + // 1000426000 LOCAL_FLOOR); 0 = unknown (an action space, or created before us) + void* locSpace = nullptr; // the space the game located the views in (raw[]) + int locSpaceType = 0; + uint64_t flags = 0; // XrViewStateFlags (1 orientation valid, 2 position valid, 4 / 8 tracked) + double ageSec = 0.0; // seconds since that xrLocateViews returned + int corrected = 0; // 1 = v[] carries a correction learned at an xrEndFrame + uint64_t seq = 0; // the locate's sequence number (1 = the first locate) +}; +// The views to project with now (copied out under a lock; any thread). False = no stereo locate + xrEndFrame correction yet. +bool LatestViews(Views* out); +// Phase 28b: log the located / submitted / correction poses once a second (at xrEndFrame) for `seconds` (0 = stop). +void PoseDiagArm(int seconds); +// The view whose picture is D3D11 image `tex` (array slice `slice`) in the game's last xrEndFrame projection layer, and its +// sub-image rect (x, y, w, h px). -1 = not known (no xrEndFrame seen, `tex` is not a swapchain image -- an intermediate eye +// texture -- or not in the layer). +int ViewForImage(void* tex, uint32_t slice, int32_t rect[4]); +// Counters: stereo locates seen, xrEndFrame calls with a projection layer, submitted view-0 poses equal to a located one / not, +// the residual of the previous frame's correction on this frame's locate against the actual submitted pose (mean / max degrees, +// mean mm: what the box is off by in the compositor), and the spaces the game locates its views in. +struct PoseStats { + uint64_t locates, endFrames, matched, unmatched; + uint64_t resFrames; double resMeanDeg, resMeanMm, resMaxDeg; + struct Sp { void* space; int type; uint64_t count; } spaces[4]; + int nSpaces, layerSpaceType; +}; +PoseStats GetPoseStats(); + +// ---- v0.10.3 phase 29: the VR tuning panel / fps box as OpenXR QUAD composition layers (dlaa.ini menu_vr_layer = 1) ------- +// Drawn into the eye picture (phases 16 / 27) a head-locked overlay is part of the projection layer the runtime timewarps with +// the game's submitted pose every frame: it swims / jitters by the head motion between that pose and the display. As a quad +// layer the COMPOSITOR places it: the panel and the head-following fps box in a VIEW reference space of our own (head-locked +// by the runtime itself), the fps box "fixed in the cab" in the game's projection-layer space at the anchor pose (no pose +// maths, no lag). xrEndFrame / xrDestroySession are wrapped (outermost = the game's call): per frame the wanted quads get an +// image of our own swapchains (acquire, wait, the inject.cpp draw callback renders into the D3D11 texture, release) and are +// APPENDED after the game's layers (on top) in a copy of its XrFrameEndInfo. The OpenXR functions we call are resolved through +// the real xrGetInstanceProcAddr of the component that handles the game's outermost xrEndFrame (the top of the chain as the +// game sees it), every call inside ++t_depth (our swapchains never reach the image map or the release callback). Thread: the +// draw needs the game's immediate context -> at xrEndFrame when it runs on `drawTid` (the render thread), else at the game's +// first xrReleaseSwapchainImage of the frame on `drawTid` (the layers are still appended at xrEndFrame). A runtime that +// rejects the frame with our layers gets it again without them, and the quad path stays off for that session. +struct OverlayParams { + bool enabled = false; // dlaa.ini menu_vr_layer + bool menuOpen = false; // the panel quad is wanted + bool fpsShow = false; // the fps box quad is wanted + int fpsLock = 0; // fps_vr_lock: 0 follows the head (VIEW space), 1 fixed in the cab (layer space) + int menuX = 0, menuY = 0; // menu_vr_x / menu_vr_y (% of the eye fov from the view axis; y + = down) + float menuScale = 1.0f; // menu_vr_scale (1 = 54 % of the eye fov width, at any distance) + float menuDist = 1.0f; // v0.10.3 phase 29b: menu_vr_dist / 100 -- the panel quad's distance (m, VIEW space; + // its angular size stays: the width scales with it) + bool menuFace = true; // v0.10.3 phase 29b: menu_vr_face -- the panel and the head-following fps box quads + // turned to FACE the head (false: parallel to the view plane) + int fpsX = 0, fpsY = 0; // fps_vr_x / fps_vr_y (% as the panel; fixed in the cab: yaw / pitch degrees) + float fpsScale = 0.3f; // fps_vr_scale (1 = 8 % of the eye fov width at 0.8 m) + unsigned long drawTid = 0; // the game render thread (owner of the immediate context); 0 = none yet + uint32_t panelW = 0, panelH = 0; // the panel swapchain size (px; read at its creation) + uint32_t fpsW = 0, fpsH = 0; // the fps box swapchain size (px) +}; +void OverlaySet(const OverlayParams& p); // inject.cpp, every Present (any thread; copied under a lock) +// The draw callback (inject.cpp, on drawTid): clear `tex` (the swapchain image, an ID3D11Texture2D* of `format` = the +// DXGI_FORMAT the swapchain was created with; the texture itself may be typeless) and draw quad `which` (0 = the panel, 1 = the +// fps box) into its top-left corner; usedW / usedH = the drawn size (px; the quad shows that sub-image). False = not drawn +// (device objects not ready, wrong thread ...): the quad is skipped this frame (and counted). +struct OverlayDraw { + int which = 0; + void* tex = nullptr; + uint32_t w = 0, h = 0; + int64_t format = 0; + uint32_t usedW = 0, usedH = 0; // out +}; +typedef bool (*OverlayDrawFn)(OverlayDraw* d); +void SetOverlayDrawCallback(OverlayDrawFn fn); +// True = quad `which` (0 panel, 1 fps box) went to the compositor at the last xrEndFrame (within 0.5 s), or the quad path is +// up and that quad was not wanted -- inject.cpp then does NOT draw it into the eye picture. False = the in-picture fallback. +bool OverlayActive(int which); +struct OverlayStats { + bool enabled = false, ready = false; // menu_vr_layer; swapchains + space made for the current session + int mode = 0; // where the quads are drawn: 0 not yet, 1 at xrEndFrame, 2 at the game's release + int64_t format = 0; // the swapchain DXGI_FORMAT (0 = none yet) + uint64_t frames = 0, panelQuads = 0, fpsQuads = 0; // xrEndFrame calls with our quads appended; quads per kind + uint64_t createFails = 0, acquireFails = 0, waitFails = 0, releaseFails = 0, drawFails = 0, rejects = 0; + int fixedHow = 0; // fps box fixed in the cab: 0 not used yet, 1 the layer space (LOCAL: its origin = + // the seat), 2 the layer space around a pivot captured at lock-on, 3 head-locked + // (the layer space is a VIEW space) + int fixedSpaceType = 0; // that layer space's XrReferenceSpaceType (0 = unknown) +}; +OverlayStats GetOverlayStats(); + +} // namespace XrHook diff --git a/tests/drawid_harness.cpp b/tests/drawid_harness.cpp index a6d64d4..27d5486 100644 --- a/tests/drawid_harness.cpp +++ b/tests/drawid_harness.cpp @@ -117,10 +117,15 @@ void PerfFrame() { } // the phase-8 counters of a scene's DrawIdMv + the WARP perf line (restarts the perf window) void PrintPhase8(ID3D11DeviceContext* ctx, const DrawIdMv::Stats& ds, const char* tag) { - printf(" %s phase 8: frames without a world / cabin medoid %llu / %llu (medoid re-armed %llu / %llu); rigid-parent vote: listed " + printf(" %s phase 8: frames without a world / cabin medoid %llu / %llu (medoid re-armed %llu / %llu; v0.10.2 consensus failure " + "streaks by length 1 / 2 / 3-5 / 6+: world %llu / %llu / %llu / %llu, cabin %llu / %llu / %llu / %llu); rigid-parent vote: listed " "draws with pixels %llu, of them fine %llu, frames whose vote grid was skipped %llu, 1st-pass marches %llu (%.0f / frame)\n", tag, (unsigned long long)ds.noMedoidFrames[0], (unsigned long long)ds.noMedoidFrames[1], - (unsigned long long)ds.medoidRearms[0], (unsigned long long)ds.medoidRearms[1], (unsigned long long)ds.parVis, + (unsigned long long)ds.medoidRearms[0], (unsigned long long)ds.medoidRearms[1], + (unsigned long long)ds.consFailRuns[0][0], (unsigned long long)ds.consFailRuns[0][1], + (unsigned long long)ds.consFailRuns[0][2], (unsigned long long)ds.consFailRuns[0][3], + (unsigned long long)ds.consFailRuns[1][0], (unsigned long long)ds.consFailRuns[1][1], + (unsigned long long)ds.consFailRuns[1][2], (unsigned long long)ds.consFailRuns[1][3], (unsigned long long)ds.parVis, (unsigned long long)ds.parFine, (unsigned long long)ds.parSkipped, (unsigned long long)ds.parMarches, ds.rbFrames ? (double)ds.parMarches / (double)ds.rbFrames : 0.0); if (ds.cvFrames) // v0.10.0 phase 18 @@ -1635,18 +1640,34 @@ struct Shadow { long long clipPx = 0; double mvMax = 0.0, fMax = 0.0; int frames = 0, badFrames = 0, edgeFrames = 0, genFails = 0, replayFails = 0; + // v0.10.2 (mv_area_clip): VR model -- the replay clip is the UNION of this eye's rect and the OTHER eye's (optical centre cu2) + // + the margin, as inject.cpp PassViewSetup; eyeClip -1 = leave DrawIdMv's setting, 0 / 1 = mv_area_clip for this shadow's + // Generate (the vote grid then covers this eye's rect + margin n the union). Vote grid px summed per Generate (the log line). + int eyeClip = -1, marginPx = 0; + bool unionClip = false; + long long vgPx = 0, vgFrames = 0; bool Init(Env& E, UINT w, UINT h, int areaPct, int margin, UINT sh, const char* nm, float cu = 0.5f, float cv = 0.5f, - bool batchMode = false, bool cullMode = false) { + bool batchMode = false, bool cullMode = false, float cu2 = -1.0f, int eyeClipMode = -1) { ID3D11Device* d = E.dev.Get(); name = nm; shift = sh; W = w; H = h; batch = batchMode; cull = batchMode && cullMode; + eyeClip = eyeClipMode; marginPx = margin; unionClip = cu2 >= 0.0f; fw = (w + (1u << sh) - 1u) >> sh; fh = (h + (1u << sh) - 1u) >> sh; uint32_t x = 0, y = 0, cww = 0, chh = 0; SceneDlaa::CropRect(w, h, areaPct, cu, cv, &x, &y, &cww, &chh); // (cu, cv): the eye's optical centre cx = x; cy = y; cw = cww; ch = chh; - clip.left = (LONG)cx - margin; clip.top = (LONG)cy - margin; - clip.right = (LONG)(cx + cw) + margin; clip.bottom = (LONG)(cy + ch) + margin; + LONG ul = (LONG)cx, ut = (LONG)cy, ur = (LONG)(cx + cw), ub = (LONG)(cy + ch); + if (unionClip) { // v0.10.2: + the other eye's rect (inject.cpp PassViewSetup in VR) + uint32_t x2 = 0, y2 = 0, w2 = 0, h2 = 0; + SceneDlaa::CropRect(w, h, areaPct, cu2, cv, &x2, &y2, &w2, &h2); + if ((LONG)x2 < ul) ul = (LONG)x2; + if ((LONG)y2 < ut) ut = (LONG)y2; + if ((LONG)(x2 + w2) > ur) ur = (LONG)(x2 + w2); + if ((LONG)(y2 + h2) > ub) ub = (LONG)(y2 + h2); + } + clip.left = ul - margin; clip.top = ut - margin; + clip.right = ur + margin; clip.bottom = ub + margin; if (clip.left < 0) clip.left = 0; if (clip.top < 0) clip.top = 0; if (clip.right > (LONG)w) clip.right = (LONG)w; @@ -1793,9 +1814,18 @@ struct Shadow { } bool Generate(ID3D11DeviceContext* ctx, ID3D11ShaderResourceView* twinSrv, bool useFwd) { CameraMv::FrameStats fs; + const bool clipWas = DrawIdMv::AreaClip(); + const int marginWas = DrawIdMv::AreaMargin(); + if (eyeClip >= 0) DrawIdMv::SetAreaClip(eyeClip != 0, marginPx); // v0.10.2 (inject.cpp PassViewSetup sets it per pass) const bool ok = cam.Generate(ctx, cw, ch, cx, cy, W, H, cand, twinSrv, dUav.Get(), mvUav.Get(), &fs, false, nullptr, nullptr, fwdSrv.Get(), &rec, idSrv.Get(), useFwd ? &fwdRec : nullptr, shift, shift ? fwdIdSrv.Get() : nullptr); + if (eyeClip >= 0) DrawIdMv::SetAreaClip(clipWas, marginWas); + if (ok) { // v0.10.2: the vote grid rect this Generate used + const uint32_t* pc = cam.DrawIds().PreparedClip(); + vgPx += (long long)(pc[2] > pc[0] ? pc[2] - pc[0] : 0u) * (long long)(pc[3] > pc[1] ? pc[3] - pc[1] : 0u); + ++vgFrames; + } if (!ok) ++genFails; return ok; } @@ -1976,8 +2006,11 @@ struct Shadow { if (batch) printf("; BATCH%s (occlusion init %lld frames; GREEN where the forward depth lost: %lld px, %lld differ -- " "not compared)", cull ? " + cull" : "", cullInit, gSkipNoWin, gDiffNoWin); printf("; per-draw states differing from the main pipeline %lld of %lld; a mover crossed the crop edge in %d of %d frames; " - "clip = %.1f %% of the image\n", stateDiff, stateCmp, edgeFrames, frames, - frames ? 100.0 * (double)clipPx / ((double)frames * W * H) : 0.0); + "clip = %.1f %% of the image; vote grid = %.1f %% of the image (%s, mv_area_clip %s)\n", stateDiff, stateCmp, + edgeFrames, frames, frames ? 100.0 * (double)clipPx / ((double)frames * W * H) : 0.0, + vgFrames ? 100.0 * (double)vgPx / ((double)vgFrames * W * H) : 0.0, + unionClip ? "VR model: replay clip = both eyes' rects + margin" : "one rect", + eyeClip < 0 ? "as set" : (eyeClip ? "1" : "0")); return fl; } }; @@ -5785,6 +5818,7 @@ int main(int argc, char** argv) { DrawIdMv::SetInstReplay(0); } else if (!strncmp(s, "drop=", 5)) DrawIdMv::SetMedoidDrop((unsigned)atoi(s + 5)); + else if (!strncmp(s, "failtol=", 8)) DrawIdMv::SetConsFailTol((unsigned)atoi(s + 8)); // v0.10.2: mv_cons_fail_tol else if (!strncmp(s, "jerk=", 5)) g_yawJerk = atof(s + 5); // phase 14 round 5 else if (!strcmp(s, "mutcr")) g_s15Mut = 4; // phase 14 round 6: S15 with the origin-free rule off (must FAIL) else if (!strcmp(s, "mutinst")) g_s15Mut = 8; // S15 with multi-instance draws listed again (round-4 rule) @@ -5818,10 +5852,11 @@ int main(int argc, char** argv) { DrawIdMv::SetParentMaxListed(!strcmp(s, "low") ? 32u : 64u); } } - printf("phase 8 knobs: mv_vote_res %u, mv_vote_march_cap %u, mv_cons_cands %u, mv_medoid_drop %u, mv_inst_replay %d, " - "mv_parent_max_listed %u%s%s; phase 14: static replay skip %s (S1-S4, S6-S8, S13); phase 18: mv_fold_dispatch %d, " - "mv_vote_compact %d%s%s\n", - DrawIdMv::VoteRes(), DrawIdMv::MarchCap(), DrawIdMv::ConsCands(), DrawIdMv::MedoidDrop(), DrawIdMv::InstReplay(), + printf("phase 8 knobs: mv_vote_res %u, mv_vote_march_cap %u, mv_cons_cands %u, mv_medoid_drop %u (v0.10.2 mv_cons_fail_tol %u), " + "mv_inst_replay %d, mv_parent_max_listed %u%s%s; phase 14: static replay skip %s (S1-S4, S6-S8, S13); phase 18: " + "mv_fold_dispatch %d, mv_vote_compact %d%s%s\n", + DrawIdMv::VoteRes(), DrawIdMv::MarchCap(), DrawIdMv::ConsCands(), DrawIdMv::MedoidDrop(), DrawIdMv::ConsFailTol(), + DrawIdMv::InstReplay(), DrawIdMv::ParentMaxListed(), g_cmpOut ? ", writing the comparison file" : "", g_cmpIn ? ", comparing with the reference file" : "", g_rstatic ? "ON (rstatic)" : "off", DrawIdMv::Fold(), (int)DrawIdMv::VoteCompact(), @@ -6138,15 +6173,25 @@ int main(int argc, char** argv) { Shadow& c = *pc; Shadow& d = *pd; Shadow& g = *pe; // S6's vehicles drive near the image centre: the crop is OFF-centre like a VR eye's (optical centre u 0.70), its left edge // runs through the plate carrier, the convoy and the cars + // v0.10.2 (mv_area_clip): three VR-model shadows -- the replay clip is the union of this eye's rect (u 0.70) and the other + // eye's (u 0.30) + 40 px; eye clip ON (the vote grid over this eye's rect + 40 px, full / 1/2-res) and OFF (phase 9) + std::unique_ptr pu1(new Shadow), pu2(new Shadow), pu3(new Shadow); + Shadow& u1 = *pu1; Shadow& u2 = *pu2; Shadow& u3 = *pu3; if (!a.Init(E, W, H, 40, 40, 0, "S11 clip, full-res forward", 0.70f, 0.5f) || !b.Init(E, W, H, 40, 40, 1, "S11 clip, 1/2-res forward", 0.70f, 0.5f) || !c.Init(E, W, H, 40, 40, 0, "S11 clip, full-res forward BATCH", 0.70f, 0.5f, true, false) || !d.Init(E, W, H, 40, 40, 0, "S11 clip, full-res forward BATCH + cull", 0.70f, 0.5f, true, true) || - !g.Init(E, W, H, 40, 40, 1, "S11 clip, 1/2-res forward BATCH + cull", 0.70f, 0.5f, true, true)) { + !g.Init(E, W, H, 40, 40, 1, "S11 clip, 1/2-res forward BATCH + cull", 0.70f, 0.5f, true, true) || + !u1.Init(E, W, H, 40, 40, 0, "S11 VR union clip, eye clip ON, full-res forward BATCH + cull", 0.70f, 0.5f, true, true, + 0.30f, 1) || + !u2.Init(E, W, H, 40, 40, 1, "S11 VR union clip, eye clip ON, 1/2-res forward BATCH + cull", 0.70f, 0.5f, true, true, + 0.30f, 1) || + !u3.Init(E, W, H, 40, 40, 1, "S11 VR union clip, eye clip OFF, 1/2-res forward BATCH + cull", 0.70f, 0.5f, true, true, + 0.30f, 0)) { ++tot.checks; ++tot.fails; res.push_back({ "S11 shadow init", 1 }); } else { - Shadow* const sh[5] = { &a, &b, &c, &d, &g }; - const int fl = RunConvoyScene(E, snapPx, tot, false, false, sh, 5); + Shadow* const sh[8] = { &a, &b, &c, &d, &g, &u1, &u2, &u3 }; + const int fl = RunConvoyScene(E, snapPx, tot, false, false, sh, 8); res.push_back({ "S11 = S6 + DLAA-area clip shadows (full / 1/2-resolution forward depth) vs the whole-image pipeline", fl }); } } @@ -6156,15 +6201,24 @@ int main(int argc, char** argv) { std::unique_ptr pc(new Shadow), pd(new Shadow), pe(new Shadow); // v0.10.0 phase 10: batch shadows Shadow& c = *pc; Shadow& d = *pd; Shadow& g = *pe; // the crop's left edge (optical centre u 0.70) runs through the turning trailer and its plates (the vote near the clip) + // v0.10.2 (mv_area_clip): the VR-model shadows as in S11 (the other eye's rect at u 0.30 in the replay clip) + std::unique_ptr pu1(new Shadow), pu2(new Shadow), pu3(new Shadow); + Shadow& u1 = *pu1; Shadow& u2 = *pu2; Shadow& u3 = *pu3; if (!a.Init(E, W, H, 40, 40, 0, "S12 clip, full-res forward", 0.70f, 0.5f) || !b.Init(E, W, H, 40, 40, 1, "S12 clip, 1/2-res forward", 0.70f, 0.5f) || !c.Init(E, W, H, 40, 40, 0, "S12 clip, full-res forward BATCH", 0.70f, 0.5f, true, false) || !d.Init(E, W, H, 40, 40, 0, "S12 clip, full-res forward BATCH + cull", 0.70f, 0.5f, true, true) || - !g.Init(E, W, H, 40, 40, 1, "S12 clip, 1/2-res forward BATCH + cull", 0.70f, 0.5f, true, true)) { + !g.Init(E, W, H, 40, 40, 1, "S12 clip, 1/2-res forward BATCH + cull", 0.70f, 0.5f, true, true) || + !u1.Init(E, W, H, 40, 40, 0, "S12 VR union clip, eye clip ON, full-res forward BATCH + cull", 0.70f, 0.5f, true, true, + 0.30f, 1) || + !u2.Init(E, W, H, 40, 40, 1, "S12 VR union clip, eye clip ON, 1/2-res forward BATCH + cull", 0.70f, 0.5f, true, true, + 0.30f, 1) || + !u3.Init(E, W, H, 40, 40, 1, "S12 VR union clip, eye clip OFF, 1/2-res forward BATCH + cull", 0.70f, 0.5f, true, true, + 0.30f, 0)) { ++tot.checks; ++tot.fails; res.push_back({ "S12 shadow init", 1 }); } else { - Shadow* const sh[5] = { &a, &b, &c, &d, &g }; - const int fl = RunParentScene(E, snapPx, tot, 0, 0, sh, 5); + Shadow* const sh[8] = { &a, &b, &c, &d, &g, &u1, &u2, &u3 }; + const int fl = RunParentScene(E, snapPx, tot, 0, 0, sh, 8); res.push_back({ "S12 = S8 + DLAA-area clip shadows (full / 1/2-resolution forward depth) vs the whole-image pipeline", fl }); } }

    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ð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