[comp.sys.sgi] feedback

seth@miro.Berkeley.EDU (Seth Teller) (12/12/90)

does anyone know if the size of the gl feedback buffer, as passed by
the caller of feedback(), is limited (and if so, why and to what value
it is limited)?  i'm seeing the errors

ERROR #103  feedback: ERR_FEEDBUFTOOBIG
ERROR #17  endfeedback: ERR_NOTINPICK

with a 128k buffer (size = 64k shorts).  i suppose the second 
line is really ERR_NOTINFEEDBACK, but the name assumes people 
doing feedback are doing picking (i'm not).  [i did try R'ing TFM,
but didn't find anything useful.]

second question: are the ERR_* tokens and their meanings described
anywhere?

thanks,

seth

Dan Karron@UCBVAX.BERKELEY.EDU (12/15/90)

My understanding from TFM and sgi is that they don't want people using the
feedback buffer. I had major problems migrating from 2400, 3000 class machines
to the risc machine because I used the geometry pipeline to overcome
cpu bottlenecks. I would now use another cpu thread before I would use
the pipeline. Besides, you have to wait for the answer from the
pipeline, and that ruins any parallelism you might get from the pipeline.

If you are doing picking and pruning, what we need is a "parallel non screen"
geometry pipeline. What I mean is a process running on another threaded cpu
to do the same geometry operations on your data stream (matrix xformation and
picking/pruning). The output would not go to the video processor, but would
return values about visibility. This would be really nice for robotics app's
where you need to know if there is a line of sight between two points
on arbitrary shapes in arbitrary orientations. Eventually, we will need
one cpu for each point to scan w/r/t the rest of the domain of points.

Cheers!

+-----------------------------------------------------------------------------+
| karron@nyu.edu (E-mail alias that will always find me)                      |
| Fax: 212 340 7190           *           Dan Karron, Research Associate      |
| . . . . . . . . . . . . . . *           New York University Medical Center  |
| 560 First Avenue           \*\    Pager <1> (212) 397 9330                  |
| New York, New York 10016    \**\        <2> 10896   <3> <your-number-here>  |
| (212) 340 5210               \***\_________________________________________ |
| Main machine: karron.med.nyu.edu (128.122.135.3) IRIS 85GT                  |
+-----------------------------------------------------------------------------+

seth@miro.Berkeley.EDU (Seth Teller) (12/17/90)

In article <9012151528.AA06259@karron.med.nyu.edu> karron@cmcl2.nyu.edu writes:
>My understanding from TFM and sgi is that they don't want people using the
>feedback buffer.... [Y]ou have to wait for the answer from the 
>pipeline, and that ruins any parallelism you might get from the pipeline.

>Cheers! [guess who this msg was from-- ed.]

i'm not sure what it means for sgi not to 'want' us to do something...
does that mean we shouldn't do it?

as for using feedback, i'm using it precisely because it's the ONLY 
way to get what i need (a description of the graphics that appear 
in my window, in screen coords), short of emulating the entire pipe
in (my own) software.

the context is that, with feedback, it's easy to write a package
that transforms gl program output into stuff suitable for page
description languages like postscript.  yes, gl() is a pdl too;
but it's got to be filtered by addition of viewpoint, lighting, 
clipping, etc.  to be worth anything statically.

so, can anyone answer my original questions?  what are the size
limitations on feedback?  why is the buffer size limited?  can this
be gotten around?  for example, if i'm drawing a NURBS surface and
want all the polygons back, how can i avoid overflowing the buffer?
[splitting the surface into subregions and drawing them separately
won't work for me, due to technical reasons that i can't go into here.]

seth

" ratcliffe) (12/18/90)

In article <9676@pasteur.Berkeley.EDU> seth@miro.Berkeley.EDU (Seth Teller) writes:
>does anyone know if the size of the gl feedback buffer, as passed by
>the caller of feedback(), is limited (and if so, why and to what value
>it is limited)?  i'm seeing the errors
not sure about this--hopefully one of the GL godz will resp...

>
>ERROR #103  feedback: ERR_FEEDBUFTOOBIG
>ERROR #17  endfeedback: ERR_NOTINPICK
17 ERR_NOTINPICK: string = "ERR_NOTINPICK"
   -program not in pick mode when trying to endfeedback or endpickorselect mode 

>
>with a 128k buffer (size = 64k shorts).  i suppose the second 
>line is really ERR_NOTINFEEDBACK, but the name assumes people 
>doing feedback are doing picking (i'm not).  [i did try R'ing TFM,
>but didn't find anything useful.]
unfortunately not--TFM is still somewhat lobotomized.....

>second question: are the ERR_* tokens and their meanings described
>anywhere?
they were published in the March/April 1990 Issue of the "Pipeline", put out
by Customer Support  Division (CSD).  ALL CUSTOMERS WITH SUPPORT CONTRACTS
ARE SUPPOSED TO BE ON THE SUBSCRIPTION LIST FOR THIS DOCUMENT.  If yer
not getting it, but wud like to, try e-mailing "pipeline@csd.sgi.com",
or writing to 
                      Silicon Graphics, Inc.
                      M/S 12L-190
                      2011 N. Shoreline Blvd.
                      Mountain View, CA  94039
                      Attn:  Peter Lonsky

The following is a copy of that list.  Unfortunately, the list taps out at
# 99....  (it was created more than 2 years ago by that famed magician and
con man, Miq Millman, and of course the GL just keeps growin' on...)
so basically yer just a leetle too inquisitive seth--i think we're gonna 
have to send the brain police out after you and try to plug up this 
annoying "leak" in the fabric of the "facade"....


------------- FROM the March/April CSD Pipeline Newsletter ------------------

                    GRAPHICS LIBRARY ERROR MESSAGES

This is a canonical list of the error messages used in the graphics library.  
The list was compiled by taking the list of errors from the file error.h in 
/usr/include/gl and then searching through the source tree for locations of
each error message.  Then, by looking at the code, it was determined what 
the error messages *really* meant.  The errors are listed according to the 
numerical value they were given in the file errors.h.  



1  ERR_SINGMATRIX: string = "ERR_SINGMATRIX"
   -the matrix given cannot be inverted.  Usually done by scaling a zero value.
    (setting near and far planes to 0)
2  ERR_OUTMEM: string = "ERR_OUTMEM"
   -ran out of memory, malloc failed.
3  ERR_NEGSIDES: string = "ERR_NEGSIDES"
   -program tried to generate a polygon with less than zero sides (ie. negative)
4  ERR_BADWINDOW: string = "ERR_BADWINDOW"
   -probably the values for {left-right|top-bottom|far-near} were switched.
    left, top and far must be greater than right bottom and near values.
5  ERR_NOOPENOBJ: string = "ERR_NOOPENOBJ"
   -program tried to edit an object when there wasn't any object to edit.
6  ERR_NOFONTRAM: string = "ERR_NOFONTRAM"
   _OBSOLETE_
7  ERR_FOV: string = "ERR_FOV"
   -fovy must be greater than 1.0 and less than or equal to 1800.  (note: the 
    fovy should be ten times the angle than is the result of the tangent of the
    window width and the distance from viewer to screen for best results. (ie.
    fovy for a full screen seen 2 feet away should be about 337 (inverse tan of 
    16/24))
8  ERR_BASISID: string = "ERR_BASISID"
   -the pointers to the matricies being for precision or curve type {bspline|
    cardinal|bezier} being used are not equivalent or the pointer is null.
    Also, possibly one of the basis id's was not found.  using undefined basis
    number.
9  ERR_NEGINDEX: string = "ERR_NEGINDEX"
   _OBSOLETE_
10 ERR_NOCLIPPERS: string = "ERR_NOCLIPPERS"
   _OBSOLETE_
11 ERR_STRINGBUG: string = "ERR_STRINGBUG"
   _OBSOLETE_
12 ERR_NOCURVBASIS: string = "ERR_NOCURVBASIS"
   -basis for the curve must be set before drawing the curve
13 ERR_BADCURVID: string = "ERR_BADCURVID"
   _OBSOLETE_
14 ERR_NOPTCHBASIS: string = "ERR_NOPTCHBASIS"
   -basis for the patch must be set before drawing the patch
15 ERR_FEEDPICK: string = "ERR_FEEDPICK"
   _OBSOLETE_
16 ERR_INPICK: string = "ERR_INPICK"
   -program already picking, can't try to pick twice at same time
17 ERR_NOTINPICK: string = "ERR_NOTINPICK"
   -program not in pick mode when trying to endfeedback or endpickorselect mode 
18 ERR_ZEROPICK: string = "ERR_ZEROPICK"
   -the size of the picking region is non-positive
19 ERR_FONTBUG: string = "ERR_FONTBUG"
   _OBSOLETE_
20 ERR_INRGB: string = "ERR_INRGB"
   -program tried to set mapcolor or writemask while in RGBmode
21 ERR_NOTINRGBMODE: string = "ERR_NOTINRGBMODE"
   -program tried to use a RGBmode routine while not in RGBmode
22 ERR_BADINDEX: string = "ERR_BADINDEX"
   -color is not within valid index range 
23 ERR_BADVALUATOR: string = "ERR_BADVALUATOR"
   -program tried to use a non-existing valuator
24 ERR_BADBUTTON: string = "ERR_BADBUTTON"
   -program tried to access an illegal button number.
25 ERR_NOTINDBMODE: string = "ERR_NOTINDBMODE"
   -program should be in dial button box mode to call current procedure
26 ERR_BADINDEXBUG: string = "ERR_BADINDEXBUG"
   _OBSOLETE_  ???
27 ERR_ZEROVIEWPORT: string = "ERR_ZEROVIEWPORT"
   -The values for {x1|y1} are larger than {x2|y2} in the definition of 
    screencoords.  Thus, the size of the viewport is too small.
28 ERR_DIALBUG: string = "ERR_DIALBUG"
   _NEVER HAPPEN_ 
29 ERR_MOUSEBUG: string = "ERR_MOUSEBUG"
   _NEVER HAPPEN_ 
30 ERR_RETRACEBUG: string = "ERR_RETRACEBUG"
   _NEVER HAPPEN_ 
31 ERR_MAXRETRACE: string = "ERR_MAXRETRACE"
   -program tried to execute more than the maximum number of retrace events
    allowed.
32 ERR_NOSUCHTAG: string = "ERR_NOSUCHTAG"
   -the tag chosen is not in the hash table or at the beginnning of the object
    set up.  It cannot be found.
33 ERR_DELBUG: string = "ERR_DELBUG"
   _OBSOLETE_
34 ERR_DELTAG: string = "ERR_DELTAG"
   -program tried to delete a nonexistent or incorrect tag
35 ERR_NEGTAG: string = "ERR_NEGTAG"
   -object tag is less than zero.
36 ERR_TAGEXISTS: string = "ERR_TAGEXISTS"
   -program tried to create an object with an index number that already exists 
37 ERR_OFFTOOBIG: string = "ERR_OFFTOOBIG"
   -offset is too large, program tried tostep beyond edge of object
38 ERR_ILLEGALID: string = "ERR_ILLEGALID"
   -program tried to make an object with an id that is negative
39 ERR_GECONVERT: string = "ERR_GECONVERT"
   _OBSOLETE_
40 ERR_BADAXIS: string = "ERR_BADAXIS"
   -Axis must be named with {x|X|y|Y|z|Z} anything else will give this error
42 ERR_BADDEVICE: string = "ERR_BADDEVICE"
   -the graphics manager couldn't be reached.  This is a fatal error.
44 ERR_PATCURVES: string = "ERR_PATCURVES"
   _OBSOLETE_
45 ERR_PATPREC: string = "ERR_PATPREC"
   _OBSOLETE_
46 ERR_CURVPREC: string = "ERR_CURVPREC"
   _OBSOLETE_
47 ERR_PUSHATTR: string = "ERR_PUSHATTR"
   -the attribute stack is full, pop or clear attribute stack first.
    check for unbalanced code.
48 ERR_POPATTR: string = "ERR_POPATTR"
   -the attribute stack is empty, something must be put there first.
    check for unbalanced code.
49 ERR_PUSHMATRIX: string = "ERR_PUSHMATRIX"
   -the matrix stack is full.  Clear or pop first.
    check for unbalanced code.
50 ERR_POPMATRIX: string = "ERR_POPMATRIX"
   -the matrix stack is empty, something must be put there first.
    check for unbalanced code.
51 ERR_PUSHVIEWPORT: string = "ERR_PUSHVIEWPORT"
   -the viewport stack is full, pop or clear viewport stack first.
    check for unbalanced code.
52 ERR_POPVIEWPORT: string = "ERR_POPVIEWPORT"
   -the viewport stack is empty, something must be put there first.
    check for unbalanced code.
53 ERR_SIZEFIXED: string = "ERR_SIZEFIXED"
   -object size is frozen, chunksize cannot change after start of object def
54 ERR_SETMONITOR: string = "ERR_SETMONITOR"
   _OBSOLETE_  {illegal monitor type?}
55 ERR_CHANGEINDEX0: string = "ERR_CHANGEINDEX0"
   -program was trying to redefine the default style of {line|cursor|font|etc},
    change index 0 to some other value.
56 ERR_BADPATTERN: string = "ERR_BADPATTERN"
   -bad size of pattern, only use 16, 32 or 64
57 ERR_CURSORNOTFOUND: string = "ERR_CURSORNOTFOUND"
   -An invalid cursor name was given, check and change value.
58 ERR_FONTHOLES: string = "ERR_FONTHOLES"
   _OBSOLETE_
59 ERR_REPLACE: string = "ERR_REPLACE"
   -program tried to replace past end of object.  
60 ERR_STARTFEED: string = "ERR_STARTFEED"
   _OBSOLETE_
61 ERR_CYCLEMAP: string = "ERR_CYCLEMAP"
   _OBSOLETE_
62 ERR_TAGINREPLACE: string = "ERR_TAGINREPLACE"
   -program tried to make a tag in replace mode. only replace graphics cmds
63 ERR_TOOFEWPTS: string = "ERR_TOOFEWPTS"
   -the program tried to create a rational curve with less than 4 points.
64 ERR_UNDEFINEDCHAR: string = "ERR_UNDEFINEDCHAR"
   _OBSOLETE_
65 ERR_BADCURSOR: string = "ERR_BADCURSOR"
   -bad size, only use 16, or 32 or default cursor types
66 ERR_NOTINCOLORMODE: string = "ERR_NOTINCOLORMODE"
   -To use getcursor, program must be in proper mode.  
   _OBSOLETE_
67 ERR_UNKNOWNCMDLENGTH: string = "ERR_UNKNOWNCMDLENGTH"
   -routine fell through the case statement for checking size of number of 
    polygon points.  New command must be same length as the old command.
68 ERR_INFEEDBACK: string = "ERR_INFEEDBACK"
   -program trying to enter feedback when in feedback mode.
69 ERR_DURINGFEEDBACK: string = "ERR_DURINGFEEDBACK"
   -program trying to exit feedback when not in feedback. 
70 ERR_DURINGSELECT: string = "ERR_DURINGSELECT"
   -system failure occurred in endpick
71 ERR_ARGMISMATCH: string = "ERR_ARGMISMATCH"
   -buffer specified in endfeedback, endpickorselect, must be same as buffer
    started with
72 ERR_TOOMANYARGS: string = "ERR_TOOMANYARGS"
   -program tried to use more than ten arguments in a function call.  This is
    a system error.
73 ERR_OBJNOTFOUND: string = "ERR_OBJNOTFOUND"
   -there is no header or no valid header in the object the program called.
    object was invalid.
74 ERR_MAKEROOMINREPLACEMODE: string = "ERR_MAKEROOMINREPLACEMODE"
   -program tried to reorganize display list entries while in replace mode.
    This is a system error.
75 ERR_UNABLETOOPEN: string = "ERR_UNABLETOOPEN"
   -The gid value given to the hardware is invalid or less than 0.  
76 ERR_QUEUINGDEVICE: string = "ERR_QUEUINGDEVICE"
   _Not implimented in the graphics library as an error message_
   -program tried to queue a nonexisting device
77 ERR_UNQUEUINGDEVICE: string = "ERR_UNQUEUINGDEVICE"
   _Not implimented in the graphics library as an error message_
   -program tried to unqueue a nonexisting device
78 ERR_GETBUTTONERROR: string = "ERR_GETBUTTONERROR"
   _Not implimented in the graphics library as an error message_
   -program tried to get a nonexisting button value
79 ERR_GETVALUATORERROR: string = "ERR_GETVALUATORERROR"
   _Not implimented in the graphics library as an error message_
   -program tried to get an invalid valuator
80 ERR_SETVALERROR: string = "ERR_SETVALERROR"
   _Not implimented in the graphics library as an error message_
   -program tried to set an invalid valuator
81 ERR_TIEERROR: string = "ERR_TIEERROR"
   _Not implimented in the graphics library as an error message_
   -program tried to tie a nonvalid device id
82 ERR_NOISEERROR: string = "ERR_NOISEERROR"
   _Not implimented in the graphics library as an error message_
83 ERR_ATTACHCURSOR: string = "ERR_ATTACHCURSOR"
   _Not implimented in the graphics library as an error message_
84 ERR_MAPDEVICE: string = "ERR_MAPDEVICE"
   _Not implimented in the graphics library as an error message_
85 ERR_WINATTACH: string = "ERR_WINATTACH"
   _Not implimented in the graphics library as an error message_
   _OBSOLETE_
86 ERR_NOSUCHWINDOW: string = "ERR_NOSUCHWINDOW"
   -program tried to switch to or close an invalid window.
87 ERR_CLOSEDLASTWINDOW: string = "ERR_CLOSEDLASTWINDOW"
   _Not implimented in the graphics library as an error message_
88 ERR_LINESTYLENOTFOUND: string = "ERR_LINESTYLENOTFOUND"
   _Not implimented in the graphics library as an error message_
89 ERR_PATTERNNOTFOUND: string = "ERR_PATTERNNOTFOUND"
   _Not implimented in the graphics library as an error message_
90 ERR_NULLWSINCLONING: string = "ERR_NULLWSINCLONING"
   _Not implimented in the graphics library as an error message_
91 ERR_USERERROR: string = "ERR_USERERROR"
   -general error message, used for anything that won't fit in other messages
92 ERR_NOFONTFOUND: string = "ERR_NOFONTFOUND"
   -the name of the font given was not found, check the list in /usr/lib/fmfonts
93 ERR_WMANIPC: string = "ERR_WMANIPC"
   -message being sent to the window manager was too large.
94 ERR_INPUTOPEN: string = "ERR_INPUTOPEN"
   _Not implimented in the graphics library as an error message_
95 ERR_RESETINGQ: string = "ERR_RESETINGQ"
   _Not implimented in the graphics library as an error message_
   -program tried to reset a nonvalid queue id
96 ERR_GETTP: string = "ERR_GETTP"
   -program tried to access an invalid textport id
97 ERR_TOOMANYSIDES: string = "ERR_TOOMANYSIDES"
   -program tried to create a polygon with more than 255 verticies.
98 ERR_INVALIDMODE: string = "ERR_INVALIDMODE"
   _Not implimented in the graphics library as an error message_
   _NEVER SEEN_
   -program tried to enter an invalid mode
99 ERR_INVALIDPARENT: string = "ERR_INVALIDPARENT"
   -there is no parent state for current window.

--
                                             daveus rattus   

                                   yer friendly neighborhood ratman

                              KOYAANISQATSI

   ko.yan.nis.qatsi (from the Hopi Language)  n.  1. crazy life.  2. life
       in turmoil.  3. life out of balance.  4. life disintegrating.  
         5. a state of life that calls for another way of living.
--
--
                                             daveus rattus   

                                   yer friendly neighborhood ratman