gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] gzz gfx/demo/mipzip.py gzz/gfx/gl/MipzipLoader....


From: Tuomas J. Lukka
Subject: [Gzz-commits] gzz gfx/demo/mipzip.py gzz/gfx/gl/MipzipLoader....
Date: Fri, 17 Jan 2003 10:06:39 -0500

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Tuomas J. Lukka <address@hidden>        03/01/17 10:06:38

Modified files:
        gfx/demo       : mipzip.py 
        gzz/gfx/gl     : MipzipLoader.java MipzipMemoryConsumer.java 
        gzz/mem        : MemoryPartitioner.java 

Log message:
        Mipzip: I'm SEEING something

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/demo/mipzip.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/MipzipLoader.java.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/MipzipMemoryConsumer.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/mem/MemoryPartitioner.java.diff?tr1=1.8&tr2=1.9&r1=text&r2=text

Patches:
Index: gzz/gfx/demo/mipzip.py
diff -u gzz/gfx/demo/mipzip.py:1.1 gzz/gfx/demo/mipzip.py:1.2
--- gzz/gfx/demo/mipzip.py:1.1  Fri Jan 17 09:38:39 2003
+++ gzz/gfx/demo/mipzip.py      Fri Jan 17 10:06:37 2003
@@ -11,14 +11,16 @@
 from gfx.util.misc import *
 from gzz.gfx.gl import MipzipLoader, MipzipMemoryConsumer
 from gzz.mem import MemoryPartitioner
+from gzz.client import AbstractUpdateManager
 
 class Scene:
     def __init__(self):
-       self.mem = MemoryPartitioner(16 * 1024 * 1024)
+       self.mem = MemoryPartitioner(4 * 1024 * 1024)
        self.files = []
-       for f in glob.glob("../mstmpimg/*.mipzip"):
+       self.tex = []
+       for f in glob.glob("../mstmpimg/*.mipzip")[0:5]:
            ml = MipzipLoader(File(f))
