mirror of
https://github.com/id-Software/DOOM-3-BFG.git
synced 2025-03-15 07:00:58 +00:00
Perf: Only write constant buffer if it has changed
This commit is contained in:
parent
62429d8f46
commit
ff29a5dbd4
4 changed files with 12 additions and 8 deletions
|
@ -263,7 +263,6 @@ void idRenderBackend::DrawElementsWithCounters( const drawSurf_t* surf )
|
|||
changeState = true;
|
||||
}
|
||||
|
||||
// TODO: Only update the constant buffer if it was updated at all.
|
||||
renderProgManager.CommitConstantBuffer( commandList );
|
||||
|
||||
if( changeState )
|
||||
|
|
|
@ -294,6 +294,8 @@ void idRenderProgManager::SetUniformValue( const renderParm_t rp, const float* v
|
|||
{
|
||||
uniforms[rp][i] = value[i];
|
||||
}
|
||||
|
||||
uniformsChanged = true;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -304,16 +306,17 @@ idRenderProgManager::ZeroUniforms
|
|||
void idRenderProgManager::ZeroUniforms()
|
||||
{
|
||||
memset( uniforms.Ptr(), 0, uniforms.Allocated() );
|
||||
|
||||
uniformsChanged = true;
|
||||
}
|
||||
|
||||
/*
|
||||
================================================================================================
|
||||
idRenderProgManager::CommitConstantBuffer
|
||||
================================================================================================
|
||||
*/
|
||||
// Only updates the constant buffer if it was updated at all
|
||||
void idRenderProgManager::CommitConstantBuffer( nvrhi::ICommandList* commandList )
|
||||
{
|
||||
commandList->writeBuffer( constantBuffer, uniforms.Ptr(), uniforms.Allocated() );
|
||||
if( uniformsChanged )
|
||||
{
|
||||
commandList->writeBuffer( constantBuffer, uniforms.Ptr(), uniforms.Allocated() );
|
||||
|
||||
//commandList->setPushConstants( uniforms.Ptr(), uniforms.Allocated() );
|
||||
uniformsChanged = false;
|
||||
}
|
||||
}
|
|
@ -98,6 +98,7 @@ void idRenderProgManager::Init( nvrhi::IDevice* _device )
|
|||
device = _device;
|
||||
|
||||
uniforms.SetNum( RENDERPARM_TOTAL, vec4_zero );
|
||||
uniformsChanged = false;
|
||||
|
||||
constantBuffer = device->createBuffer(
|
||||
nvrhi::utils::CreateVolatileConstantBufferDesc( uniforms.Allocated(),
|
||||
|
|
|
@ -1034,6 +1034,7 @@ private:
|
|||
idList<renderProg_t, TAG_RENDER> renderProgs;
|
||||
idList<shader_t, TAG_RENDER> shaders;
|
||||
idStaticList< idVec4, RENDERPARM_TOTAL > uniforms;
|
||||
bool uniformsChanged;
|
||||
nvrhi::IDevice* device;
|
||||
|
||||
using VertexAttribDescList = idList< nvrhi::VertexAttributeDesc >;
|
||||
|
|
Loading…
Reference in a new issue