[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] libvob/doc memorymanagement.rst
From: |
Tuomas J. Lukka |
Subject: |
[Gzz-commits] libvob/doc memorymanagement.rst |
Date: |
Sun, 08 Jun 2003 09:46:09 -0400 |
CVSROOT: /cvsroot/libvob
Module name: libvob
Branch:
Changes by: Tuomas J. Lukka <address@hidden> 03/06/08 09:46:09
Modified files:
doc : memorymanagement.rst
Log message:
docfinished
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/doc/memorymanagement.rst.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
Patches:
Index: libvob/doc/memorymanagement.rst
diff -u libvob/doc/memorymanagement.rst:1.1 libvob/doc/memorymanagement.rst:1.2
--- libvob/doc/memorymanagement.rst:1.1 Sun Jun 8 07:53:20 2003
+++ libvob/doc/memorymanagement.rst Sun Jun 8 09:46:09 2003
@@ -67,3 +67,77 @@
MemoryPartitioner - dividing memory between mipzips
---------------------------------------------------
+
+The MipzipLoader class will not solve our texture memory
+problem by itself: it provides the mechanism to load textures
+at desired resolutions, removing and adding detail as necessary,
+but someone needs to make the decision which textures are important.
+
+For some application architectures, this can be done by the
+application itself, centrally; however, e.g., in the Fenfire system,
+there may be different views and no single point that knows
+everything (due to polymorphism and encapsulation).
+
+For this, we shall use an abstraction of a memory pool
+(MemoryPartitioner) and objects that want some memory but
+are able to degrade their quality gracefully when decreasing
+the amount of memory.
+
+.. UML:: memorypartitioner1
+
+ class MemoryPartitioner
+ methods
+ request(MemoryConsumer consumer, float importance, q)
+ assoc aggreg - multi(*) MemoryConsumer
+
+ class MemoryConsumer "interface"
+ methods
+ getMaxBytes(float quality)
+ setReservation(float priority, int bytes, float quality)
+
+ ---
+
+ vertically(60, xxxx, MemoryPartitioner, MemoryConsumer);
+
+The way this is connected to mipzips is through MipzipLoader:
+
+.. UML:: memorypartitionermipzip
+
+ class MemoryPartitioner
+
+
+ class MemoryConsumer "interface"
+
+ class MipzipLoader
+
+ class MipzipMemoryConsumer
+ assoc aggreg - multi(1) MipzipLoader
+ realize MemoryConsumer
+
+ class ClientClass
+
+ dep "requestMemory" ClientClass MemoryPartitioner
+ dep "create" ClientClass MipzipMemoryConsumer
+ dep "getTexture" ClientClass MipzipLoader
+
+ dep "use" MemoryPartitioner MemoryConsumer
+
+ ---
+
+ horizontally(100, xxxx, MemoryPartitioner, MemoryConsumer);
+ horizontally(60, zzzz, MipzipMemoryConsumer, MipzipLoader);
+ vertically(60, yyyy, MemoryConsumer, MipzipMemoryConsumer);
+ vertically(100, qqqq, MipzipMemoryConsumer, ClientClass);
+
+
+
+
+To do
+-----
+
+To obtain better estimates of the relative importances of different
+textures, we should not only rely on calls when building the view
+but provide in, e.g., PaperQuad some feedback -generating routine
+which would allow us to read the number of pixels that were actually
+rendered (this is possible using some OpenGL extensions).
+