-           mc = MipzipMemoryConsumer(ml)
+           mc = MipzipMemoryConsumer(self.mem, ml)
            self.files.append(mc)
            self.tex.append(getDListNocoords("""
                BindTexture TEXTURE_2D %s
@@ -26,8 +28,9 @@
        self.nrows = int(math.sqrt(len(self.files))) + 1
        self.x = 512
        self.y = 384
-       self.quad = getDListNocoords("""
+       self.quad = getDList("""
            Enable TEXTURE_2D
+           Color 1 1 1 1
            Begin QUADS
            TexCoord %(x0)s %(y0)s
            Vertex 0 0
@@ -41,20 +44,24 @@
        """ % { "x0" : .3, "y0" : .3, "x1": .35, "y1":.35 })
     def scene(self, vs):
        vs.map.put(background((.3,.7,.8)))
+       AbstractUpdateManager.setNoAnimation()
        w = vs.size.width / self.nrows
        h = vs.size.height / self.nrows
+       # print "Sc:",len(self.files)
        for x in range(0, self.nrows):
            for y in range(0, self.nrows):
                i = x + y * self.nrows
-               if i >= self.files.len:
-                   return
+               if i >= len(self.files):
+                   continue
                xc = x * w
-               yc = y * w
+               yc = y * h
                
                imp = 1 / (.1 + math.hypot(self.x - xc, self.y - yc))
-               self.files[i].getTexture(imp, 1000)
+               self.files[i].getTexture(imp, 4000)
 
-               vs.orthoCS(0, str((x,y)), 0, xc, yc, w, h)
+               cs = vs.orthoCS(0, str((x,y)), 0, xc, yc, w, h)
+               vs.map.put(self.tex[i])
+               vs.map.put(self.quad, cs)
 
 
     def mouse(self, ev):
@@ -62,3 +69,5 @@
        self.y = ev.getY()
        print self.x, self.y
        
+    def key(self, key):
+       return
Index: gzz/gzz/gfx/gl/MipzipLoader.java
diff -u gzz/gzz/gfx/gl/MipzipLoader.java:1.6 
gzz/gzz/gfx/gl/MipzipLoader.java:1.7
--- gzz/gzz/gfx/gl/MipzipLoader.java:1.6        Fri Jan 17 09:37:17 2003
+++ gzz/gzz/gfx/gl/MipzipLoader.java    Fri Jan 17 10:06:37 2003
@@ -101,6 +101,9 @@
         * thread.
         */
        synchronized void loadData() throws IOException {
+           if(dbg)
+               pa("LoadData "+MipzipLoader.this+" "+level+
+                       " "+state);
            if(state != STATE_NONE) return;
            // Not sure if required, but safer
            loadedData = readEntry(""+level);
@@ -113,6 +116,9 @@
         * Must be called in GL thread.
         */
        synchronized void texImage() {
+           if(dbg)
+               pa("TexImage "+MipzipLoader.this+" "+level+
+                       " "+state);
            if(state != STATE_DATALOADED) return;
            tex.compressedTexImage(level, texFormat,
                        size.width, size.height, 0,
@@ -127,6 +133,9 @@
         * Hope this really works.
         */
        synchronized void discard() {
+           if(dbg)
+               pa("Discard "+MipzipLoader.this+" "+level+
+                       " "+state);
            switch(state) {
            case STATE_INTEXTURE:
                tex.loadNull2D(level, texFormat, 
@@ -185,6 +194,7 @@
      */
     synchronized public void setGoalBaseLevel(int level,
                                Background bg, float priority) {
+       if(dbg) pa("MipzipLoader "+this+" goal "+level);
        this.goalBaseLevel = level;
        this.bg = bg;
        this.priority = priority;
@@ -203,6 +213,7 @@
     };
 
     synchronized private void runBg() {
+       if(dbg) pa("MipzipLoader "+this+" runBg!!");
        // See what data is missing and load it
        for(int i=levels.length-1; i >= goalBaseLevel && i >= 0;
                    i--) {
@@ -229,6 +240,7 @@
     // If yes, discard and reschedule.
     // Then, set base level and return.
     synchronized private void runGL() {
+       if(dbg) pa("MipzipLoader "+this+" runGL!!");
        for(int i=0; i<goalBaseLevel && i < levels.length-1; 
                                                i++) {
            if(levels[i].state != STATE_NONE) {
@@ -284,7 +296,7 @@
     /** Get the level that uses at most given amount of memory.
      * @return The level index.
      */
-    public int getLevelBytes(int memory) {
+    public int getLevelForBytes(int memory) {
        for(int i = 0; i<levels.length; i++) {
            if(getMemory(i) <= memory) return i;
        }
@@ -303,8 +315,11 @@
        int maxdim = Math.max(levels[0].size.height, levels[0].size.width);
        float ratio = maxdim / quality;
        int l = (int)(Math.log(ratio) / LG2);
-       l = Math.max(0, l);
-       l = Math.min(levels.length-1, l);
+       int lc = Math.max(0, l);
+       lc = Math.min(levels.length-1, lc);
+       if(false) pa("Mipzip level4qual: "+this+" "+
+                   quality+" "+maxdim+" "+ratio+" "+
+                   l+" "+levels.length+" "+lc);
        return l;
     }
 
Index: gzz/gzz/gfx/gl/MipzipMemoryConsumer.java
diff -u gzz/gzz/gfx/gl/MipzipMemoryConsumer.java:1.1 
gzz/gzz/gfx/gl/MipzipMemoryConsumer.java:1.2
--- gzz/gzz/gfx/gl/MipzipMemoryConsumer.java:1.1        Fri Jan 17 09:39:40 2003
+++ gzz/gzz/gfx/gl/MipzipMemoryConsumer.java    Fri Jan 17 10:06:37 2003
@@ -8,17 +8,26 @@
 /** An adapter between MipzipLoader and MemoryConsumer.
  */
 public class MipzipMemoryConsumer implements MemoryConsumer {
+    public static boolean dbg = false;
+    final static void pa(String s) { System.out.println(s); }
+    
     MemoryPartitioner pool;
     MipzipLoader mipzip;
 
     public boolean getScalable() { return true; }
+
     public int getMaxBytes(float quality) {
-       return mipzip.getLevelBytes(
+       int mb = mipzip.getMemory(
                    mipzip.getLevelForQuality(quality));
+       if(dbg) 
+           pa("MipzipMemcons maxbytes "+quality+" = "+mb);
+       return mb;
     }
     public int setReservation(int bytes, float quality, Obs o) {
+       if(dbg) pa("MipzipMemcons setres "+mipzip+" "+
+               bytes+" "+quality);
        int lq = mipzip.getLevelForQuality(quality);
-       int lb = mipzip.getLevelBytes(bytes);
+       int lb = mipzip.getLevelForBytes(bytes);
        int level = Math.max(lb, lq);
 
        mipzip.setGoalBaseLevel(level, 
@@ -35,6 +44,9 @@
     }
 
     public GL.Texture getTexture(float importance, float quality) { 
+       if(dbg) pa("MipzipMemcons getTexture "+mipzip+" "+
+                   importance+" "+quality);
+       pool.request(this, importance, quality, null);
        return mipzip.getTexture(); 
     }
 
Index: gzz/gzz/mem/MemoryPartitioner.java
diff -u gzz/gzz/mem/MemoryPartitioner.java:1.8 
gzz/gzz/mem/MemoryPartitioner.java:1.9
--- gzz/gzz/mem/MemoryPartitioner.java:1.8      Fri Jan 17 09:37:17 2003
+++ gzz/gzz/mem/MemoryPartitioner.java  Fri Jan 17 10:06:37 2003
@@ -115,7 +115,7 @@
        }
 
        void fit(MemoryConsumer cons, int bytes) {
-           if(dbg) pa("Reservating "+bytes+" for "+cons);
+           if(dbg) pa("Reserving "+bytes+" for "+cons);
            cons.setReservation(bytes, curQuality, o);
            if(dbg) pa("Reserved");
            setBytes = bytes;
@@ -172,7 +172,7 @@
                    rerate();
                    AbstractUpdateManager.chg();
                    if(dbg) pa("rerated, sleeping");
-                   Thread.sleep(20);
+                   Thread.sleep(50);
                } catch(Exception e) { 
                    ZZLogger.exc(e, "gzz.mem.MemoryPartitioner thread!");
                }




reply via email to

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