mirror of https://github.com/AxioDL/boo.git
Added debug assert to D3D
This commit is contained in:
parent
aa787eb427
commit
7153168a2c
|
@ -485,6 +485,12 @@ struct D3D11ShaderDataBinding : IShaderDataBinding
|
||||||
std::unique_ptr<IGraphicsBuffer*[]> m_ubufs;
|
std::unique_ptr<IGraphicsBuffer*[]> m_ubufs;
|
||||||
size_t m_texCount;
|
size_t m_texCount;
|
||||||
std::unique_ptr<ITexture*[]> m_texs;
|
std::unique_ptr<ITexture*[]> m_texs;
|
||||||
|
|
||||||
|
#ifndef NDEBUG
|
||||||
|
/* Debugging aids */
|
||||||
|
bool m_committed = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
D3D11ShaderDataBinding(D3D11Context* ctx,
|
D3D11ShaderDataBinding(D3D11Context* ctx,
|
||||||
IShaderPipeline* pipeline,
|
IShaderPipeline* pipeline,
|
||||||
IGraphicsBuffer* vbuf, IGraphicsBuffer* instVbuf, IGraphicsBuffer* ibuf,
|
IGraphicsBuffer* vbuf, IGraphicsBuffer* instVbuf, IGraphicsBuffer* ibuf,
|
||||||
|
@ -507,6 +513,12 @@ struct D3D11ShaderDataBinding : IShaderDataBinding
|
||||||
|
|
||||||
void bind(ID3D11DeviceContext* ctx, int b)
|
void bind(ID3D11DeviceContext* ctx, int b)
|
||||||
{
|
{
|
||||||
|
#ifndef NDEBUG
|
||||||
|
if (!m_committed)
|
||||||
|
Log.report(LogVisor::FatalError,
|
||||||
|
"attempted to use uncommitted D3D11ShaderDataBinding");
|
||||||
|
#endif
|
||||||
|
|
||||||
m_pipeline->bind(ctx);
|
m_pipeline->bind(ctx);
|
||||||
|
|
||||||
ID3D11Buffer* bufs[2] = {};
|
ID3D11Buffer* bufs[2] = {};
|
||||||
|
@ -1114,14 +1126,18 @@ public:
|
||||||
m_deferredData = nullptr;
|
m_deferredData = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
IGraphicsDataToken commit()
|
GraphicsDataToken commit()
|
||||||
{
|
{
|
||||||
if (!m_deferredData)
|
if (!m_deferredData)
|
||||||
return IGraphicsDataToken(this, nullptr);
|
return GraphicsDataToken(this, nullptr);
|
||||||
D3D11Data* retval = m_deferredData;
|
D3D11Data* retval = m_deferredData;
|
||||||
|
#ifndef NDEBUG
|
||||||
|
for (std::unique_ptr<D3D11ShaderDataBinding>& b : retval->m_SBinds)
|
||||||
|
b->m_committed = true;
|
||||||
|
#endif
|
||||||
m_deferredData = nullptr;
|
m_deferredData = nullptr;
|
||||||
m_committedData.insert(retval);
|
m_committedData.insert(retval);
|
||||||
return IGraphicsDataToken(this, retval);
|
return GraphicsDataToken(this, retval);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -809,6 +809,12 @@ struct D3D12ShaderDataBinding : IShaderDataBinding
|
||||||
std::unique_ptr<ITexture*[]> m_texs;
|
std::unique_ptr<ITexture*[]> m_texs;
|
||||||
D3D12_VERTEX_BUFFER_VIEW m_vboView[2][2] = {{},{}};
|
D3D12_VERTEX_BUFFER_VIEW m_vboView[2][2] = {{},{}};
|
||||||
D3D12_INDEX_BUFFER_VIEW m_iboView[2];
|
D3D12_INDEX_BUFFER_VIEW m_iboView[2];
|
||||||
|
|
||||||
|
#ifndef NDEBUG
|
||||||
|
/* Debugging aids */
|
||||||
|
bool m_committed = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
D3D12ShaderDataBinding(D3D12Context* ctx,
|
D3D12ShaderDataBinding(D3D12Context* ctx,
|
||||||
IShaderPipeline* pipeline,
|
IShaderPipeline* pipeline,
|
||||||
IGraphicsBuffer* vbuf, IGraphicsBuffer* instVbuf, IGraphicsBuffer* ibuf,
|
IGraphicsBuffer* vbuf, IGraphicsBuffer* instVbuf, IGraphicsBuffer* ibuf,
|
||||||
|
@ -872,10 +878,18 @@ struct D3D12ShaderDataBinding : IShaderDataBinding
|
||||||
handle.Offset(1, incSz);
|
handle.Offset(1, incSz);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_committed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void bind(ID3D12GraphicsCommandList* list, int b)
|
void bind(ID3D12GraphicsCommandList* list, int b)
|
||||||
{
|
{
|
||||||
|
#ifndef NDEBUG
|
||||||
|
if (!m_committed)
|
||||||
|
Log.report(LogVisor::FatalError,
|
||||||
|
"attempted to use uncommitted D3D12ShaderDataBinding");
|
||||||
|
#endif
|
||||||
|
|
||||||
ID3D12DescriptorHeap* heap[] = {m_descHeap[b].Get()};
|
ID3D12DescriptorHeap* heap[] = {m_descHeap[b].Get()};
|
||||||
list->SetDescriptorHeaps(1, heap);
|
list->SetDescriptorHeaps(1, heap);
|
||||||
list->SetGraphicsRootDescriptorTable(0, m_descHeap[b]->GetGPUDescriptorHandleForHeapStart());
|
list->SetGraphicsRootDescriptorTable(0, m_descHeap[b]->GetGPUDescriptorHandleForHeapStart());
|
||||||
|
@ -1451,10 +1465,10 @@ public:
|
||||||
m_deferredData = nullptr;
|
m_deferredData = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
IGraphicsDataToken commit()
|
GraphicsDataToken commit()
|
||||||
{
|
{
|
||||||
if (!m_deferredData)
|
if (!m_deferredData)
|
||||||
return IGraphicsDataToken(this, nullptr);
|
return GraphicsDataToken(this, nullptr);
|
||||||
|
|
||||||
D3D12Data* retval = static_cast<D3D12Data*>(m_deferredData);
|
D3D12Data* retval = static_cast<D3D12Data*>(m_deferredData);
|
||||||
|
|
||||||
|
@ -1555,7 +1569,7 @@ public:
|
||||||
/* All set! */
|
/* All set! */
|
||||||
m_deferredData = nullptr;
|
m_deferredData = nullptr;
|
||||||
m_committedData.insert(retval);
|
m_committedData.insert(retval);
|
||||||
return IGraphicsDataToken(this, retval);
|
return GraphicsDataToken(this, retval);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue