Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SGI performer Frequently Asked Questions (FAQ)

0 views
Skip to first unread message

The SGI FAQ group

unread,
Jul 6, 2001, 1:59:48 AM7/6/01
to
Archive-name: sgi/faq/performer
Last-modified: Wed Oct 20 1:00:04 CDT 1999
Posting-Frequency: Twice monthly
URL: http://www-viz.tamu.edu/~sgi-faq/

SGI performer Frequently Asked Questions (FAQ)

This is one of the Silicon Graphics FAQ series, which consists of:

SGI admin FAQ - IRIX system administration
SGI apps FAQ - Applications and miscellaneous programming
SGI audio FAQ - Audio applications and programming
SGI diffs FAQ - Changes to the other FAQs since the last posting
SGI graphics FAQ - Graphics and user environment customization
SGI hardware FAQ - Hardware
SGI impressario FAQ - IRIS Impressario
SGI inventor FAQ - IRIS Inventor
SGI misc FAQ - Introduction & miscellaneous information
SGI movie FAQ - Movies
SGI performer FAQ - IRIS Performer
SGI pointer FAQ - Pointer to the other FAQs
SGI security FAQ - IRIX security

Read the misc FAQ for information about the FAQs themselves. Each FAQ is
posted to comp.sys.sgi.misc and to the news.answers and comp.answers
newsgroups (whose purpose is to store FAQs) twice per month. If you
can't find one of the FAQs with your news program, you can get it from

ftp://viz.tamu.edu/pub/sgi/faq/
ftp://rtfm.mit.edu/pub/usenet/news.answers/sgi/faq/

