Textures Reloading Every Frame

New Message Reply Date view Thread view Subject view Author view

From: Bill Moore (bmoore++at++world.northgrum.com)
Date: 05/04/2000 18:44:29


I modified simple.c to benchmark some models and I noticed that the
textures appear to be reloading every frame. I played with it a little
bit more and noticed it only occurs when I compile n32 with gl on an
Onyx/IR machine. If I compile o32 with gl, o32 with opengl, or n32 with
opengl it works fine. I'm running under Irix 6.5.6m and Performer 2.7.2.
I've attached a copy of simple.c, the make file, and a hinv from the
machine. Some of my applications are n32/gl and it is happening with
them also, so I need to figure out why this is happening. Does anyone
have a fix or a suggestion?

Thanks
Bill

8 196 MHZ IP25 Processors
CPU: MIPS R10000 Processor Chip Revision: 3.1
FPU: MIPS R10010 Floating Point Chip Revision: 0.0
Main memory size: 384 Mbytes, 2-way interleaved
Instruction cache size: 32 Kbytes
Data cache size: 32 Kbytes
Secondary unified instruction/data cache size: 2 Mbytes
Integral SCSI controller 0: Version WD33C95A, single ended, revision 0
  CDROM: unit 5 on SCSI controller 0
  Tape drive: unit 6 on SCSI controller 0: DAT
  Tape drive: unit 7 on SCSI controller 0: QIC 150
Integral SCSI controller 1: Version WD33C95A, differential, revision 0
  Disk drive: unit 1 on SCSI controller 1
  Disk drive: unit 3 on SCSI controller 1
  Disk drive: unit 4 on SCSI controller 1
Integral EPC serial ports: 4
Integral EPC parallel port: Ebus slot 11
Graphics board: InfiniteReality
Integral Ethernet controller: et0, Ebus slot 11
I/O board, Ebus slot 11: IO4 revision 1
VME bus: adapter 45
VME bus: adapter 0 mapped to adapter 45
EPC external interrupts

PF_LIB = -limage -lXm -lXt -lXmu -lX11 -lfpe
IGL_LIB = -lpf_igl -lpfdu_igl -lpfui -lpfutil_igl -lgl
OGL_LIB = -lpf_ogl -lpfdu_ogl -lpfui -lpfutil_ogl -lGL
LIBRARIES = -lm
#PF_LIBRARIES = $(OGL_LIB) $(PF_LIB) $(LIBRARIES)
PF_LIBRARIES = $(IGL_LIB) $(PF_LIB) $(LIBRARIES)

all: simple_o32 simple_n32

simple_o32: simple_o32.o
        CC -o32 -o simple_o32 -Wl,-woff,15,-woff,134,-woff,84,-woff,85 simple_o32.o $(PF_LIBRARIES)

simple_o32.o: simple.c
        CC -c -o simple_o32.o -g -o32 -mips2 -DPF_C_API -DPF_CPLUSPLUS_API=0 -DIRISGL=1 simple.c

simple_n32: simple_n32.o
        CC -n32 -o simple_n32 -Wl,-woff,15,-woff,134,-woff,84,-woff,85 simple_n32.o $(PF_LIBRARIES)

simple_n32.o: simple.c
        CC -c -o simple_n32.o -g -n32 -mips3 -DPF_C_API -DPF_CPLUSPLUS_API=0 -DIRISGL=1 simple.c


/*
 * Copyright 1995, Silicon Graphics, Inc.
 * ALL RIGHTS RESERVED
 *
 * UNPUBLISHED -- Rights reserved under the copyright laws of the United
 * States. Use of a copyright notice is precautionary only and does not
 * imply publication or disclosure.
 *
 * U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND:
 * Use, duplication or disclosure by the Government is subject to restrictions
 * as set forth in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights
 * in Technical Data and Computer Software clause at DFARS 252.227-7013 and/or
 * in similar or successor clauses in the FAR, or the DOD or NASA FAR
 * Supplement. Contractor/manufacturer is Silicon Graphics, Inc.,
 * 2011 N. Shoreline Blvd. Mountain View, CA 94039-7311.
 *
 * Permission to use, copy, modify, distribute, and sell this software
 * and its documentation for any purpose is hereby granted without
 * fee, provided that (i) the above copyright notices and this
 * permission notice appear in all copies of the software and related
 * documentation, and (ii) the name of Silicon Graphics may not be
 * used in any advertising or publicity relating to the software
 * without the specific, prior written permission of Silicon Graphics.
 *
 * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
 * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
 *
 * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL,
 * INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY
 * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY
 * THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE
 * OR PERFORMANCE OF THIS SOFTWARE.
 *
 * simple.c: simple Performer program for programmer's guide
 *
 * $Revision: 1.47 $ $Date: 1995/11/22 14:36:13 $
 *
 */

