gzz-commits
[Top][All Lists]
Advanced

[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).
+




reply via email to

[Prev in Thread] Current Thread [Next in Thread]