Jean-Claude Bachmann (jean-claude.bachmann++at++artemedia.de)
Fri, 27 Mar 1998 17:22:12 +0100
When running the application with a moderately big textured model I get the following error code:
X Error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 151 (SGI-VIDEO-CONTROL)
Minor opcode of failed request: 16 ()
Resource id in failed request: 0xa1
Serial number of failed request: 221
Current serial number in output stream: 222
PF Notice: Caught SIGCHLD. Exiting due to death of child with pid 9693.
This error does NOT occur when using a small model!! But the textures of the bigger model should fit into the TRAM
without any problem. Using only a single pfPipeWindow everything runs fine.
When running the same model with another application we suddenly get, using the same preloading mechanism, framerates of
0.1 frames per second. And the textures are preloaded once for every pfPipeWindow created, even though they are all
using one pfPipe.
The application seems to be heavely occupied with something. When ommitting the preloading the movement is smooth,
indicating acceptable framerates.
This thing happens on an Onyx2 IR, Performer2.2 Irix 6.4.
Any ideas?
When using two hardware pipes. Do we have to preload the textures into each pipe? Is there a function to actually see
what is preloaded in the TRAM, if there is an overflow for some reason?
Thanks for the help
J.C.
--******************************************************************** * Artemedia GmbH | Tel.: +49 [0]30 25443 - 0 * * Jean-Claude Bachmann | Tel.: +49 0172 - 219 13 76 * * Hardenbergplatz 2 | Fax.: +49 [0]30 25443 - 400 * * D-10623 Berlin | email: jean-claude.bachmann++at++artemedia.de * * Germany | Web Page http://www.artemedia.de * ********************************************************************
We have some problems with texture preloading when using several pfPipeWindows.
The textures are preloaded in a draw callback.
I attached the makefile as well as a modified pguide version of multiwin.C.When running the application with a moderately big textured model I get the following error code:
X Error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 151 (SGI-VIDEO-CONTROL)
Minor opcode of failed request: 16 ()
Resource id in failed request: 0xa1
Serial number of failed request: 221
Current serial number in output stream: 222
PF Notice: Caught SIGCHLD. Exiting due to death of child with pid 9693.This error does NOT occur when using a small model!! But the textures of the bigger model should fit into the TRAM without any problem. Using only a single pfPipeWindow everything runs fine.
When running the same model with another application we suddenly get, using the same preloading mechanism, framerates of 0.1 frames per second. And the textures are preloaded once for every pfPipeWindow created, even though they are all using one pfPipe.The application seems to be heavely occupied with something. When ommitting the preloading the movement is smooth, indicating acceptable framerates.
This thing happens on an Onyx2 IR, Performer2.2 Irix 6.4.
Any ideas?
When using two hardware pipes. Do we have to preload the textures into each pipe? Is there a function to actually see what is preloaded in the TRAM, if there is an overflow for some reason?Thanks for the help
J.C.
-- ******************************************************************** * Artemedia GmbH | Tel.: +49 [0]30 25443 - 0 * * Jean-Claude Bachmann | Tel.: +49 0172 - 219 13 76 * * Hardenbergplatz 2 | Fax.: +49 [0]30 25443 - 400 * * D-10623 Berlin | email: jean-claude.bachmann++at++artemedia.de * * Germany | Web Page http://www.artemedia.de * ********************************************************************#!smake -J 1 #-------------------------------------------------------------------# #-- Makefile for Performer/src/pguide/libpf/C++ directory --# #-------------------------------------------------------------------# #-- RCS version information --# #-- $Revision: 1.86 $ --# #-- $Date: 1997/12/06 04:13:14 $ --# #-------------------------------------------------------------------# PFROOT ?= $(ROOT) # needed for motif.c PFDOMOTIF ?= 1 #if $(PFDOMOTIF) NEED_MOTIF_LIBS = 1 #endif # Needed for video program (siriusvtex.c dmvtex.c) PFDOVIDEO ?= 1 #if $(PFDOVIDEO) NEED_VIDEO_LIBS = 1 #endif include $(PFROOT)/usr/share/Performer/src/pfmakedefs # C++ programs must use CC as linker LINKERF=$(CXXF) .BEGIN: ++at++if [ $(PFDOMOTIF) = "1" ]; then \ echo "Linking with motif libraries. setenv PFDOMOTIF 0 to turn off."; \ else \ echo "Not linking with motif libraries can't build motif.c. setenv PFDOMOTIF 1 to enable."; \ fi #-- targets are the executables TARGETS = \ multiwin OBJECTS = $(TARGETS:=.o) \ culldl.o include $(PFROOT)/usr/share/Performer/src/pfmakerules // // 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. // // // multiwinC.C: Performer program to demonstrate multiple windows // in one pipe. Derived from simple.c // // $Revision: 1.10 $ // $Date: 1995/11/22 14:35:15 $ // // // Modified for test purposes. Not the original beauty any more!!!!! // #include#include #include #include #include #include #include #include #include static void OpenPipeWin(pfPipeWindow *pw); static void DrawChannel(pfChannel *chan, void *data); struct SharedStuff { pfList* texList; pfScene *scene; }; SharedStuff* shared; // // Usage() -- print usage advice and exit. This // procedure is executed in the application process. // static void Usage (void) { pfNotify(PFNFY_FATAL, PFNFY_USAGE, "Usage: multiwinC file.ext ...\n"); exit(1); } int main (int argc, char *argv[]) { float t = 0.0f; pfPipeWindow *pwin[16]; pfChannel *chan[16]; int loop; int NumWins = 4; char str[PF_MAXSTRING]; if (argc < 2) Usage(); // Initialize Performer pfInitArenas(); pfInit(); // Use default multiprocessing mode based on number of // processors. // pfMultiprocess( PFMP_DEFAULT ); // Load all loader DSO's before pfConfig() forks pfdInitConverter(argv[1]); shared = (SharedStuff*) pfMalloc(sizeof(SharedStuff), pfGetSharedArena()); // Configure multiprocessing mode and start parallel // processes. // pfConfig(); // Append to PFPATH additional standard directories where // geometry and textures exist // pfFilePath(".:/usr/share/Performer/data"); // Attach loaded file to a pfScene. shared->scene = new pfScene; // Read a single file, of any known type. for(int i=1; i < argc; i++) { pfNode *root = pfdLoadFile(argv[i]); if (root == NULL) { pfExit(); exit(-1); } shared->scene->addChild(root); } shared->texList=pfuMakeSceneTexList(shared->scene); // determine extent of scene's geometry pfSphere bsphere; shared->scene->getBound(&bsphere); // Create a pfLightSource and attach it to scene. shared->scene->addChild(new pfLightSource); // Configure and open GL window pfPipe *p = pfGetPipe(0); for (loop=0; loop < NumWins; loop++) { pwin[loop] = new pfPipeWindow(p); sprintf(str, "IRIS Performer - Win %d", loop); pwin[loop]->setName(str); pwin[loop]->setOriginSize((loop&0x1)*315, ((loop&0x2)>>1)*340, 300, 300); pwin[loop]->setConfigFunc(OpenPipeWin); pwin[loop]->config(); } // Create and configure a pfChannel. for (loop=0; loop < NumWins; loop++) { chan[loop] = new pfChannel(p); pwin[loop]->addChan(chan[loop]); chan[loop]->setScene(shared->scene); chan[loop]->setTravFunc(PFTRAV_DRAW,DrawChannel); chan[loop]->setNearFar(1.0f, 10.0f * bsphere.radius); chan[loop]->setFOV(45.0f, 0.0f); } // Simulate for twenty seconds. while (t < 600.0f) { float s, c; pfCoord view; // Go to sleep until next frame time. pfSync(); // Compute new view position. t = pfGetTime(); pfSinCos(45.0f*t, &s, &c); view.hpr.set(45.0f*t, -10.0f, 0); view.xyz.set(2.0f * bsphere.radius * s, -2.0f * bsphere.radius *c, 0.5f * bsphere.radius); for (loop=0; loop < NumWins; loop++) chan[loop]->setView(view.xyz, view.hpr); // Initiate cull/draw for this frame. pfFrame(); } // Terminate parallel processes and exit. pfExit(); return 0; } // // OpenPipeWin() -- create a GL window: set up the // window system, IRIS GL, and IRIS Performer. This // procedure is executed for each window in the draw process // for that pfPipe. // static void OpenPipeWin(pfPipeWindow *pw) { pfPipe *p = pw->getPipe(); // share GL objects with all the windows on the pipe pw->open(); // create a light source in the "south-west" (QIII) pfLight *Sun = new pfLight; Sun->setPos(-0.3f, -0.3f, 1.0f, 0.0f); } static void DrawChannel (pfChannel *chan, void *) { static int firsttime = 1; pfClear(PFCL_DEPTH | PFCL_COLOR | PFCL_STENCIL, NULL); if(firsttime) { cerr<<"WSConnection: "< getPWin()->getWSConnectionName() <<" FBConfigId: "< getPWin()->getFBConfigId() < texList->getNum();i++) { pfTexture* tex= (pfTexture*) shared->texList->get(i); if(!(tex->isLoaded())) { cerr<<"loading: "< getName()<<' '< getPipe()<<' '< load(); if(!(tex->isLoaded())) { cerr<<"loaded it again? "< getName()<
- Next message: Scott Lelieur: "Re: .ls loader?"
- Previous message: Lee Willis: "Re: Constructing pfASD"
This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:57:06 PDT