Allan Schaffer (aschaffe)
Wed, 13 Dec 1995 17:36:20 -0800
SGI performer Frequently Asked Questions (FAQ)
----------------------------------------------------------------------
- This FAQ follows the RFC1153 recommendations for message digests
and thus can be viewed easily with newsreaders that understand
message digests.
- Each question has a Subject: line, so you can easily step through
the answers with rn's ^G command.
- Each question is marked with a "dash number dash" so that you can
find any answer with a simple search pattern.
- Questions marked with a '+' are new this posting; those marked with
a '!' have significant new content since the last edition.
Topics covered in this FAQ:
--------------------------
================ General Topics ==================
! -1- What is IRIS Performer?
! -2- Where can I get more technical information about IRIS Performer?
-3- Where can I get more product information about IRIS Performer?
+ -4- The IRIS Performer mailing list
+ -5- The IRIS Performer FTP Archives
+ -6- The IRIS Performer WWW Pages in Silicon Surf
+ -7- The IRIS Performer Technical Report
-8- How does IRIS Performer relate to IRIS Inventor?
! -9- What are the released versions of IRIS Performer?
+ -10- Does IRIS Performer use IRIS GL or OpenGL?
-11- Is there a IRIS Performer file format?
! -12- What database file formats can IRIS Performer read?
! -13- Is there an IRIS Inventor file reader for IRIS Performer?
-14- What are the .tlf files used by the Performer Town and Village?
! -15- What are the minimum requirements for using IRIS Performer?
! -16- Binary Compatibility on different machines
! -17- Binary Compatibility on different releases
! -18- Guaranteeing Real Time performance
-19- How do I make GL calls from within a IRIS Performer program?
-20- How do I overlay graphics on top of my Performer scene?
-21- What is the difference between phases FREE, FLOAT, and LOCK?
+ -22- Use of PFTMPDIR to configure shared memory
! -23- Which rendering primitives does IRIS Performer support?
! -24- How do I do triangle meshes in Performer?
================= Known Problems =================
+ -25- Video Rate sometimes reported incorrectly
! -26- Problems with Performer Town or Village demos
-27- Antialiasing
-28- Coplanar Polygons & pfDecal on certain platforms
! -29- Networked graphics (DGL & GLX)
-30- Transparency
+ -31- Gangdraw and cursor loading
-32- Frame control on low- and mid-range machines
-33- Timing on pre-1992 platforms
+ -34- 2.0 Warnings from ld when building on IRIX 6.2
+ -35- 2.0 Bug OpenGL functions missing when building static executables
+ -36- 2.0 Bug Z buffer problems when moving windows on 5.3 EXtreme
+ -37- 2.0 Bug Use of more than 512 simultaneous textures
+ -38- 2.0 Bug IRIS GL on dual-head systems
+ -39- 2.0 Bug Resizing of pfPipeWindows in MP X apps
+ -40- 2.0 Bug Applying frustums transformed by pfOrthoXformFrust
+ -41- 2.0 Bug pfFlatten with pfCycleBuffer attribute arrays
+ -42- 2.0 Bug Sorting lights with pfChanBinSort()
+ -43- 2.0 Bug OpenGL disables back material modes
+ -44- 2.0 Bug CPU statistics in IRIX 6
+ -45- 2.0 Bug pfdLoadFile_flt FLT loader in IRIX 6
+ -46- 2.0 Bug hello sample program in IRIX 6
+ -47- 2.0 Bug Forked X input handing in IRIX 6.2
+ -48- 2.0 Bug Intersections with pfBillboard nodes
+ -49- 2.0 Bug Channel fade LOD attributes & mixed gfx configs
+ -50- 2.0 Bug libpfui C API incomplete
+ -51- 2.0 Bug libpfdb pfdLoadFile_dxf incomplete
+ -52- 2.0 Bug libpfdb pfdLoadFile_sgo incomplete
+ -53- 2.0 Bug IRIS GL perfly on Indy
+ -54- 2.0 Bug pguide/libpf/C/pipewin sample program
+ -55- 2.0 Bug pguide/libpf/C/lpstate sample program
+ -56- 2.0 Bug pfInitClock() and Video Rate on 250MHz IMPACT
-57- 1.2 Bug Billboard normals and intersections
+ -58- 1.2 Bug Incompatibility with IRIX 6.1 XFS
-59- 1.2 Bug Billboards with multiple pfGeoSets
-60- 1.2 Bug Flattening transformation hierarchies
-61- 1.2 libpf Bug Hang on Exit, 5.2 VGX
-62- 1.2 libpf Cull with overlapped draw latency
-63- 1.2 libpf Cull with overlapped draw hang
-64- 1.2 libpf Transparency Sorting
-65- 1.2 libpf Multiple EarthSky fog
-66- 1.2 libpf Bug Limit Phase
-67- 1.2 libpr Highlighting when using wireframe
-68- 1.2 libpf APPCULLDRAW does not honor LIMIT/FLOAT/LOCK phases
-69- 1.2 libpf Phase toggling overlapped cull and draw
-70- 1.2 libpf pfDataPool warning on exit
-71- 1.2 libpf Multi-channel stats warning messages
-72- 1.2 libpf Video warnings on Indy when multiprocessed
-73- 1.2 stats Frame statistics for lightpoints
-74- 1.2 stats Pixel fill statistics under 4.0.5 on RealityEngine
-75- 1.2 libpr Directional pfLightPoints
-76- 1.2 libpfutil pfuCollide is jerky
-77- 1.2 libpfutil pfuSaveImage broken
-78- 1.2 libpfsgi pfLoadDxf loader is incomplete
-79- 1.2 libpfsgi pfLoadIv loader is incomplete
-80- 1.2 GLX Overlay text with GLX on 4.0.5
-81- 1.2 GLX Toggling antialiasing with GLX on 4.0.5 RealityEngine
-82- 1.2 GLX Toggling antialiasing with GLX on any RealityEngine
-83- 1.2 GLX on 4.0.5 Indigo, sample programs hang on startup.
-84- 1.2 samples smallfly drive models broken
-85- 1.2 samples pickfly drops core under abuse
-86- 1.2 samples detail example broken on 4.0.5
-87- 1.2 friends Belvis makefile requires pmake
-88- 1.2 friends Toon has bad models and textures
-89- 1.2 docs pfuGetGLXWin wrong on reference page
-90- 1.2 docs pfuLockDownApp gives the incorrect location
-91- 1.1 Bug with FP underflow
-92- 1.1 Bug with Multipipe Onyx
-93- 1.1 Bug Installing on Indy or Indigo2 XL
-94- 1.1 Bug Unable to determine Indy graphics type
-95- 1.1 Bug perfly cannot find libpf.so on Indy running 5.1
-96- 1.1 Bug perfly FP error messages in 5.0.1
-97- 1.1 Bug Installation on IRIX 5.2 - missing prerequisites
-98- 1.0/1.1 Bug intersections with pfSwitch'es
-99- 1.0/1.1 Bug with pfTexture()
-100- 1.0/1.1 Bug with pfAntiAlias()
-101- 1.0/1.1 Bug with pfFlatten()
-102- 1.0/1.1 Bug with pfSequences
-103- 1.0/1.1 Bug with pfClosestPtOnPlane()
-104- 1.0/1.1 Bug on ELAN/XS with wireframe PFGS_QUADS
-105- 1.0/1.2-IRIX4 Bug Z buffer configuration on 4.0.5 RealityEngine
-106- 1.0 Bug pfInit(): mmap failed for /dev/zero
-107- 1.0 Doc Bug in pfMakePolarSeg() man page
-108- 1.0 Doc Bug in pfDispList() man page
-109- 1.0 Doc Bug in PFPG (simple.c)
-110- 1.0 Bug in pfGetTime()
-111- 1.0 Bug in pfNodeBBox()
-112- 1.0 Bug in pfInitGfx() with Z-buffer on RealityEngine
! -113- 1.0 Bug in libpfflt combineLODs()
-114- 1.0 Bug with two-sided material and pfMtlColorMode()
-115- 1.0 Bug in pfFilePath()
-116- 1.0 Bug in pfGetCurGState()
-117- 1.0 Bug in pfGetCurState()
-118- 1.0 Bug with cloned scenes
-119- 1.0 Bug intersections in collide.c
-120- 1.0 Bug with flattened pfLightPoints
-121- 1.0 Bug intersections with pfSequences
-122- 1.0 Bug intersections with non-indexed quads
-123- Credits
=====================================================================
Header: ================ General Topics ==================
Date:
------------------------------
Subject: ! -1- What is IRIS Performer?
Date: 12 Dec 95 00:00:01 EST
IRIS Performer provides a powerful and extensible programming
interface (with ANSI C and C++ bindings) for creating real-time
visual simulation and other interactive graphics applications.
IRIS Performer 2.0 supports both the IRIS Graphics Library (IRIS
GL) and the industry standard OpenGL graphics library; these
libraries combine with the IRIX operating system and REACT
extensions to form the foundation of a powerful suite of tools and
features for creating real-time visual simulation applications on
Silicon Graphics systems.
IRIS Performer is an integral part of the Onyx/RealityEngine and
Indigo2/Impact graphics systems and provides interfaces to advanced
features of RealityEngine-class graphics. IRIS Performer is
compatible with uniprocessor and multiprocessor SGI graphics
platforms and attains maximum performance on all. IRIS Performer
provides an extensible basis for creating real-time 3D graphics
applications in the fields of visual simulation, entertainment,
virtual reality, broadcast video, and computer aided design. IRIS
Performer is the flexible, intuitive, toolkit-based solution for
developers who want to optimize performance on Silicon Graphics
systems.
IRIS Performer consists of two main libraries, libpf and libpr, and
four associated libraries, libpfdu, libpfdb, libpfui, and
libpfutil.
The basis of IRIS Performer is the performance rendering library
libpr, a low level library providing high speed rendering functions
based on pfGeoSets, efficient graphics state control using
pfGeoStates, and other application- neutral functions.
Layered above libpr is libpf, a real-time visual simulation
environment providing a high-performance multi-processing database
rendering system that takes best advantage of IRIS symmetric
multiprocessing CPU hardware.
The database utility library libpfdu provides powerful functions
for defining both geometric and appearance attributes of three
dimensional objects, encourages sharing of state and materials and
generates efficient triangle strips from independent polygonal
input.
The database library libpfdb uses the facilities of libpfdu, libpf,
and libpr to import database files in many popular industry
standard database formats. These loaders also serve as a guide to
developers creating new database importers.
libpfui contains user interface building blocks for creating
manipulators common to many interactive applications. This library
has both a C and C++ API and is GL independent.
Completing the suite of libraries is libpfutil, the IRIS Performer
utility library. It provides a collection of important convenience
routines implementing such diverse tasks as smoke effects,
MultiChannel Option support, graphical user interface tools, X and
IRIS GL event collection and management, and traversal functions.
For aid in application development, IRIS Performer includes sample
application source code ranging from simple programs to illustrate
particular features to the comprehensive, GUI-driven file viewer
perfly.
In addition to these SGI-developed tools, IRIS Performer also
includes a very large repository of sample code, databases, games,
and movies contributed by the Friends of Performer: companies and
individuals with services of general interest to the IRIS Performer
community. We encourage you to sample their wares.
------------------------------
Subject: ! -2- Where can I get more technical information about IRIS Performer?
Date: 12 Dec 95 00:00:01 EST
The three best resources for additional information are:
- The IRIS Performer mailing list
- The IRIS Performer FTP Archives
- The Performer WWW pages in Silicon Surf
- The IRIS Performer Technical Report
See below for further information.
------------------------------
Subject: -3- Where can I get more product information about IRIS Performer?
Date: 12 Dec 95 00:00:01 EST
For product information about IRIS Performer or SGI Visual
Simulation issues contact Ralph Humphries (ralphh++at++asd.sgi.com). To
learn about SGI Virtual Reality solutions contact Joshua Mogal
(mogal++at++asd.sgi.com). To just give in and buy a copy call SGI
Direct at 1-800-800-7441 (product SC4-PERF-2.0), or to have both a
demonstration and a presentation call your local SGI sales office.
Brochure-style information about IRIS Performer is also available
from the Performer WWW pages in Silicon Surf (see below)
------------------------------
Subject: + -4- The IRIS Performer mailing list
Date: 12 Dec 95 00:00:01 EST
The IRIS Performer mailing list is a resource for developers who
are using IRIS Performer to maximize the performance of their
graphics applications on Silicon Graphics hardware. The list is an
unmoderated, free-form discussion of IRIS Performer with issues
both technical and non-technical; and provides feedback to Silicon
Graphics about the product. Much like the comp.sys.sgi.*
newsgroups, it is not an official support channel but is monitored
by the IRIS Performer development team, so it's an excellent source
of early information about upcoming events and product features, as
well as a venue for asking questions and having them answered.
To become a subscriber to the IRIS Performer mailing list you must
send email to:
info-performer-request++at++sgi.com
New subscribers are added "by hand". Once your request is processed
you will recieve submission/posting instructions, some guidelines,
and a current copy of the Performer Frequently-Asked-Questions (FAQ)
list.
The mailing list has become rather large and carries several
hundred messages per month. A performer newsgroup with a gateway
to the mailing list may be created if there is enough interest.
Mailing list archives are available in the Performer FTP area (see
below) in ftp://sgigate.sgi.com/pub/Performer/monthly-archives/
------------------------------
Subject: + -5- The IRIS Performer FTP Archives
Date: 12 Dec 95 00:00:01 EST
An archive of Performer-related material is available via anonymous
FTP: ftp://sgigate.sgi.com/pub/Performer
Current Contents:
README - Overview file
FAQ - The Performer FAQ
INFO-PERFORMER - information about the Performer mailing list
src/ - Sample source code & misc patches
docs/ - IRIS Performer docs including SIGGRAPH '94 paper
selected-topics/ - directory of info, Q&A, etc from mailing list
monthly-archives/ - raw archives (monthly) of the mailing list
CortaillodCentre/ - goodies from SGI's Cortaillod Office
RealityCentre/ - goodies from SGI's RealityCentre in the UK
------------------------------
Subject: + -6- The IRIS Performer WWW Pages in Silicon Surf
Date: 12 Dec 95 00:00:01 EST
Silicon Surf (http://www.sgi.com/) contains an archive of
Performer-related technical and promotional material in the
_Extreme Tech_ section.
http://www.sgi.com/Technology/Performer.html contains links
to further information regarding:
- What is IRIS Performer ?
- IRIS Performer 2.0 Technical Information
- IRIS Performer 2.0 Product Information
- IRIS Performer Friends, Goodies, & Free Stuff!
- The IRIS Performer Mailing List
- The IRIS Performer Anonymous FTP Archives
- The IRIS Performer Frequently Asked Questions (FAQ).
------------------------------
Subject: + -7- The IRIS Performer Technical Report
Date: 12 Dec 95 00:00:01 EST
The IRIS Performer 2.0 Technical Report (IRIS-PERF-TR-10/95) is
available in hardcopy from your local Silicon Graphics sales
office. An electronic copy (Postscript format) is also available
via FTP from:
ftp://sgigate.sgi.com/pub/Performer/docs/pf2.0techreport/
------------------------------
Subject: -8- How does IRIS Performer relate to IRIS Inventor?
Date: 26 Jun 93 00:00:01 EST
The short answer is, Performer was designed for vis-sim, while
Inventor was designed to be more general purpose.
IRIS Performer is for developers who need to extract maximum
performance from SGI machines for visual simulation, virtual
reality, game development, and high-end CAD systems. Often these
applications need multi-processor Onyx systems with multiple
RealityEngine pipelines with a high degree of parallelism and
running at fixed frame rates.
Inventor is designed for maximum programmer productivity when
writing other kinds of 3D applications, like modelling, animation,
visualization, etc.
Both toolkits are general purpose enough that they could be extended
into the domain of the other, but the question you should consider is
"what is the *fundamental* goal of my graphics development?" If it's
portability to non-SGI systems, easy X-window system integration, or
handy graphic widgets, IRIS Inventor is for you. If it's brochure-
level performance in advanced graphic applications for the specific
domains listed above, then IRIS Performer would be the likely tool.
------------------------------
Subject: ! -9- What are the released versions of IRIS Performer?
Date: 12 Dec 95 00:00:01 EST
IRIS Performer 2.0: For IRIX 5.3, 6.1, or 6.2
IRIS Performer 1.2/IRIX5: (now obsolete) For IRIX 5.2, 5.3, 6.0.1, 6.1
IRIS Performer 1.2/IRIX4: (now obsolete) For IRIX 4.0.5(A-J) only
IRIS Performer 1.1: (now obsolete) For IRIX 5.x only
IRIS Performer 1.0: (now obsolete) For IRIX 4.x only
Note that the N32 and N64 libraries in Performer 2.0 are not
intended for systems running IRIX 6.1. If you require N32 or N64
functionality, contact Michael Jones (mtj++at++asd.sgi.com) for
alternatives.
Performer 1.2 was shipped for both 4.0.5 and 5.2 systems. If you
are using IRIS Performer 1.2, only install that version that is
appropriate for your machine. The IRIS Performer version is
indicated by the "IRIX4" or "IRIX5" string in each product name.
IRIX4 products should only be installed on 4.0.5 systems. IRIX5
products can be installed on 5.2, 5.3, 6.0.1, and 6.1 systems.
When a choice is possible between using Performer 1.2 with IRIX 5.x
or IRIX 4.0.5, IRIX 5.x is highly preferable. IRIX 5.3 is the
current operating system release and contains many bug fixes and
enhancements utilized by IRIS Performer. IRIS Performer 1.2/IRIX4
was intended only for users who are unable to upgrade to IRIX 5.x.
------------------------------
Subject: + -10- Does IRIS Performer use IRIS GL or OpenGL?
Date: 12 Dec 95 00:00:01 EST
IRIS Performer 2.0 contains bindings for O32 (32-bit) IRIS GL, O32
(32-bit) OpenGL, N32 (32-bit) OpenGL, and N64 (64-bit) OpenGL.
IRIS Performer 1.0, 1.1, and 1.2 use IRIS GL (32-bit).
------------------------------
Subject: -11- Is there a IRIS Performer file format?
Date: 26 Oct 93 00:00:01 EST
No. A binary file format is a desired feature for a future
release. IRIS Performer's methodology for the time being is to
load other vendors' database files at run time.
------------------------------
Subject: ! -12- What database file formats can IRIS Performer read?
Date: 12 Dec 95 00:00:01 EST
IRIS Performer 2.0 contains direct import capabilities for:
3ds: AutoDesk 3DStudio binary data
bin: Minor SGI format used by powerflip
bpoly: Side Effects Software PRISMS binary
byu: Brigham Young University CAD/FEA data
dwb: Coryphaeus Software Designer's Workbench
dxf: AutoDesk AutoCAD ASCII format
flt11: MultiGen public domain Flight v11 format
flt14: MultiGen OpenFlight v14 format
gds: McDonnell-Douglas GDS things data
gfo: Minor SGI format (radiosity output)
im: Minor SGI format (IRIS Performer example)
irtp: AAI/Graphicon Interactive Real-Time PHIGS
iv: SGI OpenInventor / VRML 1.0
lsa: Lightscape radiosity solutions (ASCII)
lsb: Lightscape radiosity solutions (binary)
m: University of Washington mesh data
medit: Medit Productions medit modeling tool
nff: Eric Haines' ray tracing test data format
obj: Wavefront Technologies data format
post: Minor SGI format (example gridded terrain loader)
phd: Minor SGI format (polyhedra)
poly: Side Effects Software PRISMS ASCII data
pts: University of Washington point data
ptu: Minor SGI format (IRIS Performer example)
s1k: US ARMY SIMNET databases (Texas Instruments)
sgf: US NAVY standard graphics format
sgo: Minor SGI format
spf: US NAVY simple polygon format
sponge: Sierpinski sponge 3D fractal generator
star: Yale University compact star chart data
stla: 3D Structures Stereolithography (ASCII)
stlb: 3D Structures Stereolithography (binary)
sv: Format of John Kichury's i3dm modeler
tri: University of Minnesota Geometry Center data
unc: University of North Carolina data
Several other file formats will be available via translators:
via Acuris Corporation translators (to OpenInventor):
iges Old standard computer aided design interchange format
alias Alias Research animation system data
3ds AutoDesk 3DStudio
obj Wavefront Technologies OBJ format
dxf AutoDesk AutoCAD format
softimage Microsoft/Softimage animation system data
via Clarus AB translators:
step New standard computer aided design interchange format
vertigo Vertigo animation system data
via Syndesis Corporation translators (to OpenInventor):
3D Studio, BRender, Alias polyset, CAD-3D, CADL, DXF, Imagine,
Inventor, LightWave objects and scenes, MovieBYU, Haines NFF,
Sense8 NFF, POV-Ray, Pro/ENGINEER, Prisms, RAW, RenderWare,
Sculpt, SGI spin, Soft F/X, stereolithography, StyleGuide,
Swivel, GDS "things", trueSpace, Vertigo, Vista DEM, VideoScape
and Wavefront formats.
IRIS Performer 1.2 includes loading utilities and file loaders for:
- The SGI .bin, .sgo, .gfo, .poly, and .ptu formats
- IRIS Inventor's .iv format.
- Coryphaeus' Software .dwb format.
- Software Systems (MultiGen Inc) Version 11, 13, and 14 .flt
- The SuperViewer .sv format used in I3DM
- Lightscape Graphics Software's .lsa and .lsb formats
- Autodesk's AutoCAD .dxf format
- Miscellaneous formats (.gfo, .irtp, .stla, .stlb).
For source code to loaders for MultiGen .flt versions greater than
11, contact MultiGen, Inc at (408) 556-2600.
IRIS Performer 1.0 and 1.1 include database loaders for MultiGen v11
"flt", SGI "bin", and SGI "obj" formats.
------------------------------
Subject: ! -13- Is there an IRIS Inventor file reader for IRIS Performer?
Date: 12 Dec 95 00:00:01 EST
Yes. IRIS Performer 2.0 ships with a fully-functional Open
Inventor 2.0 file loader.
IRIS Performer 1.2 ships with a minimal .iv reader that will read a
subset of the IRIS Inventor 1.0 format.
A port of the more robust 2.0 reader for Open Inventor files is
also available for Performer 1.2, in the Performer FTP Archives:
ftp://sgigate.sgi.com/pub/Performer/src/pfiv1.6.tar.Z
No Inventor file reader exists for Performer 1.0 or 1.1.
------------------------------
Subject: -14- What are the .tlf files used by the Performer Town and Village?
Date: 8 Apr 94 00:00:01 EST
They are encrypted .flt files of the Town and Village database.
Only the "demo" version of perfly shipped with RealityEngine
systems in demos.sw.visualization can read these files.
Unencrypted versions of the Town and Village databases are included
in the performer_friends.sw.town subsystem of Performer 1.2 and 2.0.
------------------------------
Subject: ! -15- What are the minimum requirements for using IRIS Performer?
Date: 12 Dec 95 00:00:01 EST
IRIS Performer 2.0 requires IRIX 5.3, 6.1, or 6.2.
IRIS Performer 1.2/IRIX5 requires IRIX 5.2 or above.
IRIS Performer 1.2/IRIX4 requires IRIX 4.0.5. Because IRIX 4.0.5F
added several new Graphics Library (GL) calls to support
RealityEngine features, any application that uses GL routines or
tokens found only in 4.0.5F and later, will not run properly under
4.0.5C and earlier releases.
------------------------------
Subject: ! -16- Binary Compatibility on different machines
Date: 12 Dec 95 00:00:01 EST
Applications compiled with IRIS Performer 2.0 using IRIX 5.3 will
run unmodified across all SGI platforms. For best performance, use
IRIS GL with RealityEngine and other pre-Impact systems and use
OpenGL for Impact and post-Impact graphics hardware.
OpenGL-oriented systems provide the IGLOO (Iris GL on OpenGL)
portability layer to execute IRIS GL applications, but it is not
the maximum performance route. Performance oriented developers are
advised to generate both IRIS GL and OpenGL executables, by linking
with the API-compatible IRIS Performer 2.0 IRIS GL and OpenGL
libraries. In this way, you can assure optimum performance across
present and future graphics systems. For OpenGL development on
RealityEngine with IRIX 5.3, patch 154 (or a superseding patch) is
recommended for performance and features.
IRIS Performer 1.2/IRIX5 contains a single version of libpr for all
machines. Applications built with Performer 1.2 for Irix 5.2 are
fully compatible across machines and can run on any graphics type
without relinking.
In IRIS Performer 1.0, 1.1, and 1.2/IRIX4, libpr is platform-
specific with one of two versions installed depending on whether
the machines is a RealityEngine or not. Binaries linked on
non-RealityEngine machines will run on a RealityEngine, but not all
features will be available.
------------------------------
Subject: ! -17- Binary Compatibility on different releases
Date: 12 Dec 95 00:00:01 EST
Performer 2.0 compatability issues with IRIX 5.3:
Applications created with IRIS Performer 2.0 using IRIX 5.3 also
run under IRIX 6.1 and later IRIX releases in 32-bit mode. The
32-bit applications created using IRIX 5.3 will not make use of
64-bit address space and other MIPS III/IV features provided by the
IRIS Performer N32 and N64 development environment under IRIX 6.2
and later operating system releases.
Note that applications built on an IRIX 6.1 or 6.2 systems are not
guaranteed to run properly on 5.3 systems, due to changes in
structures used by system libraries. (This is true even for
applications that do not use IRIS Performer-- applications built on
later versions of IRIX may not run on earlier ones). Therefore to
produce an O32 executable that will run on all SGI systems 5.3 and
later, the compiling must be done on an IRIX 5.3 system.
Performer 2.0 compatability issues with IRIX 6.1:
Applications created with IRIS Performer 2.0 under IRIX 6.1 can be
compiled and linked for 32-bit IRIX 5.3-style execution (known as
Old 32-bit mode, or O32) only. IRIS Performer programs built for
the two new executable types (N32 and N64) are not operable on
pre-6.2 systems -- specifically, they will not run on IRIX 5.3 or
6.1 systems.
O32 IRIS Performer programs will run on IRIX 6.1. However, the
OpenGL development environment of IRIX 6.1 is not as full featured
as the 32-bit OpenGL of IRIX 5.3 or IRIX 6.2. This can cause both
low-performance and lack-of-feature problems for developers
creating OpenGL applications. For this reason, developers are
advised to build only IRIS GL applications on IRIX 6.1 systems or
to upgrade to IRIX 6.2 for access to its enhanced 32-bit and 64-bit
OpenGL development environment.
Performer 2.0 compatability issues with IRIX 6.2:
IRIS Performer 2.0 is compatible with IRIX 6.2, and applications
can be developed for all three execution modes: O32, N32, and N64.
The IRIX 6.2 32-bit and 64-bit OpenGL implementations have the
RealityEngine feature extensions and performance enhancements found
in IRIX 5.3. For this reason, developers are urged to use IRIX 6.2
or later rather than IRIX 6.1 for OpenGL development. As mentioned
above, IRIS Performer applications built in either N32 or N64 mode
will not run on IRIX 5.3 or 6.1 systems, and, in general,
applications should not be run on earlier versions of IRIX than the
machine on which they are compiled.
Compatability issues with previous Performer releases:
Applications using Performer 1.2/IRIX5 are binary compatible with
machines running Irix 5.2, 5.3, 6.0, 6.0.1, and 6.1 machines
without relinking.
IRIS Performer 1.0 requires IRIX 4.0.5 or later. Because IRIX
4.0.5F added several new GL calls to support RealityEngine
features, an application that uses GL routines or tokens found only
in 4.0.5F and later does not run properly under 4.0.5, 4.0.5B, or
4.0.5C. When run on these earlier IRIX releases, an IRIS Performer
1.0 application making calls to GL functions or using GL tokens
that are undefined in the run-time environment cause run-time
errors or undefined behavior.
An IRIS Performer 1.0 binary compiled and linked under IRIX
releases earlier than 4.0.5F will run under IRIX 4.0.5F and later,
but some RealityEngine features are not directly accessible to the
application. An application can still access RealityEngine
features supported automatically or explicitly through IRIS
Performer when linked with IRIS Performer shared libraries.
Running a IRIS Performer application built with IRIX 4.0.5 on IRIX
5.X is not recommended. In particular, multiprocess applications
cannot take advantage of all processors. Also, because IRIX 4.0.5's
relaxed shared memory accounting was replaced by a despotic and
stricter regime under IRIX 5.2, a Performer application built on
4.0.5 will need a much larger amount of swap space to be allocated up
front unless PFTMPDIR is used to specify a memory mapped file.
------------------------------
Subject: ! -18- Guaranteeing Real Time performance
Date: 8 Apr 94 00:00:01 EST
- Run as root so that Performer can lock your process to
a particular CPU (if using pfuLockCPU) and give it a
non-degrading priority.
- Be sure to kill any clocks, gr_osview, or other tools that may
wake up and draw themselves, so as to avoid graphics context
switches.
- When multiprocessing, make sure the executable is on a local file
system.
- There is a new real-time kernel directive for Onyx/Challenge
processors for directing system interrupts away from real-time
processors.
In the file /var/sysgen/system/irix.sm, Search for NOINTR and
below the comment explaining NOINTR, add the line
NOINTR: 1 2 3 4 ..etc..
where you list the CPUs that you intend to do real-time
processing on. Then reboot. This can be done on 5.2+
Onyx/Challenge systems but wasn't covered in the base IRIX5
documentation. Be sure -not- to specify CPU 0, as you will want
it to be available for necessary interrupts.
- With IRIS GL, real-time performance can only be guaranteed if you
have one window rendering at a time, per pipe.
If more than one application is rendering to the same hardware
pipeline, the (hardware) graphics pipe has to switch back & forth
between each GL window's context several hundred times per
second. This is horribly inefficient and the graphics pipe will
instruct the "other" process to block while its context is
switched out.
- Since having other (cpu-based) applications running can also
effect real-time performance, it's sometimes desirable to
minimize the number of daemons and other processes. If you have
problems achieving real-time behavior, try the pfuLockCPU in
libpfutil. You might also try turning off the desktop support
and other daemons that are not crucial to your application,
e.g.:
% touch ~/.disableDesktop
or
% mkdir ~/.desktop-<machinename>
% touch ~/.desktop-<machinename>/nodesktop
and for total removal do:
% chkconfig desktop off
% chkconfig objectserver off
% chkconfig directoryserver off
% chkconfig fontserver off
% chkconfig soundscheme off
------------------------------
Subject: -19- How do I make GL calls from within a IRIS Performer program?
Date: 26 Oct 93 00:00:01 EST
GL calls can only be made from a process that has a GL context. In
multi-process Performer applications only the draw process has GL
context, so you must make your GL calls in a function called in the
draw process.
The pipe initialization callback, draw function callback, and node
draw callbacks are all executed in the draw process.
In an application that only will ever run single-process, GL calls
can be made from anywhere in the program, but this is considered a
dangerous practice.
To set up a pipe initialization callback, see the pfInitPipe()
manpage. To set up a draw function callback, see the
pfChanDrawFunc() manpage. To set up a node draw callback, see the
pfNodeTravFuncs() manpage.
------------------------------
Subject: -20- How do I overlay graphics on top of my Performer scene?
Date: 06 Oct 93 00:00:01 EST
Typically this is done to implement a heads-up display (HUD).
In the draw function callback, the basic algorithm is:
save state with pfPushState()
disable textures, fog, & lighting with pfBasicState()
save & clear projection matrix
ortho2()
save & clear modelling matrix
draw()
restore modelling matrix
restore projection matrix
restore state with pfPopState()
Or, you can draw your static info in the overlay planes and only
redraw it when the window receives a REDRAW event (moved, resized,
etc.). Changing between drawing to the overlays and drawing to
regular bitplanes takes a big hit.
For things that need to be updated real-time, draw() would consist
of:
zfunction(ZF_ALWAYS);
zwritemask(0x0);
draw HUD stuff
zfunction(ZF_LEQUAL);
zwritemask(0xffffffff);
------------------------------
Subject: -21- What is the difference between phases FREE, FLOAT, and LOCK?
Date: 26 Oct 93 00:00:01 EST
PFPHASE_FREE_RUN wakes the application and draw processes up on the
next video field boundary after the draw finishes. i.e. it's
Performer's version of the usual run as-fast-as-I-can or
as-slow-as-I-must mode that most simple graphics programs use.
PFPHASE_FLOAT wakes the application up only on frame boundaries,
i.e. time = n*(1/frame_rate). However, the draw process "floats"
with respect to the frame rate and wakes up on the next possible
field boundary and then does a swapbuffers() when it's done,
regardless of whether it finished drawing in time for the desired
frame rate. Hence you see every frame that's drawn to the
backbuffer, but it may not appear at exactly the time for which it
was planned. If you never frame extend, it behaves like
PFPHASE_FIXED. Latency is variable.
PFPHASE_LOCK wakes the application and draw up only on frame
boundaries and only swaps on frame boundaries. The advantage is
that each new image always appears at precisely the time for which
it was rendered. The disadvantage is that if the draw runs even
slightly over a frame time, you skip that entire frame and are
stuck with an outdated picture for a frame. Latency is fixed.
For more information see the pfPhase() man page or section 7.1.2 of
the PFPG.
------------------------------
Subject: + -22- Use of PFTMPDIR to configure shared memory
Date: 12 Dec 95 00:00:01 EST
IRIS Performer requires shared memory and uses a memory-mapped
file, the location of which depends on the value of the PFTMPDIR
environment variable:
If PFTMPDIR is not set, Performer uses /dev/zero as the default.
Running an application in this configuration:
- Uses swap space
- Does not require disk space until main memory is exhausted
- Is faster than using a regular memory mapped file via PFTMPDIR
- Causes IRIX to kill the process(es) and log an error to the
console if the application runs out of space for shared memory in
the swap partition.
If PFTMPDIR is set, Performer creates files in the specified
directory. Running an application in this configuration:
- Requires disk space even before main memory is exhausted
- Is slower than /dev/zero because it touches the disk
- Produces appropriately sized core dump files with no limit set by
IRIS Performer
- Might cause a core dump from a segmentation violation inside
pfMalloc if the application runs out of space for shared memory
in the file system containing PFTMPDIR
- PFTMPDIR should be set only to a directory on a local file system.
------------------------------
Subject: ! -23- Which rendering primitives does IRIS Performer support?
Date: 12 Dec 95 00:00:01 EST
Points (PFGS_POINTS),
Independent line segments (PFGS_LINES),
Connected line strips (PFGS_LINESTRIPS),
Flat connected line strips (PFGS_FLAT_LINESTRIPS),
Independent Triangles (PFGS_TRIS),
Independent quadrilaterals (PFGS_QUADS),
Connected triangle strips (PFGS_TRISTRIPS),
Flat Connected triangle strips (PFGS_FLAT_TRISTRIPS),
Independent n-sided polygons (PFGS_POLYS).
See the pfGeoSet(3pf) man page for more information.
------------------------------
Subject: ! -24- How do I do triangle meshes in Performer?
Date: 12 Dec 95 00:00:01 EST
You must change your triangle meshes to triangle strips by hand.
In Performer 2.0, pfdMeshGSet (pfuMeshGSet in 1.2) does this for
you.
------------------------------
Header: ================= Known Problems =================
Date: 8 Apr 94 00:00:01 EST
------------------------------
Subject: + -25- Video Rate sometimes reported incorrectly
Date: 12 Dec 95 00:00:01 EST
The video rate used by IRIS Performer for frame rate control is
computed at application startup on some machines and is not always
exactly correct. If this is a problem, the video rate can be set
with pfVideoRate.
------------------------------
Subject: ! -26- Problems with Performer Town or Village demos
Date: 12 Dec 95 00:00:01 EST
- IRIX 5.0: It was reported that perfly would cause an Onyx RE or
VTX to hang. This was fixed in 5.0.1.
- IRIX 5.0.1: perfly would generate floating point exceptions due
to a bug in the font manager library (libfm). This was fixed in
5.1.
- IRIX 5.2/5.3 Kernel Panic: Certain IRIX patches were
incompatible with Performer and would cause the Town or Village
demos to panic the system if run as root. The error message
was:
PANIC: CPU 3: Stack Extension Page is inconsistent
Double PANIC: CPU 0: Stack Extension Page is inconsistent 111
at block 0
In IRIX 5.2, the crash occurs with patches 125 and 139.
In IRIX 5.3, the crash occurs with patch 158.
- Jerky forward motion. This is caused by an uneven frame rate.
The Performer town demo is fill limited and typically can not
maintain a steady 30Hz.
This can also occur if perfly is not being run as root. When run
by root, Performer applications will set nondegradable priorities
for their processes to improve the consistency of the run-time
behavior.
This same problem is also caused by the user having another
GL-based application (like gr_osview) running at the same time.
- Ghosting. A true FAQ is why multiple images of objects like
trees, house edges, the horizon, etc. are seen as the viewer
turns. This is a form of "temporal aliasing" and is an attribute
of having a frame rate which is less than the video refresh
rate.
The problem is that a single image is scanned out onto the
monitor several times before being changed. The repetition of a
frame means that the image is temporally inaccurate for motion.
Real moving objects do not stay in one place for a couple frame
times and then move.
What's actually happening is that your eye is following an
object, moving with the same angular velocity, which keeps the
image stationary on the retina. Between two video refreshes of
the same frame, your eye has moved, but the image on the screen
has not. Consequently the image of the second frame appears at a
different location on the retina, and you see a "ghost" image.
So a simulation running at 20Hz update on a display refreshing at
60Hz, the object will appear tripled. On large objects such as
horizon silhouette, the effect manifests itself as multiple
edges.
------------------------------
Subject: -27- Antialiasing
Date: 8 Apr 94 00:00:01 EST
When it is not multisampling, pfAntialias can significantly degrade
performance. Specifically, on non-RealityEngine systems, use
pfAntialias only for lines and points.
------------------------------
Subject: -28- Coplanar Polygons & pfDecal on certain platforms
Date: 8 Apr 94 00:00:01 EST
pfDecal works only on machines that support the stencil or
displacepolygon command. The default decaling mode for PFDECAL_BASE
now uses displacepolygon instead of stencil. This can significantly
improve rendering performance but can result in visual anomalies
where layer polygons incorrectly "poke" through other geometry. If
you wish the old behavior then specify the PFDECAL_BASE_HIGH_QUALITY
token.
------------------------------
Subject: ! -29- Networked graphics (DGL & GLX)
Date: 12 Dec 95 00:00:01 EST
libpf-based applications in IRIS Performer 1.0, 1.1, 1.2, and 2.0
do not support applications that use networked GL (DGL). However,
applications using libpr only can use DGL.
This bug/problem is a side-effect of having vertical retrace
counter control, which is only available on VGX, VGXT, VTX, Reality
Engine, Reality Engine 2, Elan, and Extreme graphics systems.
OpenGL-based Performer 2.0 applications display properly to remote
systems via the GLX X server extension.
------------------------------
Subject: -30- Transparency
Date: 12 Dec 95 00:00:01 EST
pfTransparency works only on machines that support either
blendfunction or multisampling.
Sometimes users report that their transparency seems quantized. This
is not a bug -- Performer defaults to using Multisample transparency
(msalpha) when multisampling is enabled, instead of using the
"standard" (blendfunction) transparency mechanism.
Multisample transparency is faster but has much less resolution, and
so less quality. Standard transparency using blendfunction is
slower, but the quality is very good.
To force Performer to use higher-quality (but slower) transparency
when multisampling,
1.0/1.1: pfGStateMode (gstate, PFSTATE_TRANSPARENCY, 2);
1.2/2.0: pfGStateMode (gstate, PFSTATE_TRANSPARENCY, PFTR_HIGH_QUALITY);
aka PFTR_BLEND_ALPHA
In 1.0/1.1 the BLEND_ALPHA token was not exposed, but just use '2'.
Be sure to revisit this code when you port to 1.2, as the token has
changed.
See the pfTransparency(3pf) man page for more details.
------------------------------
Subject: + -31- Gangdraw and cursor loading
Date: 12 Dec 95 00:00:01 EST
Loading the cursor with ganged swapbuffers (external swapready
wire) hangs graphics. Workaround: don't load the cursor and use a
full screen window when using ganged swapbuffers.
------------------------------
Subject: -32- Frame control on low- and mid-range machines
Date: 8 Apr 94 00:00:01 EST
Frame control on low- and mid-range machines: Currently, the video
clock (pfInitVClock, pfGetVClock, pfVClockSync) is supported only
on systems with VGX, VGXT, RealityEngine, RealityEngine2, Elan, XS,
Extreme, and Impact graphics hardware. On other systems,
pfVClockSync returns immediately. Because libpf normally uses
pfVClockSync for frame rate control, frame control is not rigorous
on other platforms.
------------------------------
Subject: -33- Timing on pre-1992 platforms
Date: 8 Apr 94 00:00:01 EST
Several libpf functions require high-resolution timing information.
On most recent machines (Indy, Indigo, Indigo2, 4D/35 and Onyx) and
PowerSeries or Crimson machines with IO3 boards, IRIS Performer
uses special hardware counters with sub-microsecond resolution.
(The IO3 board was standard on Crimson and later 4D/300 and 4D/400
machines. You can check for it with the hinv(1M) command.)
On older platforms, for example, those with IO2 boards, the
time-of-day clock is used, which, by default, has a 10 ms
resolution. This resolution is inadequate for many libpf functions,
including animation sequences (pfSequence), graphics load
computation (pfChanStress), and the display of accurate channel
statistics (pfDrawChanStats). On these machines, you may want to
enable fast timers using systune(1M) to set the fasthz variable.
See the man page for timers for more information. Frame rate
control is poor on machines that lack both a fast clock and the
video clock used by pfVClockSync.
------------------------------
Subject: + -34- 2.0 Warnings from ld when building on IRIX 6.2
Date: 12 Dec 95 00:00:01 EST
When building executables on IRIX 6.2 and linking directly using ld
rather than implicitly via CC, an alarming number of warnings about
tables that are defined in multiple .so's may be printed. These are
harmless but the appropriate compiler option to disable the warning
has not yet been identified. The problem does not occur when
linking with CC, which is identical in function and serves as an
effective workaround.
------------------------------
Subject: + -35- 2.0 Bug OpenGL functions missing when building static executables
Date: 12 Dec 95 00:00:01 EST
When building static OpenGL executables in IRIX 5.3 installed it
may be necessary to specify the "-ignore_unresolved" option to ld
since not all OpenGL extensions used in Performer are available on
all platforms and OS versions. You may see warnings for the
unresolved symbols of OpenGL extensions that are not present on the
current system, but the executable will still successfully link.
------------------------------
Subject: + -36- 2.0 Bug Z buffer problems when moving windows on 5.3 EXtreme
Date: 12 Dec 95 00:00:01 EST
When moving a window on Extreme graphics under IRIX 5.3, in some
clear modes the Z-buffer may not be updated properly until a full
czclear() operation is performed.
------------------------------
Subject: + -37- 2.0 Bug Use of more than 512 simultaneous textures
Date: 12 Dec 95 00:00:01 EST
When more than 512 textures are used in either IRIS GL or OpenGL
the hardware and or host-side software may become confused and in
some cases, may falter completely and terminate the application.
This is a graphics library limitation.
------------------------------
Subject: + -38- 2.0 Bug IRIS GL on dual-head systems
Date: 12 Dec 95 00:00:01 EST
IRIS GL based Performer executables encounter difficulties when
executing on dual-head Indigo systems. This problem is not present
in OpenGL applications.
------------------------------
Subject: + -39- 2.0 Bug Resizing of pfPipeWindows in MP X apps
Date: 12 Dec 95 00:00:01 EST
Dynamic resizing of pfPipeWindows when multi-processed and using X
windows (IRIS GLX or OpenGL/X) when an alternate framebuffer
configuration window is selected (such as the fill statistics
window in OpenGL/X perfly) can cause channel viewports to be
confused when the alternate framebuffer configuration window is
de-selected (such as disabling the fill statistics in perfly when
running with X windows).
------------------------------
Subject: + -40- 2.0 Bug Applying frustums transformed by pfOrthoXformFrust
Date: 12 Dec 95 00:00:01 EST
pfApplyFrust() does not properly apply a frustum which has been
transformed with pfOrthoXformFrust(). Instead, the canonical
frustum whose eye is at the origin and is looking down the +Y axis,
is applied.
------------------------------
Subject: + -41- 2.0 Bug pfFlatten with pfCycleBuffer attribute arrays
Date: 12 Dec 95 00:00:01 EST
pfFlatten() is broken for pfGeoSets with pfCycleBuffer attribute
arrays. A core dump is likely.
------------------------------
Subject: + -42- 2.0 Bug Sorting lights with pfChanBinSort()
Date: 12 Dec 95 00:00:01 EST
The PFSTATE_LIGHTS sorting key for the PFSORT_BY_STATE mode of
pfChanBinSort() is not yet implemented.
------------------------------
Subject: + -43- 2.0 Bug OpenGL disables back material modes
Date: 12 Dec 95 00:00:01 EST
Although Performer supports it, OpenGL does not support different
material color modes for front and back materials. When Performer
encounters this case, it disables the material color mode for the
back material.
------------------------------
Subject: + -44- 2.0 Bug CPU statistics in IRIX 6
Date: 12 Dec 95 00:00:01 EST
Statistics: The PFSTATSHW_CPU pfStats statistics class for
accumulation of statistics on CPU usage are not yet implemented for
IRIX6 operation (64bit or 32bit).
------------------------------
Subject: + -45- 2.0 Bug pfdLoadFile_flt FLT loader in IRIX 6
Date: 12 Dec 95 00:00:01 EST
The FLT loader under 64bit operation may core dump.
------------------------------
Subject: + -46- 2.0 Bug hello sample program in IRIX 6
Date: 12 Dec 95 00:00:01 EST
The src/pguide/libpf/C/hello sample program may core dump under
64bit operation.
------------------------------
Subject: + -47- 2.0 Bug Forked X input handing in IRIX 6.2
Date: 12 Dec 95 00:00:01 EST
On beta versions of 6.2 some problems were experienced with
handling X input in an additional forked process. For this reason,
the perfly sample application has a conditional compilation
construct to use the non-forked X input handling option of the
libpfutil X input handling utilities when compiled under IRIX6. You
may find this to not be necessary.
------------------------------
Subject: + -48- 2.0 Bug Intersections with pfBillboard nodes
Date: 12 Dec 95 00:00:01 EST
Intersection testing of line segments (pfNodeIsectSegs) against
geometry in pfBillboard nodes is not yet implemented; only the
bounding sphere of the entire pfBillboard is available.
------------------------------
Subject: + -49- 2.0 Bug Channel fade LOD attributes & mixed gfx configs
Date: 12 Dec 95 00:00:01 EST
Channel fade LOD attributes are set in the application process. The
existence of multisample, required for fade LOD, is tested at the
time that the attributes are set with pfChanLODAttr. This test for
multisample uses the application process window system connection
(pfOpenWSConnection) or else the DISPLAY environment variable to
select a screen for determining graphics configuration, instead of
testing the current window of the pfChannel. In a multipipe
environment where one graphics pipeline has multisample and one
does not, the application process needs to have a window system
connection or DISPLAY that points to the pipeline with multisample,
in which case the non-multisample pfChannels will try to use fade
LOD. In a multi-window environment, windows without multisample on
a system with multisample will try to use fade LOD.
------------------------------
Subject: + -50- 2.0 Bug libpfui C API incomplete
Date: 12 Dec 95 00:00:01 EST
Libpfui has both a C API and a C++ API. The C API is actually
wrappers around the C++ API and is not complete.
------------------------------
Subject: + -51- 2.0 Bug libpfdb pfdLoadFile_dxf incomplete
Date: 12 Dec 95 00:00:01 EST
The DXF loader does not fully support the format.
------------------------------
Subject: + -52- 2.0 Bug libpfdb pfdLoadFile_sgo incomplete
Date: 12 Dec 95 00:00:01 EST
The SGO loader does not support triangle strips
------------------------------
Subject: + -53- 2.0 Bug IRIS GL perfly on Indy
Date: 12 Dec 95 00:00:01 EST
The background of the GUI panel is influenced by the loaded
database. Additionally, fill statistics are not supported on Indy
under IRIS GL and will cause flashing and error messages to
stderr.
------------------------------
Subject: + -54- 2.0 Bug pguide/libpf/C/pipewin sample program
Date: 12 Dec 95 00:00:01 EST
The overlay text is only drawn in IRIS GL and does not get properly
redrawn when the window size is changed.
------------------------------
Subject: + -55- 2.0 Bug pguide/libpf/C/lpstate sample program
Date: 12 Dec 95 00:00:01 EST
The lpstate.c example for demonstrating pfLPointStates uses
sophisticated texturing capabilities that may not yet work on the
IMPACT, Extreme, or Indy graphics platforms.
------------------------------
Subject: + -56- 2.0 Bug pfInitClock() and Video Rate on 250MHz IMPACT
Date: 12 Dec 95 00:00:01 EST
The clock period determined by pfInitClock() on 250MHz IMPACT
systems is apparently inconsistent with the true clock period. It
seems that the actual clock period is that of a 200MHz system.
Consequently, pfGetTime() will return a time that is .8 (200/250)
that of the true time.
Among other things, this invalidates the calculations done by
Performer to determine the current video rate.
As a workaround, you can specify an alternate clock period with the
PFCLOCKPERIOD environment variable. If set, PFCLOCKPERIOD
specifies the clock period, in picoseconds, to be used by
pfInitClock(). For proper behavior on 250MHz IMPACT systems, use
40000 for the period.
------------------------------
Subject: -57- 1.2 Bug Billboard normals and intersections
Date: 8 Apr 94 00:00:01 EST
During rendering, pfBillboard normals are not affected by the
transformation applied to make the geometry follow the eye.
Intersection testing of line segments (pfSegsIsectNode) against the
pfGeoSet's geometry and bounding box are not yet implemented; only
the bounding sphere of the entire pfBillboard is available.
------------------------------
Subject: + -58- 1.2 Bug Incompatibility with IRIX 6.1 XFS
Date: 20 Nov 95 00:00:01 EST
Performer 1.2 contains a bug that prevents the use of an IRIX 6.1
XFS filesystem (the replacement for the older EFS) for Performer
shared memory and semaphores. There are a number of workarounds:
1) Use an EFS root filesystem
2) set PFTMPDIR to an EFS file system
3) reorder the device types in the kernel configuration
files and build a new kernel.
This problem is fixed in Performer 2.0.
------------------------------
Subject: -59- 1.2 Bug Billboards with multiple pfGeoSets
Date: 8 Apr 94 00:00:01 EST
Using pfBillboards with more than one pfGeoSet sometimes causes a
segmentation violation during the first cull traversal. Workaround:
use only a single pfGeoSet per pfBillboard at some cost in
performance.
------------------------------
Subject: -60- 1.2 Bug Flattening transformation hierarchies
Date: 8 Apr 94 00:00:01 EST
pfFlatten does not work properly on pfGeodes that share pfGeoSets
with other pfGeodes.
------------------------------
Subject: -61- 1.2 libpf Bug Hang on Exit, 5.2 VGX
Date: 8 Apr 94 00:00:01 EST
On VGXT running 5.2, calling pfExit when the phase is PFPHASE_LOCK or
PFPHASE_FLOAT can leave an inactive window and DRAW process.
Workaround: switch to PFPHASE_FLOAT or PFPHASE_FREE before exiting or
kill -9 <pid> afterwards.
------------------------------
Subject: -62- 1.2 libpf Cull with overlapped draw latency
Date: 8 Apr 94 00:00:01 EST
When running PFPHASE_LIMIT or PFPHASE_FREE, the draw can start late
resulting in higher latency.
------------------------------
Subject: -63- 1.2 libpf Cull with overlapped draw hang
Date: 8 Apr 94 00:00:01 EST
When running PFPHASE_LIMIT or PFPHASE_FREE, with processes locked and
non-degrading priorities, it is possible to lock out the X server and
hang the system.
------------------------------
Subject: -64- 1.2 libpf Transparency Sorting
Date: 8 Apr 94 00:00:01 EST
When the PFCULL_SORT mode of pfChanTravMode is set, transparent
objects are drawn after all opaque geometry. However, transparent
objects are not sorted back to front among themselves, so visual
anomalies can result when using blended transparency. Workaround:
use multisample transparency (PFTR_MS_ALPHA), if available.
------------------------------
Subject: -65- 1.2 libpf Multiple EarthSky fog
Date: 8 Apr 94 00:00:01 EST
When using multiple pipes which share pfEarthSky fog set by
pfESkyFog, the fog may appear to change densities and flash.
Workaround: to guarantee that pfClearChan is not called
simultaneously by more than one pipe. This may be accomplished with
a hardware spin lock (see usnewlock)
------------------------------
Subject: -66- 1.2 libpf Bug Limit Phase
Date: 8 Apr 94 00:00:01 EST
The PFPHASE_LIMIT mode of pfPhase only works when the draw stage is
configured as a separate process. For example, the PFMP_APP_CULLDRAW
mode to pfMultiprocess specifies that the cull and draw stages are
combined into a single process and so will not be affected by a LIMIT
phase.
------------------------------
Subject: -67- 1.2 libpr Highlighting when using wireframe
Date: 8 Apr 94 00:00:01 EST
Using highlighting when in wireframe mode can cause random,
flickering, or otherwise misbehaved polygons.
------------------------------
Subject: -68- 1.2 libpf APPCULLDRAW does not honor LIMIT/FLOAT/LOCK phases
Date: 8 Apr 94 00:00:01 EST
When in PFMP_APPCULLDRAW mode, both FREE_RUN and LIMIT act the same;
as do FLOAT and LOCK.
------------------------------
Subject: -69- 1.2 libpf Phase toggling overlapped cull and draw
Date: 8 Apr 94 00:00:01 EST
When running in the PFMP_CULLoDRAW multiprocessing mode, changing the
phase from PFPHASE_LOCK or PFPHASE_FLOAT to PFPHASE_FREE_RUN or
PFPHASE_LIMIT can cause the application to deadlock.
In perfly, rapidly toggling the phase when running with the
PFMP_CULLoDRAW multiprocessing model ("perfly -m 65540" or "perfly -m
65542") can cause the application to hang.
Workaround: toggle only once every few frames or not at all.
------------------------------
Subject: -70- 1.2 libpf pfDataPool warning on exit
Date: 8 Apr 94 00:00:01 EST
A warning similar to the following sometimes occurs when a sample
program exits: "Performer Warning (2): pfReleaseDPool() Could not
unlink arena shared memory /usr/tmp/pfUtilDataPool11638.pfdpool."
This warning is harmless and can be ignored.
------------------------------
Subject: -71- 1.2 libpf Multi-channel stats warning messages
Date: 8 Apr 94 00:00:01 EST
When a multi-channel libpf application enables libpr pfStats modes
(such as graphics statistics -- PFSTATS_GFX) in multiple channels at
the same time, warning messages are printed every frame. The
calculated statistics will be correct. To stop the stream of warning
messages, raise the pfNotifyLevel in the program or set the
enviornment variable PFNFYLEVEL to a value smaller than 2.
------------------------------
Subject: -72- 1.2 libpf Video warnings on Indy when multiprocessed
Date: 8 Apr 94 00:00:01 EST
When an application on an Indy is forced to run the APP and DRAW in
separate processes, e.g. pfMultiprocess(PFMP_APP_CULLDRAW),
pfGetVideoRate warnings are printed when process timing stats are
on. To stop the stream of warning messages, raise the pfNotifyLevel
in the program or set the enviornment variable PFNFYLEVEL to a value
smaller than 2.
------------------------------
Subject: -73- 1.2 stats Frame statistics for lightpoints
Date: 8 Apr 94 00:00:01 EST
pfFrameStats for visible uni-directional and bi-directional
pfLightPoint nodes and points are incorrect. These statistics are
part of the pfFrameStats database statistics (PFFSTATS_DB) and these
specific counts are incorrect. However, the counts for total number
of visible pfLightPoint nodes and points are correct, and so are the
counts for Omni-directional pfLightPoint nodes and points. However,
these numbers are only counted when PFFSTATS_CULL are enabled.
------------------------------
Subject: -74- 1.2 stats Pixel fill statistics under 4.0.5 on RealityEngine
Date: 8 Apr 94 00:00:01 EST
Under 4.0.5, fill statistics do not work when multisampling.
Workaround: turn off multisampling.
------------------------------
Subject: -75- 1.2 libpr Directional pfLightPoints
Date: 8 Apr 94 00:00:01 EST
Specifying a pfLightPoint node as PFLP_UNIDIRECTIONAL or
PFLP_BIDIRECTIONAL can cause a core dump in pfLightPoint::cull.
Workaround: set the color of the first light point with
pfLPointColor(lp, 0, color) before calling pfLPointShape.
------------------------------
Subject: -76- 1.2 libpfutil pfuCollide is jerky
Date: 8 Apr 94 00:00:01 EST
The collision model jerks and bounces when you keep hitting
something.
------------------------------
Subject: -77- 1.2 libpfutil pfuSaveImage broken
Date: 8 Apr 94 00:00:01 EST
The image file generated by pfuSaveImage is bogus.
------------------------------
Subject: -78- 1.2 libpfsgi pfLoadDxf loader is incomplete
Date: 8 Apr 94 00:00:01 EST
The DXF loader does not fully support the format.
------------------------------
Subject: -79- 1.2 libpfsgi pfLoadIv loader is incomplete
Date: 8 Apr 94 00:00:01 EST
The IRIS Inventor loader reads a subset of the IRIS Inventor 1.0
format.
------------------------------
Subject: -80- 1.2 GLX Overlay text with GLX on 4.0.5
Date: 8 Apr 94 00:00:01 EST
In the sample programs (e.g. perfly) on some platforms, sometimes
drawing messages (pfuDrawMessageCI) to the overlay planes in GLX mode
doesn't work under 4.0.5. Workaround: use only in GL mode (e.g. do
not use "perfly -x") or upgrade to IRIX 5.2.
------------------------------
Subject: -81- 1.2 GLX Toggling antialiasing with GLX on 4.0.5 RealityEngine
Date: 8 Apr 94 00:00:01 EST
Toggling antialiasing in the sample programs running in GLX mode on a
4.0.5 RealityEngine apparently confuses the graphics pipe and causes
wild texturing. Workaround: use only in GL mode (e.g. do not use
"perfly -x") or upgrade to IRIX 5.2.
------------------------------
Subject: -82- 1.2 GLX Toggling antialiasing with GLX on any RealityEngine
Date: 8 Apr 94 00:00:01 EST
When antialiasing is toggled with the GUI in GLX mode, the GL window
changes. As each texture textures first comes into view, it is
downloaded to the graphics hardware. Occasional pauses will be seen
until all textures are reloaded in the graphics hardware. This can
be avoided by redownloading all textures (pfuDownloadTexList).
------------------------------
Subject: -83- 1.2 GLX on 4.0.5 Indigo, sample programs hang on startup.
Date: 8 Apr 94 00:00:01 EST
Some sample programs will hang on startup if in GLX mode.
Workaround: start up only in GL mode (e.g. do not use "perfly -x")
or upgrade to IRIX 5.2.
------------------------------
Subject: -84- 1.2 samples smallfly drive models broken
Date: 8 Apr 94 00:00:01 EST
Toggling the drive-model button in smallfly can cause unexpected
results.
------------------------------
Subject: -85- 1.2 samples pickfly drops core under abuse
Date: 8 Apr 94 00:00:01 EST
When aggressively navigating the hierarchy, the number of pfSCSes in
the scene graph can exceed the maximum libpf traversal depth of 64.
------------------------------
Subject: -86- 1.2 samples detail example broken on 4.0.5
Date: 8 Apr 94 00:00:01 EST
The example program sample/pguide/libpf/progs/detail.c doesn't run
properly under 4.0.5. Workaround: upgrade to 5.2.
------------------------------
Subject: -87- 1.2 friends Belvis makefile requires pmake
Date: 8 Apr 94 00:00:01 EST
The makefile for the belvis demo in the Computer Arts and Development
section requires the pmake utility. Workaround: install
dev.sw.make.
------------------------------
Subject: -88- 1.2 friends Toon has bad models and textures
Date: 8 Apr 94 00:00:01 EST
Some of the textures are mixed up in toon town.
------------------------------
Subject: -89- 1.2 docs pfuGetGLXWin wrong on reference page
Date: 8 Apr 94 00:00:01 EST
The prototype in the man page should read: "extern void
pfuGetGLXWin(pfPipe *_pipe, pfuGLXWindow *_glxWin);" pfuGetGLXWin
copies the active GLX windows (normal and overlay) for the specified
pipe into the provided pfuGLXWindow structure. The active windows
change when a different GLX visual is requested.
------------------------------
Subject: -90- 1.2 docs pfuLockDownApp gives the incorrect location
Date: 8 Apr 94 00:00:01 EST
pfuLockDownApp gives the incorrect location for the procsetup.c
example: The correct location for this example is:
/usr/src/Performer/src/pguide/libpfutil/progs/procsetup.c
Additionally, the reference page should mention the example
/usr/src/Performer/src/pguide/libpf/progs/bench.c
------------------------------
Subject: -91- 1.1 Bug with FP underflow
Date: 26 Oct 93 00:00:01 EST
The cull process could encounter an FP underflow that could
periodically affect cull performance.
------------------------------
Subject: -92- 1.1 Bug with Multipipe Onyx
Date: 26 Oct 93 00:00:01 EST
There is a bug in the 1.1 multipipe code. The symptom is a core dump
and an error like:
Performer Fatal (4):pfFree() pointer 0x9c9350 not from pfMalloc
The workaround is to do the following after you've created a channel
with pfNewChan:
((long**)chan)[3] = NULL;
This workaround MUST NOT BE USED in Performer 1.2 applications.
------------------------------
Subject: -93- 1.1 Bug Installing on Indy or Indigo2 XL
Date: 8 Apr 94 00:00:01 EST
The problems are related to the way that Performer recognizes the
graphics hardware in the machine. Since the Indy was introduced
after Performer 1.1 released, Performer is unable to match the
graphics type (NEWPORT) with the hardware types it knows. This
effects both the installation and run-time applications.
/usr/lib/libpr.a, /usr/lib/libpr-g.a, /usr/src/Performer/demo/perfly,
and /usr/src/Performer/src/perfly/Makefile are machine-tagged in inst
as platform-specific and will not be installed by default.
WORKAROUND: You must remove IRIS Performer 1.1 from your machine and
re-install, explicitly defining the graphics hardware type. LIGHT
(Entry) graphics is the closest approximation to NEWPORT.
% su
# versions remove performer_eoe
# versions remove performer_dev
# inst -f <pathname> -m GFXBOARD=LIGHT
------------------------------
Subject: -94- 1.1 Bug Unable to determine Indy graphics type
Date: 8 Apr 94 00:00:01 EST
Performer 1.1 applications on Indy display the message: "unable to
determine graphics type -1. Default: VENICE"
WORKAROUND: The above message means that Performer was unable to
match NEWPORT graphics to a known graphics type, and has defaulted to
VENICE (RealityEngine). This could cause some anomalous behavior in
your application. There is no specific workaround at this time.
------------------------------
Subject: -95- 1.1 Bug perfly cannot find libpf.so on Indy running 5.1
Date: 8 Apr 94 00:00:01 EST
/usr/src/Performer/demo/perfly fails with the error message:
"perfly: rld: Fatal Error: cannot find soname 'libpf.so'"
WORKAROUND: You must recompile perfly from the source code provided
in /usr/src/Performer/src/perfly.
------------------------------
Subject: -96- 1.1 Bug perfly FP error messages in 5.0.1
Date: 8 Apr 94 00:00:01 EST
perfly prints the following error message(s) several times each
frame:
"Performer Info:FP division by zero"
"Performer Info:FP infinity minus infinity"
WORKAROUND: This is caused by a bug in IRIS GL and is not a fatal
error. Run perfly with the "-n 2" option to disable these (and any
other) informational messages.
------------------------------
Subject: -97- 1.1 Bug Installation on IRIX 5.2 - missing prerequisites
Date: 8 Apr 94 00:00:01 EST
When trying to install IRIS Performer 1.1 on a machine running IRIX
5.2, you will get an error regarding a missing prerequisite,
"dev.sw.libC". This subsystem contained the C++ runtime library. In
5.2 it has been renamed to "c++_eoe.sw.lib".
WORKAROUND: 'set rulesoverride on' from within inst.
------------------------------
Subject: -98- 1.0/1.1 Bug intersections with pfSwitch'es
Date: 26 Oct 93 00:00:01 EST
Intersections with pfSwitch'es whose value is PFSWITCH_OFF could
cause a core dump.
------------------------------
Subject: -99- 1.0/1.1 Bug with pfTexture()
Date: 26 Oct 93 00:00:01 EST
On RealityEngine systems, EXTERNAL format was ignored.
------------------------------
Subject: -100- 1.0/1.1 Bug with pfAntiAlias()
Date: 26 Oct 93 00:00:01 EST
On RealityEngine systems, pfAntialias(PFAA_OFF) did not turn off
multisampling.
------------------------------
Subject: -101- 1.0/1.1 Bug with pfFlatten()
Date: 26 Oct 93 00:00:01 EST
pfFlatten did not dirty bounding spheres of flattened nodes so they
had improper bounds and would not cull correctly.
------------------------------
Subject: -102- 1.0/1.1 Bug with pfSequences
Date: 26 Oct 93 00:00:01 EST
pfSequences: PFSEQ_RESUME ignored children's display times and drew
subsequent children for 1 frame only.
------------------------------
Subject: -103- 1.0/1.1 Bug with pfClosestPtOnPlane()
Date: 26 Oct 93 00:00:01 EST
pfClosestPtOnPlane returned wrong result. Also, the man page had the
wrong prototype.
------------------------------
Subject: -104- 1.0/1.1 Bug on ELAN/XS with wireframe PFGS_QUADS
Date: 26 Oct 93 00:00:01 EST
On EXPRESS Graphics platforms (XS, XS24, ELAN, etc), wireframe quads
have a stray line from one vertex to "infinity" when displayed in
wireframe mode.
------------------------------
Subject: -105- 1.0/1.2-IRIX4 Bug Z buffer configuration on 4.0.5 RealityEngine
Date: 8 Apr 94 00:00:01 EST
Z buffer config on 4.0.5 RealityEngine: On some versions of IRIX
4.0.5, mssize(4,24,1) (the default by pfAntiAlias) generates an
unusable Z configuration. For these machines, call mssize(4,32,1)
followed by gconfig() in your pipe initialization routine and do not
attempt to toggle antialiasing.
------------------------------
Subject: -106- 1.0 Bug pfInit(): mmap failed for /dev/zero
Date: 26 Oct 93 00:00:01 EST
This means that you tried to run a Performer 1.0 application (such
as a 4.x version of perfly) on a machine running IRIX 5.x. Virtual
memory management is different in IRIX 5.x. In order for your
program to work properly you must:
% setenv PFTMPDIR /usr/tmp
------------------------------
Subject: -107- 1.0 Doc Bug in pfMakePolarSeg() man page
Date: 26 Oct 93 00:00:01 EST
The man page for pfMakePolarSeg contradicts itself with respect to
the meaning of azimuth and elevation. The correct paragraph should
be:
pfMakePolarSeg sets dst to the segment which starts at pos and
has length length and points in the direction specified by azi
and elev. azi specifies the azimuth (or heading), which is the
angle which the projection of the segment in the X-Y plane
makes with the +Y axis. elev specifies the elevation (or
pitch), the angle with respect to the X-Y plane. The positive
Y axis is azi=0 and elev=0. Azimuth follows the right hand
rule about the +Z azis, e.g. - +90 degrees is the -X axis.
Similarly, elevation follows the right hand rule about the X
axis, e.g. - +90 degrees is the +Z axis.
Note that in IRIS Performer 1.0, an azi and elev of 0.0 is equivalent
to the +X axis while in 1.1, this has been changed to the +Y axis.
------------------------------
Subject: -108- 1.0 Doc Bug in pfDispList() man page
Date: 26 Oct 93 00:00:01 EST
The pfDispList man page says the size argument is in bytes; it should
say words.
------------------------------
Subject: -109- 1.0 Doc Bug in PFPG (simple.c)
Date: 26 Oct 93 00:00:01 EST
The program simple.c in the IRIS Performer Programming Guide (PFPG)
does not bind a light and draws a black image on Elan systems. The
corrected version, which creates and binds a light in the pipe
initialization callback, is in /usr/src/Performer/src/pguide
------------------------------
Subject: -110- 1.0 Bug in pfGetTime()
Date: 26 Oct 93 00:00:01 EST
In 1.0, pfGetTime() would occasionally return bad values (off by
4000+ seconds) on Indigo2 and machines without a fast counter, e.g.
PowerSeries/IO2.
There was no workaround.
------------------------------
Subject: -111- 1.0 Bug in pfNodeBBox()
Date: 26 Oct 93 00:00:01 EST
pfNodeBBox did not set the bounding box of a node. A symptom was
that the bounding boxes of the node would not change when modifying a
parent pfDCS.
The workaround was to OR the value 0x0010 into the mode, e.g.-
pfNodeBBox(node, &bbox, PFN_BMODE_STATIC | 0x0010);
------------------------------
Subject: -112- 1.0 Bug in pfInitGfx() with Z-buffer on RealityEngine
Date: 26 Oct 93 00:00:01 EST
pfInitGfx on RealityEngines would call lsetdepth(0x0, 0x0),
essentially disabling zbuffering.
The workaround was to call lsetdepth explicitly after pfInitGfx, in
the pipe initialization callback.
------------------------------
Subject: ! -113- 1.0 Bug in libpfflt combineLODs()
Date: 26 Oct 93 00:00:01 EST
combineLODs() in the MultiGen .flt converter (in file hier.c) did not
set the LOD center of combined LODs. This would result in strange
LOD behavior for LODs which were not modelled about the origin.
(The current OpenFlight loader, revision R14_2, correctly uses the
center when combining LODs and can combine any number of sibling
LOD's for improved efficiency.)
------------------------------
Subject: -114- 1.0 Bug with two-sided material and pfMtlColorMode()
Date: 26 Oct 93 00:00:01 EST
Applying a back-sided material which had a color mode
(pfMtlColorMode), would set the GL lmcolor mode. Since IrisGL does
not support lmcolor for back-sided materials, this could have caused
front-sided materials to use an improper lmcolor mode.
------------------------------
Subject: -115- 1.0 Bug in pfFilePath()
Date: 26 Oct 93 00:00:01 EST
pfFilePath would exit with a FATAL error if it was called twice.
------------------------------
Subject: -116- 1.0 Bug in pfGetCurGState()
Date: 26 Oct 93 00:00:01 EST
pfGetCurGState returned a pfGeoState which was the top of the state
stack rather than the most recently applied pfGeoState.
------------------------------
Subject: -117- 1.0 Bug in pfGetCurState()
Date: 26 Oct 93 00:00:01 EST
pfGetCurState returned a pfGeoState which was the top of the state
stack rather than the current pfState.
------------------------------
Subject: -118- 1.0 Bug with cloned scenes
Date: 26 Oct 93 00:00:01 EST
pfClone()'ed scenes were not properly cleaned and did not properly
propagate updates. In particular, cloned pfSequences did not work.
------------------------------
Subject: -119- 1.0 Bug intersections in collide.c
Date: 26 Oct 93 00:00:01 EST
collide.c was shipped with a hardwired intersection mode which turned
off intersection caching, substantially reducing intersection
performance.
------------------------------
Subject: -120- 1.0 Bug with flattened pfLightPoints
Date: 26 Oct 93 00:00:01 EST
pfFlatten()'ed pfLightPoints were broken for multiprocessing modes
when the application and cull processes were separate.
------------------------------
Subject: -121- 1.0 Bug intersections with pfSequences
Date: 26 Oct 93 00:00:01 EST
Intersections with pfSequences could sometimes turn them off
(PFSEQ_STOP).
------------------------------
Subject: -122- 1.0 Bug intersections with non-indexed quads
Date: 26 Oct 93 00:00:01 EST
Intersection caching for non-indexed quads was broken and could case
a core dump when intersection with pfGeoSets of this type.
------------------------------
Subject: -123- Credits
Date: 6 May 93 00:00:01 EST
This FAQ was compiled by
Allan Schaffer aschaffe++at++sgi.com
------------------------------
----
Allan Schaffer aschaffe++at++sgi.com
Silicon Graphics http://reality.sgi.com/employees/aschaffe
This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:52:08 PDT