#include <stdlib.h>
#include <Performer/pf.h>
#include <Performer/pfutil.h>
#include <Performer/pfdu.h>

/*
 * Usage() -- print usage advice and exit. This
 * procedure is executed in the application process.
 */
static void
Usage (void)
{
    pfNotify(PFNFY_FATAL, PFNFY_USAGE, "Usage: simple file.ext ...\n");
    exit(1);
}

int
main (int argc, char *argv[])
{
    float t = 0.0f;
    pfScene *scene;
    pfNode *root;
    pfPipe *p;
    pfPipeWindow *pw;
    pfChannel *chan;
    pfSphere bsphere;
   
    pfFrameStats *frameStats;
    

    if (argc < 2)
        Usage();

    /* Initialize Performer */
    pfInit();

    /* Use default multiprocessing mode based on number of
     * processors.
     */
    pfMultiprocess( PFMP_DEFAULT );

    /* Load all loader DSO's before pfConfig() forks */
    pfdInitConverter(argv[1]);

    /* initiate multi-processing mode set in pfMultiprocess call
     * FORKs for Performer processes, CULL and DRAW, etc. happen here.
     */
    pfConfig();

    /* Append to Performer search path, PFPATH, files in
     * /usr/share/Performer/data */
    pfFilePath(".:/usr/share/Performer/data");

    /* Read a single file, of any known type. */
    if ((root = pfdLoadFile(argv[1])) == NULL)
    {
        pfExit();
        exit(-1);
    }

    /* Attach loaded file to a new pfScene. */
    scene = pfNewScene();
    pfAddChild(scene, root);
    /* Create a pfLightSource and attach it to scene. */
    pfAddChild(scene, pfNewLSource());
    
    /* Configure and open GL window */
    p = pfGetPipe(0);
    pw = pfNewPWin(p);
    pfPWinType(pw, PFPWIN_TYPE_X);
    pfPWinName(pw, "IRIS Performer");
    pfPWinOriginSize(pw, 0, 0, 700, 700);
    /* Open and configure the GL window. */
    pfOpenPWin(pw);
    
    /* Create and configure a pfChannel. */
    chan = pfNewChan(p);
    pfChanScene(chan, scene);
    pfChanFOV(chan, 45.0f, 0.0f);

    frameStats = pfGetChanFStats(chan);
    pfFStatsClass(frameStats, PFSTATS_ENGFX, PFSTATS_ON);
    pfFStatsClass(frameStats, PFFSTATS_ENDB, PFSTATS_ON);

    /* determine extent of scene's geometry */
    pfGetNodeBSphere (root, &bsphere);
    pfChanNearFar(chan, 1.0f, 10.0f * bsphere.radius);

    /* Simulate for twenty seconds. */
    while (t < 20.0f)
    {
        pfCoord view;
        float s, c;

        /* Go to sleep until next frame time. */
        pfSync();

        /* Initiate cull/draw for this frame. */
        pfFrame();
        pfDrawChanStats(chan);
        /* Compute new view position. */
        t = pfGetTime();
        pfSinCos(45.0f*t, &s, &c);
        pfSetVec3(view.hpr, 45.0f*t, -10.0f, 0);
        pfSetVec3(view.xyz, 2.0f * bsphere.radius * s,
                -2.0f * bsphere.radius *c,
                 0.5f * bsphere.radius);
        pfChanView(chan, view.xyz, view.hpr);
    }

    /* Terminate parallel processes and exit. */
    pfExit();
}


New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2b29 : Thu May 04 2000 - 18:45:46 PDT

This message has been cleansed for anti-spam protection. Replace '++at++' in any mail addresses with the '@' symbol.