瀏覽代碼

Fixed resource dump display.
Slightly more accurate memory use calculations for resources.

Lasse Öörni 14 年之前
父節點
當前提交
aec8534665

+ 1 - 1
Engine/Engine/Engine.cpp

@@ -341,7 +341,7 @@ void Engine::DumpResources()
         if (num)
         {
             LOGRAW("Resource type " + i->second_.resources_.Begin()->second_->GetTypeName() +
-                ": count " + num + " memory use " + String(memoryUse) + "\n");
+                ": count " + String(num) + " memory use " + String(memoryUse) + "\n");
         }
     }
     

+ 1 - 1
Engine/Graphics/Animation.cpp

@@ -68,7 +68,7 @@ bool Animation::Load(Deserializer& source)
 {
     PROFILE(LoadAnimation);
     
-    unsigned memoryUse = 0;
+    unsigned memoryUse = sizeof(Animation);
     
     // Check ID
     if (source.ReadFileID() != "UANI")

+ 5 - 2
Engine/Graphics/Direct3D9/D3D9Shader.cpp

@@ -68,6 +68,8 @@ bool Shader::Load(Deserializer& source)
         return false;
     }
     
+    unsigned memoryUse = sizeof(Shader);
+    
     String fileName = GetFileName(source.GetName());
     shaderType_ = (ShaderType)source.ReadShort();
     isSM3_ = (source.ReadShort() == 3);
@@ -145,10 +147,11 @@ bool Shader::Load(Deserializer& source)
         if (variations_.Contains(nameHash))
             LOGERROR("Shader variation name hash collision: " + variationName);
         variations_[nameHash] = variation;
+        
+        memoryUse += sizeof(ShaderVariation) + dataSize;
     }
     
-    // This is not exactly accurate, but a reasonable estimate
-    SetMemoryUse(source.GetSize());
+    SetMemoryUse(memoryUse);
     return true;
 }
 

+ 1 - 1
Engine/Graphics/Direct3D9/D3D9Texture2D.cpp

@@ -273,7 +273,7 @@ bool Texture2D::Load(SharedPtr<Image> image, bool useAlpha)
         return false;
     }
     
-    unsigned memoryUse = 0;
+    unsigned memoryUse = sizeof(Texture2D);
     
     int quality = QUALITY_HIGH;
     Renderer* renderer = GetSubsystem<Renderer>();

+ 1 - 1
Engine/Graphics/Direct3D9/D3D9TextureCube.cpp

@@ -455,7 +455,7 @@ bool TextureCube::Load(CubeMapFace face, SharedPtr<Image> image, bool useAlpha)
     }
     
     faceMemoryUse_[face] = memoryUse;
-    unsigned totalMemoryUse = 0;
+    unsigned totalMemoryUse = sizeof(TextureCube);
     for (unsigned i = 0; i < MAX_CUBEMAP_FACES; ++i)
         totalMemoryUse += faceMemoryUse_[i];
     SetMemoryUse(totalMemoryUse);

+ 2 - 3
Engine/Graphics/Material.cpp

@@ -186,8 +186,8 @@ bool Material::Load(Deserializer& source)
         SetShadowCullMode((CullMode)GetStringListIndex(shadowCullElem.GetString("value"), cullModeNames, CULL_CCW));
     
     // Calculate memory use
-    unsigned memoryUse = 0;
-    memoryUse += sizeof(Material);
+    unsigned memoryUse = sizeof(Material);
+    
     memoryUse += techniques_.Size() * sizeof(TechniqueEntry);
     memoryUse += textures_.Size() * sizeof(SharedPtr<Texture>);
     memoryUse += shaderParameters_.Size() * sizeof(MaterialShaderParameter);
@@ -195,7 +195,6 @@ bool Material::Load(Deserializer& source)
     SetMemoryUse(memoryUse);
     CheckOcclusion();
     CheckSpecular();
-    
     return true;
 }
 

+ 11 - 1
Engine/Graphics/Model.cpp

@@ -92,7 +92,7 @@ bool Model::Load(Deserializer& source)
     vertexBuffers_.Clear();
     indexBuffers_.Clear();
     
-    SetMemoryUse(source.GetSize());
+    unsigned memoryUse = sizeof(Model);
     
     Vector<SharedArrayPtr<unsigned char> > rawVertexDatas;
     Vector<SharedArrayPtr<unsigned char> > rawIndexDatas;
@@ -112,6 +112,8 @@ bool Model::Load(Deserializer& source)
         
         unsigned vertexSize = buffer->GetVertexSize();
         unsigned char* data = (unsigned char*)buffer->Lock(0, vertexCount, LOCK_NORMAL);
