MCPcopy Create free account
hub / github.com/carbonengine/trinity / GetTempBuffer

Method GetTempBuffer

trinity/Tr2GpuResourcePool.cpp:188–224  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

186}
187
188Tr2GpuResourcePool::Buffer Tr2GpuResourcePool::GetTempBuffer( const char* name, const Tr2BufferDescriptionAL& desc )
189{
190 if( m_outer && !m_debugMode )
191 {
192 return m_outer->GetTempBuffer( name, desc );
193 }
194 if( desc.count == 0 )
195 {
196 CCP_LOGERR( "Invalid buffer description for a temporary buffer %s (elements=%u, stride=%u, format=%u)", name, desc.count, desc.stride, (uint32_t)desc.format );
197 return {};
198 }
199 auto found = find_if( begin( m_tempBuffers ), end( m_tempBuffers ), [&]( const auto& x ) {
200 if( m_debugMode )
201 {
202 return x->lockCount == 0 && CompatibleDescriptions( x->resource.GetDesc(), desc ) && x->name == name;
203 }
204 return x->lockCount == 0 && CompatibleDescriptions( x->resource.GetDesc(), desc );
205 } );
206 USE_MAIN_THREAD_RENDER_CONTEXT();
207 if( found == end( m_tempBuffers ) )
208 {
209 auto buf = std::make_shared<BufferRec>();
210 if( FAILED( buf->resource.Create( desc, nullptr, renderContext ) ) )
211 {
212 CCP_LOGERR( "Failed to create a temporary buffer %s (elements=%u, stride=%u, format=%u)", name, desc.count, desc.stride, (uint32_t)desc.format );
213 return Buffer();
214 }
215 buf->resource.SetName( name );
216 buf->lastAccessFrame = renderContext.GetRecordingFrameNumber();
217 buf->name = name;
218 m_tempBuffers.push_back( buf );
219 return Buffer( buf );
220 }
221 ( *found )->lastAccessFrame = renderContext.GetRecordingFrameNumber();
222 AppendName( *found, name );
223 return Buffer( *found );
224}
225
226Tr2GpuResourcePool::Buffer Tr2GpuResourcePool::GetPersistentBuffer( const char* name, const Tr2BufferDescriptionAL& desc, const BufferInitializer& initializer )
227{

Callers 2

PerformPassMethod · 0.80
RenderDynamicExposureMethod · 0.80

Calls 8

CompatibleDescriptionsFunction · 0.85
BufferClass · 0.85
AppendNameFunction · 0.85
beginFunction · 0.70
endFunction · 0.70
CreateMethod · 0.45
SetNameMethod · 0.45

Tested by

no test coverage detected