(rtfm.mit.edu is home to many other FAQs and informational documents,
and is a good place to look if you can't find an answer here.) The FAQs
are on the World Wide Web at

http://www-viz.tamu.edu/~sgi-faq/

If you can't use FTP or WWW, send mail to mail-...@rtfm.mit.edu with
the word 'help' on a line by itself in the text, and it will send you a
document describing how to get files from rtfm.mit.edu by mail. Send the
command 'send usenet/news.answers/sgi/faq/misc' to get the SGI misc FAQ,
and similarly for the other FAQs. Send the command 'send
usenet/news.answers/internet-services/access-via-email' to get the
"Accessing the Internet by E-Mail FAQ".

You may distribute the SGI FAQs freely and we encourage you to do so.
However, you must keep them intact, including headers and this notice,
and you must not charge for or profit from them. Contact us for other
arrangements. We can't be responsible for copies of the SGI FAQs at
sites which we do not control, and copies published on paper or CD-ROM
are certain to be out of date. The contents are accurate as far as we
know, but the usual disclaimers apply. Send additions and changes to
sgi...@viz.tamu.edu.

Topics covered in this FAQ:
---------------------------
-1- ================ General Topics ==================
-2- What is IRIS Performer?
-3- Where can I get more technical information about IRIS Performer?
-4- Where can I get more product information about IRIS Performer?
-5- The IRIS Performer mailing list
-6- The IRIS Performer FTP Archives
-7- The IRIS Performer WWW Pages in Silicon Surf
-8- The IRIS Performer Technical Report
-9- How does IRIS Performer relate to IRIS Inventor?
-10- What version of IRIS Performer should I use?
-11- What patches should be used with IRIS Performer?
-12- What version of IRIS Performer am I currently running?
-13- What are all of the released versions of IRIS Performer?
-14- Does IRIS Performer use IRIS GL or OpenGL?
-15- Is there a IRIS Performer file format?
-16- What database file formats can IRIS Performer read?
-17- Is there an IRIS Inventor file reader for IRIS Performer?
-18- What are the .tlf files used by the Performer Town and Village?
-19- What are the minimum requirements for using IRIS Performer?
-20- Binary Compatibility on different machines
-21- Binary Compatibility on different releases
-22- Guaranteeing Real Time performance
-23- How do I make GL calls from within a IRIS Performer program?
-24- How do I overlay graphics on top of my Performer scene?
-25- What is the difference between phases FREE, FLOAT, and LOCK?
-26- Use of PFTMPDIR to configure shared memory
-27- Which rendering primitives does IRIS Performer support?
-28- How do I do triangle meshes in Performer?
-29- ================= Known Problems =================
-30- Video Rate sometimes reported incorrectly
-31- Problems with Performer Town or Village demos
-32- Antialiasing
-33- Coplanar Polygons & pfDecal on certain platforms
-34- Networked graphics (DGL & GLX)
-35- Transparency
-36- Gangdraw and cursor loading
-37- Frame control on low- and mid-range machines
-38- Timing on pre-1992 platforms
-39- 2.0 Warnings from ld when building on IRIX 6.2
-40- 2.0 Bug OpenGL functions missing when building static executables
-41- 2.0 Bug Z buffer problems when moving windows on 5.3 EXtreme
-42- 2.0 Bug Use of more than 512 simultaneous textures
-43- 2.0 Bug IRIS GL on dual-head systems
-44- 2.0 Bug Resizing of pfPipeWindows in MP X apps
-45- 2.0 Bug Applying frustums transformed by pfOrthoXformFrust
-46- 2.0 Bug pfFlatten with pfCycleBuffer attribute arrays
-47- 2.0 Bug Sorting lights with pfChanBinSort()
-48- 2.0 Bug OpenGL disables back material modes
-49- 2.0 Bug CPU statistics in IRIX 6
-50- 2.0 Bug pfdLoadFile_flt FLT loader in IRIX 6
-51- 2.0 Bug hello sample program in IRIX 6
-52- 2.0 Bug Forked X input handing in IRIX 6.2
-53- 2.0 Bug Intersections with pfBillboard nodes
-54- 2.0 Bug Channel fade LOD attributes & mixed gfx configs
-55- 2.0 Bug libpfui C API incomplete
-56- 2.0 Bug libpfdb pfdLoadFile_dxf incomplete
-57- 2.0 Bug libpfdb pfdLoadFile_sgo incomplete
-58- 2.0 Bug IRIS GL perfly on Indy
-59- 2.0 Bug pguide/libpf/C/pipewin sample program
-60- 2.0 Bug pguide/libpf/C/lpstate sample program
-61- 2.0 Bug pfInitClock() and Video Rate on 250MHz IMPACT
-62- 1.2 Bug Billboard normals and intersections
-63- 1.2 Bug Incompatibility with IRIX 6.1 XFS
-64- 1.2 Bug Billboards with multiple pfGeoSets
-65- 1.2 Bug Flattening transformation hierarchies
-66- 1.2 libpf Bug Hang on Exit, 5.2 VGX
-67- 1.2 libpf Cull with overlapped draw latency
-68- 1.2 libpf Cull with overlapped draw hang
-69- 1.2 libpf Transparency Sorting
-70- 1.2 libpf Multiple EarthSky fog
-71- 1.2 libpf Bug Limit Phase
-72- 1.2 libpr Highlighting when using wireframe
-73- 1.2 libpf APPCULLDRAW does not honor LIMIT/FLOAT/LOCK phases
-74- 1.2 libpf Phase toggling overlapped cull and draw
-75- 1.2 libpf pfDataPool warning on exit
-76- 1.2 libpf Multi-channel stats warning messages
-77- 1.2 libpf Video warnings on Indy when multiprocessed
-78- 1.2 stats Frame statistics for lightpoints
-79- 1.2 stats Pixel fill statistics under 4.0.5 on RealityEngine
-80- 1.2 libpr Directional pfLightPoints
-81- 1.2 libpfutil pfuCollide is jerky
-82- 1.2 libpfutil pfuSaveImage broken
-83- 1.2 libpfsgi pfLoadDxf loader is incomplete
-84- 1.2 libpfsgi pfLoadIv loader is incomplete
-85- 1.2 GLX Overlay text with GLX on 4.0.5
-86- 1.2 GLX Toggling antialiasing with GLX on 4.0.5 RealityEngine
-87- 1.2 GLX Toggling antialiasing with GLX on any RealityEngine
-88- 1.2 GLX on 4.0.5 Indigo, sample programs hang on startup.
-89- 1.2 samples smallfly drive models broken
-90- 1.2 samples pickfly drops core under abuse
-91- 1.2 samples detail example broken on 4.0.5
-92- 1.2 friends Belvis makefile requires pmake
-93- 1.2 friends Toon has bad models and textures
-94- 1.2 docs pfuGetGLXWin wrong on reference page
-95- 1.2 docs pfuLockDownApp gives the incorrect location
-96- 1.1 Bug with FP underflow
-97- 1.1 Bug with Multipipe Onyx
-98- 1.1 Bug Installing on Indy or Indigo2 XL
-99- 1.1 Bug Unable to determine Indy graphics type
-100- 1.1 Bug perfly cannot find libpf.so on Indy running 5.1
-101- 1.1 Bug perfly FP error messages in 5.0.1
-102- 1.1 Bug Installation on IRIX 5.2 - missing prerequisites
-103- 1.0/1.1 Bug intersections with pfSwitch'es
-104- 1.0/1.1 Bug with pfTexture()
-105- 1.0/1.1 Bug with pfAntiAlias()
-106- 1.0/1.1 Bug with pfFlatten()
-107- 1.0/1.1 Bug with pfSequences
-108- 1.0/1.1 Bug with pfClosestPtOnPlane()
-109- 1.0/1.1 Bug on ELAN/XS with wireframe PFGS_QUADS
-110- 1.0/1.2-IRIX4 Bug Z buffer configuration on 4.0.5 RealityEngine
-111- 1.0 Bug pfInit(): mmap failed for /dev/zero
-112- 1.0 Doc Bug in pfMakePolarSeg() man page
-113- 1.0 Doc Bug in pfDispList() man page
-114- 1.0 Doc Bug in PFPG (simple.c)
-115- 1.0 Bug in pfGetTime()
-116- 1.0 Bug in pfNodeBBox()
-117- 1.0 Bug in pfInitGfx() with Z-buffer on RealityEngine
-118- 1.0 Bug in libpfflt combineLODs()
-119- 1.0 Bug with two-sided material and pfMtlColorMode()
-120- 1.0 Bug in pfFilePath()
-121- 1.0 Bug in pfGetCurGState()
-122- 1.0 Bug in pfGetCurState()
-123- 1.0 Bug with cloned scenes
-124- 1.0 Bug intersections in collide.c
-125- 1.0 Bug with flattened pfLightPoints
-126- 1.0 Bug intersections with pfSequences
-127- 1.0 Bug intersections with non-indexed quads

----------------------------------------------------------------------

Subject: -1- ================ General Topics ==================
Date: 12 Dec 95 00:00:01 EST

------------------------------

Subject: -2- 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/Onyx2 RealityEngine
& InfiniteReality and Indigo2/Octane 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: -3- 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: -4- 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 (ral...@asd.sgi.com). To
learn about SGI Virtual Reality solutions contact Joshua Mogal
(mo...@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: -5- 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-perfor...@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: -6- 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: -7- 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 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: -8- 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: -9- 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: -10- What version of IRIS Performer should I use?
Date: 16 Oct 97 00:00:01 EST

The short answer is that IRIS Performer 2.0 is the latest
all-platform release and 2.1 is the InfiniteReality (all flavors -
Onyx, Onyx2, iR Reality) release. If you are doing development for
an application targeted primarily at an InfiniteReality graphics
platform using InfiniteReality features, you should buy 2.1. You
can run 2.1 on any platform running IRIX 6.2 or later, but its only
benefit over 2.0 was features for the InfiniteReality graphics
platform.

IRIS Performer also creates and ships binary compatible bug-fix
upgrades for the execution environment of the main releases. These
maintenance releases have a third field in their number string and
are binary compatible with the base release. These upgraded
execution environments include the optimized DSOs and demo
executables and are shipped with IRIX releases and made available
for older IRIX releases through patches. The following table lists
the latest versions of our releases and the version of IRIX that
they shipped with and the corresponding patch number.

Performer Maintenance Releases:

performer_eoe shipped in IRIX available in Patch for IRIX Releases
-----------------------------------------------------------------------
*** 2.0.4/2.1.2(*) 6.4 1696 6.2 and later
2.0.3/2.1.1(*) 6.3
2.0.2 1347 6.2 and later
2.0.1 6.2


(*) The 2.1.X upgrades are included as 2.1 compatibility subsystems
inside the corresponding 2.0.X version. This is done to allow upgrades
for both releases to ship inside IRIX.
(***) this is the latest maintenance version check it out!

All InfiniteReality systems (Onyx, Onyx2, ir Reality) running IRIX
6.2 or later should use IRIS Performer 2.1 (eoe and dev). Note
that Performer 2.1 was originally only officially supported on Onyx
InfiniteReality systems and is only of benefit on those system or
for doing development for those systems. Other systems and
projects not targeted at InfiniteReality should use 2.0 eoe and 2.0
dev, plus the latest eoe upgrade or patch as indicated above.

Patches available for IRIS Performer development subsystems: (also
see later section on patches)

There have are 2 patches available for the Performer 2.0
development subsystems (sample source code, header files, debug and
static libraries) that correspond to the 2.0.2 eoe maintenance
release:

patch 1392 IRIX 6.2 and later
patch 1414 for IRIX 5.3 (contains dev and eoe)

These patches are for the 2.0 development subsystems _only_. Do
not attempt to install them if running any other base release for
development.

------------------------------

Subject: -11- What patches should be used with IRIS Performer?
Date: Wed Sep 22 16:26:21 CDT 1999

performer_eoe:

6.4: No patches required for performer_eoe 2.0.4/2.1.2
6.3: Patch 1696 - updates Performer 2.0, 2.0.1, 2.0.3/2.1.1
to the 2.0.4/2.1.2 EOE shipped in IRIX 6.4
6.2: Patch 1696 - updates Performer 2.0 and 2.0.1,
to the 2.0.4/2.1.2 EOE shipped in IRIX 6.4
5.3: Patch 1414 - updates Performer 2.0 eoe & dev -> 2.0.2.

All versions of performer_eoe for 2.0[.X] are binary compatible.
All versions of performer_eoe for 2.1[.X] are binary compatible.
Patch 1696 updates all performer_eoe 2.0.x to 2.0.4 and all 2.1 to 2.1.2
Patch 1696 replaces patch 1347.

performer_dev:

All performer_dev 2.0 should be upgraded to at least performer_dev 2.0.2
for IRIX 6.2 and later IRIX releases.

6.4: Patch 1392 - updates Performer 2.0 DEV -> 2.0.2 DEV
6.3: Patch 1392 - updates Performer 2.0 DEV -> 2.0.2 DEV
6.2: Patch 1392 - updates Performer 2.0 DEV -> 2.0.2 DEV
5.3: Patch 1414 - updates Performer 2.0 eoe & dev -> 2.0.2.

Patch 1392 IS for the 2.0 development subsystems _only_.
Do not attempt to install it if running any other base release
for development.

performer_eoe 2.0.2 and 2.0.4 are both binary compatible with
performer_dev 2.0[.X]

All of the patches require a base subsystem from the IRIS Performer CD or
from IRIX to be loaded first.
Customers with SupportFolio online access can download patches from:

http://www.sgi.com/support/patch_intro.html

------------------------------

Subject: -12- What version of IRIS Performer am I currently running?
Date: 16 Oct 1997 00:00:01 EST

To find out what release of IRIS Performer is currently installed
on the system do:

% versions | grep performer

and you will see a list of all IRIS Performer subsystems that are
currently installed. Note that you might see execution
environments and compatibility DSOs for older releases of IRIS
Performer -- this is what allows you to run any IRIS Performer
executable, regardless of the development release you are currently
using.

To find out which version a given IRIS Performer DSO library is do:

% elfdump -L lib.so | fgrep IVERSION

and you will see the DSO version number of the library. Note: DSO
version numbers are NOT the same as IRIS Performer product release
numbers. DSO numbers are X.Y.Z where the X must change with each
change in binary compatibility, where the Y changes to signify a
binary compatible version, and the .Z is an additional tag. The
mapping of IRIS Performer releases to DSO numbers is:

IRIS Performer release DSO lib version
-------------------------------------------
1.0 sgi1.0
2.0 sgi2.0
2.0.1 sgi2.1
2.0.2 sgi2.2
2.0.3 sgi2.3
2.0.4 sgi2.4
2.1 sgi3.0
2.1.1 sgi3.1
2.1.2 sgi3.2

Each release of IRIS Performer includes the versioned DSO libraries
from previous releases for each binary compatible group. Upon
program startup, rld will find the proper version of the IRIS
Performer library for the current executable. These DSOs are
installed under /usr/lib/ and /usr/lib/Performer.

ex:
/usr/lib/libpf_ogl.so.2
/usr/lib/libpf_ogl.so.3
/usr/lib/libpf_ogl.so.4

% elfdump -L /usr/lib/libpf_ogl.so.2 | fgrep IVERSION
[34] IVERSION sgi2.4

To find out which version a dynamically linked IRIS Performer
executable was made with do:

% elfdump -L progname

and you will see a list of the DSOs required by the program and
their DSO version number.

------------------------------

Subject: -13- What are all of the released versions of IRIS Performer?
Date: 16 Oct 1997 00:00:01 EST

Performer 2.0.4: performer_eoe 2.0 bug fix upgrade, shipped with IRIX 6.4
[equivalent updates in patch 1696 for 6.2 and later]

Performer 2.1.2: performer_eoe 2.1 bug fix upgrade, shipped as
compatibility libs in 2.0.4 in IRIX 6.4 and patch 1696

Performer 2.0.3: performer_eoe 2.0 bug fix upgrade, shipped with IRIX 6.3

Performer 2.1.1: performer_eoe 2.1 bug fix upgrade, shipped as
compatibility libs in 2.0.3 in IRIX 6.3

Performer 2.1: InfiniteReality release, for all InfiniteReality systems
running IRIX 6.2 or later, (eoe and dev)

Performer 2.0.2: bug fix upgrade for Performer 2.0.1/2.0 eoe and dev,
shipped in patches 1347(eoe)+1392(dev) (for IRIX 6.x) or
patch 1414 (for IRIX 5.x)

Performer 2.0.1: bug fix upgrade for 2.0 EOE update only, shipped in
IRIX 6.2

Performer 2.0: All-platform release for IRIX 5.3 and later releases

IRIS Performer 1.2/IRIX5: (obsolete) For IRIX 5.2, 5.3, 6.0.1, 6.1
IRIS Performer 1.2/IRIX4: (obsolete) For IRIX 4.0.5(A-J) only
IRIS Performer 1.1: (obsolete) For IRIX 5.x only
IRIS Performer 1.0: (obsolete) For IRIX 4.x only

Patch 1696: performer_eoe updates Performer on IRIX 6.2 and 6.3 to
the 2.0.4/2.1.2 shipped in IRIX 6.4.
It updates 2.0.1, 2.0.2, 2.0.3 eoe to revs equiv to 2.0.4.
It updates 2.1, 2.1.1 eoe to revs equiv to 2.1.2.
Replaces 1347.
Patch 1414: performer 2.0 eoe & dev patch for IRIX 5.3 only
Patch 1392: performer_dev 2.0 patch for IRIX 6.2, 6.3, 6.4.
Patch 1347: performer_eoe 2.0.1 patch for IRIX 6.2 only

Historical/Background information:

Note that the above list is included only for completeness' sake.
Also note that you might not want "highest numbered" version of
Performer, you want the the highest maintenance rev of your main
release (2.1.X for InfiniteReality and 2.0 otherwise). Note that
maintenance releases have been done for both 2.0 and 2.1
simultaneously.

Systems running IRIX 6.2 or later should load the performer_eoe
IRIX cd, and performer_dev from the Performer 2.0 CD. Then load
the relevant patches as described below.

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,
you need to upgrade to 6.2 (or above) and use 2.0.1 (or above).

No further releases of Performer are planned for IRIX 4.x or 5.x.

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: -14- Does IRIS Performer use IRIS GL or OpenGL?
Date: 12 Dec 95 00:00:01 EST

Performer 2.1 is OpenGL only, having bindings for O32 (32-bit)
OpenGL, N32 (32-bit) OpenGL, and N64 (64-bit) OpenGL.

IRIS Performer 2.0, 2.0.1, "2.0.2", 2.0.3, and 2.0.4 contain
bindings for O32 IRIS GL, O32 OpenGL, N32 OpenGL, and N64 OpenGL.

IRIS Performer 1.0, 1.1, and 1.2 use IRIS GL (32-bit).

------------------------------

Subject: -15- Is there a IRIS Performer file format?
Date: 26 Oct 93 00:00:01 EST

Yes. Performer "2.0.2", 2.0.3, 2.0.4, and 2.1 now include pfb (a
fast-loading binary database format) support in libpfpfb. It also
adds support of "pfa" format, a slow-loading ascii version of pfb.

The 'pfconv' program can be used to convert other file formats to
pfb.

Prior releases do not have a Performer-specific file format.

------------------------------

Subject: -16- What database file formats can IRIS Performer read?
Date: Thu Sep 30 16:55:07 CDT 1999

Performer "2.0.2", 2.0.3, 2.0.4, and 2.1 add support of the
following two formats, in addition to those available in Performer
2.0:

pfa: IRIS Performer ASCII format developed by Rob Mace
pfb: IRIS Performer BINARY format (very fast) developed by Rob Mace

IRIS Performer 2.0 and 2.0.1 contain 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 ViewPoint, http://www.viewpoint.com/, 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: -17- Is there an IRIS Inventor file reader for IRIS
Performer?
Date: 12 Dec 95 00:00:01 EST

Yes. IRIS Performer 2.x 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.x 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: -18- 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: -19- What are the minimum requirements for using IRIS
Performer?
Date: 12 Dec 95 00:00:01 EST

IRIS Performer 2.0 is the all platform release and requires IRIX 5.3
or later IRIX releases.
Binary compatible upgrade patches are available and recommended.

IRIS Performer 2.1 requires IRIX 6.2 or a later IRIX release.
IRIS Performer 2.1 is intended for running on or developing for the
InfiniteReality graphics platform.

IRIS Performer 2.0.4 (eoe) requires IRIX 6.2 or a later IRIX release
and shipped in IRIX 6.4 and IRIS Performer patch 1696
IRIS Performer 2.0.3 (eoe) requires IRIX 6.2 or a later IRIX release
and is shipped in IRIX 6.3.
IRIS Performer 2.0.2 (eoe) requires IRIX 6.2 and later and is
shipped in IRIX 6.2 and was shipped in IRIS Performer patch
1392 and has now been obsoleted by IRIS Performer 2.0.4 in patch 1696.
IRIS Performer 2.0.1 (eoe) requires IRIX 6.2 or a later IRIX release
was shipped in IRIX 6.2.

Patch 1347 (eoe 2.0.2) requires IRIX 6.2 or later IRIX releases
and is obsoleted by patch 1396.
Patch 1396 (eoe pf2.0.4) requires IRIX 6.2 or later IRIX releases
Patch 1392 (dev pf2.0.2) requires IRIX 6.2 or later IRIX releases
Patch 1414 (eoe+dev pf2.0.2 for IRIX 5.3) is only for IRIX 5.3.

IRIS Performer 1.2/IRIX5 requires IRIX 5.2 or later IRIX release.
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: -20- 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: -21- Binary Compatibility on different releases
Date: 17 Oct 97 00:00:01 EST

o Compatibility issues with previous Performer releases:

IRIS Performer release have a number of 3 fields: Major.Minor.Maint
Maintenance releases are binary compatible with all versions of
the same Major.Minor base release. For example, 2.0.1, 2.0.2, 2.0.3
and 2.0.4 are all binary compatible with each other and are
all binarcy compatible with their base release, 2.0. Maintenance
releases contain bug fixes and the highest maintenance number will
be the most recent release. Different Major.Minor releases are not
binary compatible; ie: IRIS Performer 2.0 is not binary compatible
with IRIS Performer 2.1. For this reason, IRIS Performer releases
include compatibility libraries from previous releases (properly
versioned and suffixed for the IRIX environment) so that old
IRIS Performer applications will continue to run without re-linking.

Performer compatibility 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 compatibility 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 compatibility issues with IRIX 6.2:

IRIS Performer 2.0 and 2.1 are compatible with IRIX 6.2 and later
IRIX relases. 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.

Applications using Performer 1.2/IRIX5 are binary compatible with
machines running Irix 5.2, 5.3, 6.0, and later IRIX releases
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: -22- 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: -23- 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: -24- 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: -25- 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: -26- 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: -27- 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: -28- 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.

------------------------------

Subject: -29- ================= Known Problems =================
Date: 8 Apr 94 00:00:01 EST

------------------------------

Subject: -30- 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: -31- 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: -32- 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: -33- 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: -34- 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: -35- 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: -36- 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: -37- 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: -38- 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: -39- 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: -40- 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: -41- 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: -42- 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: -43- 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: -44- 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: -45- 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: -46- 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: -47- 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: -48- 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: -49- 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: -50- 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: -51- 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: -52- 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: -53- 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: -54- 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: -55- 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: -56- 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: -57- 2.0 Bug libpfdb pfdLoadFile_sgo incomplete
Date: 12 Dec 95 00:00:01 EST

The SGO loader does not support triangle strips

------------------------------

Subject: -58- 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: -59- 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: -60- 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: -61- 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: -62- 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: -63- 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: -64- 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: -65- 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: -66- 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: -67- 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: -68- 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: -69- 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: -70- 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: -71- 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: -72- 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: -73- 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: -74- 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: -75- 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: -76- 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: -77- 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: -78- 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: -79- 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: -80- 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: -81- 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: -82- 1.2 libpfutil pfuSaveImage broken
Date: 8 Apr 94 00:00:01 EST

The image file generated by pfuSaveImage is bogus.

------------------------------

Subject: -83- 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: -84- 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: -85- 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: -86- 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: -87- 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: -88- 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: -89- 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: -90- 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: -91- 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: -92- 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: -93- 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: -94- 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: -95- 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: -96- 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: -97- 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: -98- 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: -99- 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: -100- 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: -101- 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: -102- 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: -103- 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: -104- 1.0/1.1 Bug with pfTexture()
Date: 26 Oct 93 00:00:01 EST

On RealityEngine systems, EXTERNAL format was ignored.

------------------------------

Subject: -105- 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: -106- 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: -107- 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: -108- 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: -109- 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: -110- 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: -111- 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: -112- 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: -113- 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: -114- 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: -115- 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: -116- 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: -117- 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: -118- 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: -119- 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: -120- 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: -121- 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: -122- 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: -123- 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: -124- 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: -125- 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: -126- 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: -127- 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.


------------------------------

End of sgi/faq/performer Digest
******************************
--
The SGI FAQ group <sgi...@viz.tamu.edu> http://www-viz.tamu.edu/~sgi-faq/
Finger us for info on the SGI FAQs, or look in ftp://viz.tamu.edu/pub/sgi/.

0 new messages