+        memoryUse += sizeof(VertexBuffer) + vertexCount * vertexSize;
+        
         if (data)
         {
             source.Read(data, vertexCount * vertexSize);
@@ -121,6 +123,7 @@ bool Model::Load(Deserializer& source)
                 SharedArrayPtr<unsigned char> morphResetData(new unsigned char[morphCount * vertexSize]);
                 memcpy(morphResetData.Get(), &data[morphStart * vertexSize], morphCount * vertexSize);
                 buffer->SetMorphRangeResetData(morphResetData);
+                memoryUse += morphCount * vertexSize;
             }
             
             // Copy the raw position data for CPU-side operations
@@ -154,6 +157,8 @@ bool Model::Load(Deserializer& source)
         buffer->SetSize(indexCount, indexSize > sizeof(unsigned short));
         
         unsigned char* data = (unsigned char*)buffer->Lock(0, indexCount, LOCK_NORMAL);
+        memoryUse += sizeof(IndexBuffer) + indexCount * indexSize;
+        
         if (data)
         {
             source.Read(data, indexCount * indexSize);
@@ -215,6 +220,7 @@ bool Model::Load(Deserializer& source)
             geometry->SetRawData(rawVertexDatas[vertexBufferRef], rawIndexDatas[indexBufferRef]);
             
             geometryLodLevels.Push(geometry);
+            memoryUse += sizeof(Geometry);
         }
         
         geometries_.Push(geometryLodLevels);
@@ -253,17 +259,21 @@ bool Model::Load(Deserializer& source)
             source.Read(&newBuffer.morphData_[0], newBuffer.vertexCount_ * vertexSize);
             
             newMorph.buffers_[bufferIndex] = newBuffer;
+            memoryUse += sizeof(VertexBufferMorph) + newBuffer.vertexCount_ * vertexSize;
         }
         
         morphs_.Push(newMorph);
+        memoryUse += sizeof(ModelMorph);
     }
     
     // Read skeleton
     skeleton_.Load(source);
+    memoryUse += skeleton_.GetNumBones() * sizeof(Bone);
     
     // Read bounding box
     boundingBox_ = source.ReadBoundingBox();
     
+    SetMemoryUse(memoryUse);
     return true;
 }
 

+ 5 - 0
Engine/Graphics/OpenGL/OGLShader.cpp

@@ -62,9 +62,12 @@ bool Shader::Load(Deserializer& source)
     if (!graphics)
         return false;
     
+    unsigned memoryUse = sizeof(Shader);
+    
     sourceCodeLength_ = source.GetSize();
     sourceCode_ = new char[sourceCodeLength_];
     source.Read(&sourceCode_[0], sourceCodeLength_);
+    memoryUse += sourceCodeLength_;
     
     String fileName = GetFileName(source.GetName());
     String xmlName = source.GetName() + ".xml";
@@ -93,8 +96,10 @@ bool Shader::Load(Deserializer& source)
         variations_[nameHash] = newVariation;
         
         variationElem = variationElem.GetNext();
+        memoryUse += sizeof(ShaderVariation);
     }
     
+    SetMemoryUse(memoryUse);
     return true;
 }
 

+ 1 - 1
Engine/Graphics/OpenGL/OGLTexture2D.cpp

@@ -244,7 +244,7 @@ bool Texture2D::Load(SharedPtr<Image> image, bool useAlpha)
         return false;
     }
     
-    unsigned memoryUse = 0;
+    unsigned memoryUse = sizeof(Texture2D);
     
     int quality = QUALITY_HIGH;
     Renderer* renderer = GetSubsystem<Renderer>();

+ 1 - 1
Engine/Graphics/OpenGL/OGLTextureCube.cpp

@@ -431,7 +431,7 @@ bool TextureCube::Load(CubeMapFace face, SharedPtr<Image> image, bool useAlpha)
     }
     
     faceMemoryUse_[face] = memoryUse;
-    unsigned totalMemoryUse = 0;
+    unsigned totalMemoryUse = sizeof(TextureCube);
     for (unsigned i = 0; i < MAX_CUBEMAP_FACES; ++i)
         totalMemoryUse += faceMemoryUse_[i];
     SetMemoryUse(totalMemoryUse);

+ 1 - 2
Engine/Graphics/Technique.cpp

@@ -196,8 +196,7 @@ bool Technique::Load(Deserializer& source)
     }
     
     // Calculate memory use
-    unsigned memoryUse = 0;
-    memoryUse += sizeof(Technique);
+    unsigned memoryUse = sizeof(Technique);
     for (unsigned i = 0; i < MAX_PASSES; ++i)
     {
         if (passes_[i])