mirror of https://github.com/AxioDL/boo.git
D3D11 Buffer update fix
This commit is contained in:
parent
bcfff2bf7f
commit
6ee5e9011b
|
@ -34,6 +34,17 @@ struct SWindowRect
|
||||||
{
|
{
|
||||||
int location[2];
|
int location[2];
|
||||||
int size[2];
|
int size[2];
|
||||||
|
|
||||||
|
SWindowRect() {memset(this, 0, sizeof(SWindowRect));}
|
||||||
|
|
||||||
|
SWindowRect(int x, int y, int w, int h)
|
||||||
|
{
|
||||||
|
location[0] = x;
|
||||||
|
location[1] = y;
|
||||||
|
size[0] = w;
|
||||||
|
size[1] = h;
|
||||||
|
}
|
||||||
|
|
||||||
bool operator!=(const SWindowRect& other) const
|
bool operator!=(const SWindowRect& other) const
|
||||||
{
|
{
|
||||||
return location[0] != other.location[0] ||
|
return location[0] != other.location[0] ||
|
||||||
|
|
|
@ -34,7 +34,7 @@ static inline void ThrowIfFailed(HRESULT hr)
|
||||||
|
|
||||||
struct D3D11Data : IGraphicsData
|
struct D3D11Data : IGraphicsData
|
||||||
{
|
{
|
||||||
std::atomic_size_t m_refCount = 4;
|
size_t m_deleteCountdown = 4;
|
||||||
std::vector<std::unique_ptr<class D3D11ShaderPipeline>> m_SPs;
|
std::vector<std::unique_ptr<class D3D11ShaderPipeline>> m_SPs;
|
||||||
std::vector<std::unique_ptr<struct D3D11ShaderDataBinding>> m_SBinds;
|
std::vector<std::unique_ptr<struct D3D11ShaderDataBinding>> m_SBinds;
|
||||||
std::vector<std::unique_ptr<class D3D11GraphicsBufferS>> m_SBufs;
|
std::vector<std::unique_ptr<class D3D11GraphicsBufferS>> m_SBufs;
|
||||||
|
@ -47,10 +47,10 @@ struct D3D11Data : IGraphicsData
|
||||||
|
|
||||||
bool decref()
|
bool decref()
|
||||||
{
|
{
|
||||||
size_t res = std::atomic_fetch_sub(&m_refCount, 1);
|
if (!m_deleteCountdown)
|
||||||
if (!res)
|
|
||||||
Log.report(LogVisor::FatalError, "Can't decrement 0-data");
|
Log.report(LogVisor::FatalError, "Can't decrement 0-data");
|
||||||
if (res == 1)
|
--m_deleteCountdown;
|
||||||
|
if (!m_deleteCountdown)
|
||||||
{
|
{
|
||||||
delete this;
|
delete this;
|
||||||
return true;
|
return true;
|
||||||
|
@ -1189,9 +1189,9 @@ void D3D11CommandQueue::ProcessDynamicLoads(ID3D11DeviceContext* ctx)
|
||||||
for (D3D11Data* d : gfxF->m_committedData)
|
for (D3D11Data* d : gfxF->m_committedData)
|
||||||
{
|
{
|
||||||
for (std::unique_ptr<D3D11GraphicsBufferD>& b : d->m_DBufs)
|
for (std::unique_ptr<D3D11GraphicsBufferD>& b : d->m_DBufs)
|
||||||
b->update(ctx, m_fillBuf);
|
b->update(ctx, m_drawBuf);
|
||||||
for (std::unique_ptr<D3D11TextureD>& t : d->m_DTexs)
|
for (std::unique_ptr<D3D11TextureD>& t : d->m_DTexs)
|
||||||
t->update(ctx, m_fillBuf);
|
t->update(ctx, m_drawBuf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue