[comp.graphics] PEX using PHIGS

gds@atticus (Greg Schechter) (03/19/91)

In article <1991Mar17.235026.4718@dsd.es.com>, rthomson@mesa (Rich Thomson) writes:
>PEX is PHIGS/PHIGS-PLUS Extensions to X, so if they are using PEX they
>are using PHIGS (at least for output -- PEX doesn't attempt to cover
>PHIGS style input on the server side; input happens through a beast
>called the "PHIGS Monitor" which runs as a separate process that
>interacts with a PHIGS client program).
>
>So, if you are using PEX you are using PHIGS.
>

Actually, this is not true.  PEX is simply a protocol, just like X.
However, it is an extension to the core X protocol.  It simply relates
specific byte encodings to specific server actions on the part of the
PEX extended server.  It just so happens that PEX was designed
specifically to support the functionality that PHIGS and PHIGS PLUS
offer, but it is not an Application Programming Interface.

Saying PEX uses PHIGS is like saying X uses XView or the Athena
Widgets.

On the other hand, distributed implementations of PHIGS may use PEX to
achieve their distributivity.  This is particularly true if a PHIGS
implementation wants to be able to communicate with a variety of
vendors' window servers.  For example, a PHIGS implementation running
on a Sun may open PHIGS workstations on the local Sun, a remote Sun
running a PEX server, and a remote 3rd party machine running a PEX
server.

-- Greg

=============================================================================
= Greg Schechter                                  Graphics Technology Group =
= Sun Microsystems, Inc	    	    	    	    	  Mailstop MTV21-04 =
= 2550 Garcia Avenue                                      Mountain View, CA =
= gschechter@Eng.Sun.COM    	    	    	    	     (415) 336-6950 =
=============================================================================

cpetterb@es.com (Cary Petterborg) (03/19/91)

In article <10030@exodus.Eng.Sun.COM> gds@atticus (Greg Schechter) writes:

> In article <1991Mar17.235026.4718@dsd.es.com>, rthomson@mesa (Rich Thomson) writes:
> >PEX is PHIGS/PHIGS-PLUS Extensions to X, so if they are using PEX they
> >are using PHIGS (at least for output -- PEX doesn't attempt to cover
> >PHIGS style input on the server side; input happens through a beast
> >called the "PHIGS Monitor" which runs as a separate process that
> >interacts with a PHIGS client program).
> >
> >So, if you are using PEX you are using PHIGS.
> >

> Actually, this is not true.  PEX is simply a protocol, just like X.
> However, it is an extension to the core X protocol.  It simply relates
> specific byte encodings to specific server actions on the part of the
> PEX extended server.  It just so happens that PEX was designed
> specifically to support the functionality that PHIGS and PHIGS PLUS
> offer, but it is not an Application Programming Interface.

	<stuff deleted>

> -- Greg

Note what Rich says, "if you are using PEX you are using PHIGS."  He
is correct in this because currently there is no other application
interface to PEX, but PHIGS.  Using PEX (the extensions to X, not X)
implies that you are dealing with the extensions that are only available
through PHIGS, unless you are crazy enough to set up the protocol packet
yourself. (not a good idea unless you REALLY know what you are doing)

Cary
--
_______________
Cary Petterborg					   (801)582-5847 x6446
Evans & Sutherland Computer Corp.  Simulation Division   SLC, UT 84108
USENET: utah-cs!esunix!cpetterb       INTERNET: cpetterb@esunix.es.com

rthomson@mesa.dsd.es.com (Rich Thomson) (03/20/91)

In article <1991Mar17.235026.4718@dsd.es.com>, I said:
:So, if you are using PEX you are using PHIGS.

In article <10030@exodus.Eng.Sun.COM>
	gds@atticus (Greg Schechter) writes:
>Actually, this is not true.  PEX is simply a protocol, just like X.

I have had this discussion via e-mail with Spencer Thomas (who could
be considered a PEX 'guru') already.  There are several confusing
issues here:

    o PHIGS/PHIGS-PLUS
	(Usually when one says "PHIGS", they mean both PHIGS and
	PHIGS-PLUS [PLUS = ``Plus Lumiere Und Surfaces'' which gives you
	lighting and shading])  PHIGS is defined via a set of abstract
	functions and associated semantics.  The standard only
	defines these, language bindings determine the API.  Currently
	there are DIS (draft international standard) bindings for C
	and there is an approved binding for FORTRAN.  [I am recalling
	this from memory, but I believe it to be correct; if it isn't,
	I'm sure some astute news reader will correct me ;-]

    o PEX
	PEX is the PHIGS Extensions to X.  Seems to me that the very
	name implies that PEX is PHIGS.  Like most extensions to X,
	PEX has two sides: the client side and the server side.  The
	core of the extension is really the protocol as Greg points
	out, but in reality PEX means alot more to users than just the
	protocol.  It is possible to write programs using only the
	protocl definition, but this is painful at best.

	In server land, the PEX protocl is implemented via a number of
	resources that provide some basic functionality.  The document
	``PEX Introducion and Overview'', version 3.20, dated 8 June
	1989 starts as follows:

	    ``PEX (a PHIGS/PHIGS+ Extension for X) is a 3D graphic
	    extension to the X Window System(*) that efficiently
	    supports PHIGS and PHIGS+.''

	    (*) X Window System is (TM) by MIT.

	That indicates to me that no matter how you are encoding the
	protocol, you are using PHIGS.  That is to say that in the
	server, PEX implements the functionality and semantics defined
	by the PHIGS and PHIGS-PLUS standards.  Now by virtue of the
	PEX implementation, it is possible to do things not defined by
	the functionality of PHIGS.  In particular, it is possible to
	do immediate-mode style rendering if your server extension
	fully supports the PEX protocol and you have some way of
	generating these protocol packets.  In particular, the idea of
	using a ``Renderer'' (instead of a PHIGS workstation) resource
	covers this idea.  Jan Hardenbergh of Stardent has been
	working on a proposed API interface to this portion of the
	protocol (the API is collectively called PEXIM for PEX
	Immediate Mode).

	In client land, the protocol is generated by the API.  It
	doesn't matter if your API looks like the QuickDraw,
	PostScript, SGI's GL, or whatever.  The server is *still*
	going to interpret those protocol requests according to
	PHIGS/PHIGS+ functionality and semantics.  If it doesn't, then
	its not PEX, but some homebrew 3D extension to X.

Given this preliminary explanation of how I am using these terms, Greg
says:

>However, it is an extension to the core X protocol.  It simply relates
>specific byte encodings to specific server actions on the part of the
>PEX extended server.  It just so happens that PEX was designed
>specifically to support the functionality that PHIGS and PHIGS PLUS
>offer, but it is not an Application Programming Interface.

Correct.  The PEX protocol is not an API, but PEX as distributed by
the SI does include an API based on the DIS C binding for PHIGS/PHIGS-PLUS.
I think we're just quibbling about what is meant when one says "PEX".
I take it to mean both the client-side API that generates the protocol
requests and the server-side extensions that implement the requests.
So far, I've not seen a special name for the client-side portion.

    >Saying PEX uses PHIGS is like saying X uses XView or the Athena
    >Widgets.

See above.  Given that PEX implements the functionality and semantics
of PHIGS, I believe it is correct to say that PEX uses PHIGS.  Again,
it doesn't matter what API you have, the rendering is still done
according to PHIGS functionality and semantics specifications.  From
documents originating with the PEX architecture team and SI team, this
has always been clear to me.

>On the other hand, distributed implementations of PHIGS may use PEX to
>achieve their distributivity.  This is particularly true if a PHIGS
>implementation wants to be able to communicate with a variety of
>vendors' window servers.  For example, a PHIGS implementation running
>on a Sun may open PHIGS workstations on the local Sun, a remote Sun
>running a PEX server, and a remote 3rd party machine running a PEX
>server.

Again, I think you're confusing the API (language binding in ANSI
jargon) with PHIGS (the standard).

						-- Rich
-- 
  ``Read my MIPS -- no new VAXes!!'' -- George Bush after sniffing freon
	    Disclaimer: I speak for myself, except as noted.
UUCP: ...!uunet!dsd.es.com!rthomson		Rich Thomson
ARPA: rthomson@dsd.es.com			PEXt Programmer

cn09+@andrew.cmu.edu (Christopher Kalevi Nuuja) (03/21/91)

I know that the dec and sun implementations of phigs+ (not phigs) are so
different from each other that we needed to write 2 different device drivers
for an application we are working on.  Does anyone know if PEX conforms to
sun or dec phigs+ programmer interfaces, or is it also another flavor of
the non-standard?

(p.s.  Standard phigs is identical in both the sun and dec implementations,
       but without lightsources, it is useless).

gds@atticus (Greg Schechter) (03/21/91)

cpetterb@es.com (Cary Petterborg) writes:

> Note what Rich says, "if you are using PEX you are using PHIGS."  He
> is correct in this because currently there is no other application
> interface to PEX, but PHIGS.  Using PEX (the extensions to X, not X)
> implies that you are dealing with the extensions that are only available
> through PHIGS, unless you are crazy enough to set up the protocol packet
> yourself. (not a good idea unless you REALLY know what you are
> doing)

