mirror of
https://github.com/gnif/LookingGlass.git
synced 2026-08-04 06:12:04 +00:00
[idd] isolate post-processing by framebuffer slot
Give each in-flight framebuffer a complete post-processing chain and its own COMPUTE recording slot while retaining one physical queue. Claim framebuffer ownership before submitting compute work, and use the frame index for both COMPUTE and COPY recording state. Drain in-flight work before reconfiguring either chain so COPY never references replaced effect resources. Require both chains to contain the same effects, preserve pending damage, and release ownership on every pre-copy failure path.
This commit is contained in:
@@ -97,17 +97,20 @@ public:
|
||||
class CPostProcessor
|
||||
{
|
||||
private:
|
||||
std::shared_ptr<CD3D12Device> m_dx12Device;
|
||||
ComPtr<ID3D12Device3> m_device;
|
||||
std::shared_ptr<CD3D12Device> m_dx12Device;
|
||||
ComPtr<ID3D12Device3> m_device;
|
||||
std::vector<std::unique_ptr<CPostProcessEffect>> m_effects;
|
||||
D12FrameFormat m_srcFormat = {};
|
||||
D12FrameFormat m_dstFormat = {};
|
||||
bool m_effectsActive = false;
|
||||
D12FrameFormat m_srcFormat = {};
|
||||
D12FrameFormat m_dstFormat = {};
|
||||
bool m_effectsActive = false;
|
||||
bool m_configured = false;
|
||||
|
||||
public:
|
||||
bool Init(std::shared_ptr<CD3D12Device> dx12Device);
|
||||
void Reset();
|
||||
|
||||
bool HasSameEffectChain(const CPostProcessor& other) const;
|
||||
bool NeedsReconfigure(const D12FrameFormat& srcFormat) const;
|
||||
bool Configure(const D12FrameFormat& srcFormat, bool * formatChanged);
|
||||
void AdjustFrameDamage(RECT dirtyRects[], unsigned * nbDirtyRects);
|
||||
ComPtr<ID3D12Resource> Run(
|
||||
|
||||
Reference in New Issue
Block a user