[Top][All Lists]
[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!");
}
- [Gzz-commits] gzz gfx/demo/mipzip.py gzz/gfx/gl/MipzipLoader....,
Tuomas J. Lukka <=