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:
@@ -137,7 +137,7 @@ CD3D12Device::InitResult CD3D12Device::Init(CIVSHMEM &ivshmem,
|
||||
|
||||
if (m_computeEnabled &&
|
||||
!m_computeQueue.Init(m_device.Get(), D3D12_COMMAND_LIST_TYPE_COMPUTE,
|
||||
L"Compute", CD3D12CommandSlot::FAST, 1))
|
||||
L"Compute", CD3D12CommandSlot::FAST, 2))
|
||||
return InitResult::FAILURE;
|
||||
|
||||
DEBUG_INFO("Created CD3D12Device");
|
||||
@@ -207,7 +207,7 @@ CD3D12CommandSlot * CD3D12Device::GetCopySlot(unsigned frameIndex)
|
||||
return m_copyQueue.Acquire(frameIndex);
|
||||
}
|
||||
|
||||
CD3D12CommandSlot * CD3D12Device::GetComputeSlot()
|
||||
CD3D12CommandSlot * CD3D12Device::GetComputeSlot(unsigned frameIndex)
|
||||
{
|
||||
if (!m_computeEnabled)
|
||||
{
|
||||
@@ -215,5 +215,5 @@ CD3D12CommandSlot * CD3D12Device::GetComputeSlot()
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return m_computeQueue.Acquire();
|
||||
return m_computeQueue.Acquire(frameIndex);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user