void FSlateRHIRenderingPolicy::EndDrawingWindows() { check( IsInRenderingThread() ); bShouldShrinkResources = false; uint32 TotalVertexBufferMemory = 0; uint32 TotalIndexBufferMemory = 0; uint32 TotalVertexBufferUsage = 0; uint32 TotalIndexBufferUsage = 0; for( int32 BufferIndex = 0; BufferIndex < 2; ++BufferIndex ) { TotalVertexBufferMemory += VertexBuffers[BufferIndex].GetBufferSize(); TotalVertexBufferUsage += VertexBuffers[BufferIndex].GetBufferUsageSize(); TotalIndexBufferMemory += IndexBuffers[BufferIndex].GetBufferSize(); TotalIndexBufferUsage += IndexBuffers[BufferIndex].GetBufferUsageSize(); } // How much larger the buffers can be than the required size. // @todo Slate probably could be more intelligent about this const uint32 MaxSizeMultiplier = 2; if( TotalVertexBufferMemory > TotalVertexBufferUsage*MaxSizeMultiplier || TotalIndexBufferMemory > TotalIndexBufferUsage*MaxSizeMultiplier ) { // The vertex buffer or index is more than twice the size of what is required. Shrink it bShouldShrinkResources = true; } SET_MEMORY_STAT( STAT_SlateVertexBufferMemory, TotalVertexBufferMemory ); SET_MEMORY_STAT( STAT_SlateIndexBufferMemory, TotalIndexBufferMemory ); }
void FSlateRHIRenderingPolicy::EndDrawingWindows() { check( IsInRenderingThread() ); uint32 TotalVertexBufferMemory = 0; uint32 TotalIndexBufferMemory = 0; uint32 TotalVertexBufferUsage = 0; uint32 TotalIndexBufferUsage = 0; uint32 MinVertexBufferSize = VertexBuffers[0].GetMinBufferSize(); uint32 MinIndexBufferSize = IndexBuffers[0].GetMinBufferSize(); for( int32 BufferIndex = 0; BufferIndex < SlateRHIConstants::NumBuffers; ++BufferIndex ) { TotalVertexBufferMemory += VertexBuffers[BufferIndex].GetBufferSize(); TotalVertexBufferUsage += VertexBuffers[BufferIndex].GetBufferUsageSize(); TotalIndexBufferMemory += IndexBuffers[BufferIndex].GetBufferSize(); TotalIndexBufferUsage += IndexBuffers[BufferIndex].GetBufferUsageSize(); } SET_MEMORY_STAT( STAT_SlateVertexBufferMemory, TotalVertexBufferMemory ); SET_MEMORY_STAT( STAT_SlateIndexBufferMemory, TotalIndexBufferMemory ); }
void FGenericPlatformMemory::UpdateStats() { FPlatformMemoryStats MemoryStats = FPlatformMemory::GetStats(); SET_MEMORY_STAT(STAT_TotalPhysical,MemoryStats.TotalPhysical); SET_MEMORY_STAT(STAT_TotalVirtual,MemoryStats.TotalVirtual); SET_MEMORY_STAT(STAT_PageSize,MemoryStats.PageSize); SET_MEMORY_STAT(STAT_TotalPhysicalGB,MemoryStats.TotalPhysicalGB); SET_MEMORY_STAT(STAT_AvailablePhysical,MemoryStats.AvailablePhysical); SET_MEMORY_STAT(STAT_AvailableVirtual,MemoryStats.AvailableVirtual); SET_MEMORY_STAT(STAT_UsedPhysical,MemoryStats.UsedPhysical); SET_MEMORY_STAT(STAT_PeakUsedPhysical,MemoryStats.PeakUsedPhysical); SET_MEMORY_STAT(STAT_UsedVirtual,MemoryStats.UsedVirtual); SET_MEMORY_STAT(STAT_PeakUsedVirtual,MemoryStats.PeakUsedVirtual); }
void FStatsMallocProfilerProxy::UpdateStats() { UsedMalloc->UpdateStats(); if( bEnabled ) { const int32 NumAllocPtrCalls = AllocPtrCalls.GetValue(); const int32 NumFreePtrCalls = FreePtrCalls.GetValue(); SET_DWORD_STAT( STAT_Memory_AllocPtr_Calls, NumAllocPtrCalls ); SET_DWORD_STAT( STAT_Memory_FreePtr_Calls, NumFreePtrCalls ); // AllocPtr, AllocSize SET_MEMORY_STAT( STAT_Memory_AllocPtr_Mem, NumAllocPtrCalls*(sizeof(FStatMessage)*2) ); // FreePtr SET_MEMORY_STAT( STAT_Memory_FreePtr_Mem, NumFreePtrCalls*(sizeof(FStatMessage)*1) ); AllocPtrCalls.Reset(); FreePtrCalls.Reset(); } }
virtual void UpdateMemoryUsage() override { // Update the stats descriptions memory usage. const int32 MemoryUsage = MemoryCounter.GetValue(); SET_MEMORY_STAT( STAT_StatDescMemory, MemoryUsage ); }
void FGenericPlatformMemory::SetupMemoryPools() { SET_MEMORY_STAT(MCR_Physical, 0); // "unlimited" physical memory, we still need to make this call to set the short name, etc SET_MEMORY_STAT(MCR_GPU, 0); // "unlimited" GPU memory, we still need to make this call to set the short name, etc SET_MEMORY_STAT(MCR_TexturePool, 0); // "unlimited" Texture memory, we still need to make this call to set the short name, etc }