Skip pixel debugging comparison in Iter_Test when writes are masked out

This commit is contained in:
baldurk
2020-02-06 17:58:42 +00:00
parent e012c82168
commit c2e180ea28
3 changed files with 76 additions and 2 deletions
+14
View File
@@ -329,6 +329,20 @@ For some APIs that don't distinguish by entry point, this may be empty.
)");
rdcarray<BoundResource> GetOutputTargets() const;
DOCUMENT(R"(Retrieves the current color blending states, per target.
:return: The currently color blend states.
:rtype: ``list`` of :class:`ColorBlend`.
)");
rdcarray<ColorBlend> GetColorBlends() const;
DOCUMENT(R"(Determines whether or not independent blending is enabled.
:return: A boolean indicating if independent blending is enabled.
:rtype: ``bool``
)");
bool IsIndependentBlendingEnabled() const;
private:
const D3D11Pipe::State *m_D3D11 = NULL;
const D3D12Pipe::State *m_D3D12 = NULL;
+54
View File
@@ -1420,3 +1420,57 @@ rdcarray<BoundResource> PipeState::GetOutputTargets() const
return ret;
}
rdcarray<ColorBlend> PipeState::GetColorBlends() const
{
if(IsCaptureLoaded())
{
if(IsCaptureD3D11())
{
return m_D3D11->outputMerger.blendState.blends;
}
else if(IsCaptureD3D12())
{
return m_D3D12->outputMerger.blendState.blends;
}
else if(IsCaptureGL())
{
return m_GL->framebuffer.blendState.blends;
}
else if(IsCaptureVK())
{
return m_Vulkan->colorBlend.blends;
}
}
return {};
}
bool PipeState::IsIndependentBlendingEnabled() const
{
if(IsCaptureLoaded())
{
if(IsCaptureD3D11())
{
return m_D3D11->outputMerger.blendState.independentBlend;
}
else if(IsCaptureD3D12())
{
return m_D3D12->outputMerger.blendState.independentBlend;
}
else if(IsCaptureGL())
{
// GL is always implicitly independent blending, just that if you set it in a non-independent
// way it sets all states at once
return true;
}
else if(IsCaptureVK())
{
// similarly for vulkan, there's a physical device feature but it just requires that all
// states must be identical
return true;
}
}
return {};
}