Fix DLSS quality-change corruption and frame completion ordering
- Reprepare enc3 weights each launch to avoid stale caches after feature recreation - Require per-slot input markers before evaluating recorded frames - Advance split-frame timelines only through completed frames - Add cancellation and readiness tests plus recreation consistency checks - Update architecture and native kernel documentation ref #8
This commit is contained in:
1 parent
1620c36e15
commit
6684888c0b
9 files changed
+302
-33
No files matched your search
@@ -0,0 +1,34 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include <deque>
|
||||
|
||||
// A timeline signal releases every lower value too. Prep can cancel a later
|
||||
// frame while the CUDA worker is still producing an earlier one, so only the
|
||||
// completed prefix of admitted frames may be signalled. The caller serializes
|
||||
// admission and retirement with the same mutex used for the timeline signal.
|
||||
class D4rFrameCompletion
|
||||
{
|
||||
public:
|
||||
void admit(uint32_t frame) { pending_.push_back({frame, false}); }
|
||||
|
||||
uint64_t retire(uint32_t frame)
|
||||
{
|
||||
for (auto& pending : pending_)
|
||||
if (pending.frame == frame)
|
||||
{
|
||||
pending.done = true;
|
||||
break;
|
||||
}
|
||||
while (!pending_.empty() && pending_.front().done)
|
||||
{
|
||||
completedThrough_ = pending_.front().frame;
|
||||
pending_.pop_front();
|
||||
}
|
||||
return completedThrough_;
|
||||
}
|
||||
|
||||
private:
|
||||
struct Pending { uint32_t frame; bool done; };
|
||||
std::deque<Pending> pending_;
|
||||
uint64_t completedThrough_ = 0;
|
||||
};
|
||||
Reference in new issue
Block a user