| 272 | } |
| 273 | |
| 274 | void Tr2GpuResourcePool::ClearUnusedResources( uint64_t frameThreshold ) |
| 275 | { |
| 276 | USE_MAIN_THREAD_RENDER_CONTEXT(); |
| 277 | auto currentFrame = renderContext.GetRecordingFrameNumber(); |
| 278 | auto RetireResources = [currentFrame, frameThreshold]( auto& vec ) { |
| 279 | for( auto& resource : vec ) |
| 280 | { |
| 281 | if( resource->lockCount > 0 ) |
| 282 | { |
| 283 | CCP_LOGERR( "Tr2GpuResourcePool: resource %s is still locked while clearing unused resources", resource->name.c_str() ); |
| 284 | } |
| 285 | } |
| 286 | vec.erase( std::remove_if( begin( vec ), end( vec ), [&]( const auto& x ) { |
| 287 | return currentFrame >= frameThreshold + x->lastAccessFrame; |
| 288 | } ), |
| 289 | end( vec ) ); |
| 290 | }; |
| 291 | |
| 292 | RetireResources( m_tempTextures ); |
| 293 | RetireResources( m_persistentTextures ); |
| 294 | RetireResources( m_tempBuffers ); |
| 295 | RetireResources( m_persistentBuffers ); |
| 296 | } |
| 297 | |
| 298 | void Tr2GpuResourcePool::ClearAllUnusedResources( uint64_t frameThreshold ) |
| 299 | { |
no test coverage detected