But this is only a temporary situation.  Presumably, other application
interfaces will soon be ported so as to emit the PEX protocol.
Potential candidates for this are GKS, Sun's XGL, SGI's GL, HP's
Starbase, Stardent's Dore, and most other non-pixel-based graphics
packages.

In article <1991Mar19.211031.29928@dsd.es.com>, rthomson@mesa (Rich Thomson) writes:

>    o PEX
>	PEX is the PHIGS Extensions to X.  Seems to me that the very
>	name implies that PEX is PHIGS.  Like most extensions to X,
>	PEX has two sides: the client side and the server side.  The
>	core of the extension is really the protocol as Greg points
>	out, but in reality PEX means alot more to users than just the
>	protocol.  It is possible to write programs using only the
>	protocl definition, but this is painful at best.
>
>	In server land, the PEX protocl is implemented via a number of
>	resources that provide some basic functionality.  The document
>	``PEX Introducion and Overview'', version 3.20, dated 8 June
>	1989 starts as follows:
>
>	    ``PEX (a PHIGS/PHIGS+ Extension for X) is a 3D graphic
>	    extension to the X Window System(*) that efficiently
>	    supports PHIGS and PHIGS+.''
>
>	    (*) X Window System is (TM) by MIT.
>
>	That indicates to me that no matter how you are encoding the
>	protocol, you are using PHIGS.

To me, this indicates that if you're using PEX, you're using a
protocol that was designed to efficiently support PHIGS, but not that
you're using PHIGS itself.

>       That is to say that in the
>	server, PEX implements the functionality and semantics defined
>	by the PHIGS and PHIGS-PLUS standards.

There are many things in PHIGS and PHIGS PLUS which cannot be done via
PEX.  Some of these are input (PHIGS has a very rich input model, PEX
has non), archiving (PEX knows nothing about archiving), and the PHIGS
PLUS color mapping semantics (the semantics of the PEX color mapping
is quite different).

I guess the problem that I have with the statement "If you're using PEX, 
you're using PHIGS" is that it suggests that if I've got a machine with a 
PEX server on it, I somehow have access to PHIGS.  This is just not true.
You need to have a PHIGS library which implements these other things that 
PEX does not provide, and which also provides a language binding for the
features that the server has built in to it.

>>On the other hand, distributed implementations of PHIGS may use PEX to
>>achieve their distributivity.  This is particularly true if a PHIGS
>>implementation wants to be able to communicate with a variety of
>>vendors' window servers.  For example, a PHIGS implementation running
>>on a Sun may open PHIGS workstations on the local Sun, a remote Sun
>>running a PEX server, and a remote 3rd party machine running a PEX
>>server.

>Again, I think you're confusing the API (language binding in ANSI
>jargon) with PHIGS (the standard).

How so?


--- Greg

=============================================================================
= Greg Schechter                                  Graphics Technology Group =
= Sun Microsystems, Inc	    	    	    	    	  Mailstop MTV21-04 =
= 2550 Garcia Avenue                                      Mountain View, CA =
= gschechter@Eng.Sun.COM    	    	    	    	     (415) 336-6950 =
=============================================================================

pmartz@undies.dsd.es.com (Paul Martz) (03/22/91)

In article <IbtvaM200WB6Q8_nZI@andrew.cmu.edu>, cn09+@andrew.cmu.edu (Christopher Kalevi Nuuja) writes:
> I know that the dec and sun implementations of phigs+ (not phigs) are so
> different from each other that we needed to write 2 different device drivers
> for an application we are working on.  Does anyone know if PEX conforms to
> sun or dec phigs+ programmer interfaces, or is it also another flavor of
> the non-standard?
> 
> (p.s.  Standard phigs is identical in both the sun and dec implementations,
>        but without lightsources, it is useless).

Well, the language binding over PEX could be either. But I think what
you're asking is, "what's the PEX-SI language binding for phigs+ going
to look like?" Well, it looks like the latest DIS C language binding.
("pset_line_color", for example, is the binding for the SET POLYLINE
COLOUR function.)  This is different from the last version of SunPhigs
I saw, and I've never seen DecPhigs, so I don't know what version of
the binding they currently use. The latest DIS that the PEX-SI is
using (and will be shipped with X11R5) is dated 24 November 1990.

Hopefully this will be standardized soon. It's killing those of us
with products based on it, and it's driving customers and users crazy.
-- 

   -paul	pmartz@dsd.es.com
		Evans & Sutherland