Update gfxD3D11Shader.cpp

cleanups
This commit is contained in:
marauder2k7 2024-02-26 16:38:56 +00:00
parent b979f4befc
commit c876e86957

View file

@ -164,8 +164,6 @@ GFXD3D11ShaderConstBuffer::GFXD3D11ShaderConstBuffer( GFXD3D11Shader* shader)
GFXD3D11ShaderConstBuffer::~GFXD3D11ShaderConstBuffer() GFXD3D11ShaderConstBuffer::~GFXD3D11ShaderConstBuffer()
{ {
mBufferMap.clear();
for (U32 i = 0; i < 6; i++) for (U32 i = 0; i < 6; i++)
{ {
for (U32 j = 0; j < 16; j++) for (U32 j = 0; j < 16; j++)
@ -469,17 +467,11 @@ const String GFXD3D11ShaderConstBuffer::describeSelf() const
void GFXD3D11ShaderConstBuffer::addBuffer(U32 bufBindingPoint, GFXShaderStage shaderStage, U32 size) void GFXD3D11ShaderConstBuffer::addBuffer(U32 bufBindingPoint, GFXShaderStage shaderStage, U32 size)
{ {
const BufferKey bufKey(bufBindingPoint, shaderStage); const BufferKey bufKey(bufBindingPoint, shaderStage);
BufferMap::Iterator buffer = mBufferMap.find(bufKey); // doesnt matter if its already added.
// already added? pass...
if (buffer != mBufferMap.end())
return;
// new buffer with our size.
U8* buf = new U8[size]; U8* buf = new U8[size];
dMemset(buf, 0, size); dMemset(buf, 0, size);
mBufferMap[bufKey].data = buf; mBufferMap[bufKey].data = buf;
mBufferMap[bufKey].size = size; mBufferMap[bufKey].size = size;
// always dirty on new.
mBufferMap[bufKey].isDirty = true; mBufferMap[bufKey].isDirty = true;
D3D11_BUFFER_DESC cbDesc; D3D11_BUFFER_DESC cbDesc;
@ -515,23 +507,31 @@ void GFXD3D11ShaderConstBuffer::activate( GFXD3D11ShaderConstBuffer *prevShaderB
if (prevShaderBuffer != this) if (prevShaderBuffer != this)
{ {
if (prevShaderBuffer)
const ConstantBuffer prevBuffer = prevShaderBuffer->mBufferMap[i->key];
if (prevBuffer.data && !prevBuffer.isDirty)
{ {
if (prevBuffer.size != thisBuff.size) const ConstantBuffer prevBuffer = prevShaderBuffer->mBufferMap[i->key];
{
thisBuff.isDirty = true;
}
if (dMemcmp(prevBuffer.data, thisBuff.data, thisBuff.size) != 0) if (prevBuffer.data && !prevBuffer.isDirty)
{ {
thisBuff.isDirty = true; if (prevBuffer.size != thisBuff.size)
{
thisBuff.isDirty = true;
}
else
{
if (dMemcmp(prevBuffer.data, thisBuff.data, thisBuff.size) != 0)
{
thisBuff.isDirty = true;
}
else
{
thisBuff.isDirty = false;
}
}
} }
else else
{ {
thisBuff.isDirty = false; thisBuff.isDirty = true;
} }
} }
else else
@ -580,12 +580,6 @@ void GFXD3D11ShaderConstBuffer::onShaderReload( GFXD3D11Shader *shader )
} }
} }
for (BufferMap::Iterator i = mBufferMap.begin(); i != mBufferMap.end(); i++)
{
delete[] i->value.data;
}
mBufferMap.clear();
for (GFXD3D11Shader::BufferMap::Iterator i = shader->mBuffers.begin(); i != shader->mBuffers.end(); ++i) for (GFXD3D11Shader::BufferMap::Iterator i = shader->mBuffers.begin(); i != shader->mBuffers.end(); ++i)
{ {
// add our buffer descriptions to the full const buffer. // add our buffer descriptions to the full const buffer.
@ -614,9 +608,8 @@ GFXD3D11Shader::GFXD3D11Shader()
GFXD3D11Shader::~GFXD3D11Shader() GFXD3D11Shader::~GFXD3D11Shader()
{ {
mHandles.clear(); for (HandleMap::Iterator i = mHandles.begin(); i != mHandles.end(); i++)
delete i->value;
mBuffers.clear();
// release shaders // release shaders
SAFE_RELEASE(mVertShader); SAFE_RELEASE(mVertShader);