mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-28 21:01:04 +00:00
Add a specialisation for buffer reference add/remove
* This skips some potentially expensive (and redundant) checks if the buffer is a view.
This commit is contained in:
@@ -601,6 +601,38 @@ void D3D11RenderState::ReleaseRef(ID3D11DeviceChild *p)
|
||||
}
|
||||
}
|
||||
|
||||
// these are overloads that take a buffer to skip the view IsAlloc checks
|
||||
|
||||
void D3D11RenderState::TakeRef(ID3D11Buffer *p)
|
||||
{
|
||||
if(p)
|
||||
{
|
||||
p->AddRef();
|
||||
if(m_ImmediatePipeline)
|
||||
{
|
||||
m_pDevice->InternalRef();
|
||||
|
||||
// see above
|
||||
((WrappedDeviceChild11<ID3D11Buffer> *)p)->PipelineAddRef();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void D3D11RenderState::ReleaseRef(ID3D11Buffer *p)
|
||||
{
|
||||
if(p)
|
||||
{
|
||||
p->Release();
|
||||
if(m_ImmediatePipeline)
|
||||
{
|
||||
m_pDevice->InternalRelease();
|
||||
|
||||
// see above
|
||||
((WrappedDeviceChild11<ID3D11Buffer> *)p)->PipelineRelease();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool D3D11RenderState::IsRangeBoundForWrite(const ResourceRange &range)
|
||||
{
|
||||
for(UINT i = 0; i < D3D11_1_UAV_SLOT_COUNT; i++)
|
||||
|
||||
@@ -97,6 +97,9 @@ struct D3D11RenderState
|
||||
void TakeRef(ID3D11DeviceChild *p);
|
||||
void ReleaseRef(ID3D11DeviceChild *p);
|
||||
|
||||
void TakeRef(ID3D11Buffer *p);
|
||||
void ReleaseRef(ID3D11Buffer *p);
|
||||
|
||||
template <typename T>
|
||||
void ChangeRefRead(T *&stateItem, T *newItem)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user