PHIGS ( Programmer's Hierarchical Interactive Graphics System ) is an application programming interface (API) standard for rendering 3D computer graphics , considered to be the 3D graphics standard for the 1980s through the early 1990s. Subsequently, a combination of features and power led to the rise of OpenGL , which became the most popular professional 3D API of the mid to late 1990s.
65-463: Large vendors typically offered versions of PHIGS for their platforms, including DEC PHIGS, IBM's graPHIGS and Sun's SunPHIGS. It could also be used within the X Window System , supported via PEX . PEX consisted of an extension to X, adding commands that would be forwarded from the X server to the PEX system for rendering. Workstations were placed in windows typically, but could also be forwarded to take over
130-423: A user interface . Each currently running application is assigned a usually resizable and usually rectangular surface of the display to present its GUI to the user; these windows may overlap each other, as opposed to a tiling interface where they are not allowed to overlap. Usually a window decoration is drawn around each window. The programming of both the window decoration and of available widgets inside of
195-479: A client of the display server. The display server and its clients communicate with each other over an application programming interface (API) or a communications protocol , which is usually called display server protocol, the display server being the mediator between the clients and the user. It receives all the input from the kernel , that the kernel receives from all attached input devices , such as keyboard , pointing devices , or touchscreen and transmits it to
260-476: A computer somewhere on a network (such as the Internet) can display its user interface on an X server running on some other computer on the network. The X server is typically the provider of graphics resources and keyboard/mouse events to X clients , meaning that the X server is usually running on the computer in front of a human user, while the X client applications run anywhere on the network and communicate with
325-508: A desktop environment, which, aside from the window manager, includes various applications using a consistent user interface. Popular desktop environments include GNOME , KDE Plasma and Xfce . The UNIX 98 standard environment is the Common Desktop Environment (CDE). The freedesktop.org initiative addresses interoperability between desktops and the components needed for a competitive X desktop. The X.Org implementation
390-400: A display server provides the services of a display and input devices. One example of a display server is the X.Org Server , which runs on top of the kernel (usually a Unix -like kernel, such as Linux or BSD ). It receives user input data (e.g. from evdev on Linux) and passes it to one of its clients. The display server also receives data from its clients; it processes the data, it does
455-741: A functional form of the "network transparency" feature of X, via network transmissibility of graphical services, include: Several bitmap display systems preceded X. From Xerox came the Alto (1973) and the Star (1981). From Apollo Computer came Display Manager (1981). From Apple came the Lisa (1983) and the Macintosh (1984). The Unix world had the Andrew Project (1982) and Rob Pike 's Blit terminal (1982). Carnegie Mellon University produced
520-473: A native windowing system hosts X in addition, the X system can either use its own normal desktop in a separate host window or it can run rootless , meaning the X desktop is hidden and the host windowing environment manages the geometry and appearance of the hosted X windows within the host screen. An X terminal is a thin client that only runs an X server. This architecture became popular for building inexpensive terminal parks for many users to simultaneously use
585-613: A network protocol supporting terminal and graphics windows, the server maintaining display lists. The email in which X was introduced to the Project Athena community at MIT in June 1984 The original idea of X emerged at MIT in 1984 as a collaboration between Jim Gettys (of Project Athena ) and Bob Scheifler (of the MIT Laboratory for Computer Science ). Scheifler needed a usable display environment for debugging
650-419: A port of X to 386-compatible PCs and, by the end of the 1990s, had become the greatest source of technical innovation in X and the de facto standard of X development. Since 2004, however, the X.Org Server, a fork of XFree86, has become predominant. While it is common to associate X with Unix, X servers also exist natively within other graphical environments. VMS Software Inc.'s OpenVMS operating system includes
715-730: A protocol that could both run local applications and call on remote resources. In mid-1983 an initial port of W to Unix ran at one-fifth of its speed under V; in May 1984, Scheifler replaced the synchronous protocol of W with an asynchronous protocol and the display lists with immediate mode graphics to make X version 1. X became the first windowing system environment to offer true hardware independence and vendor independence. Scheifler, Gettys and Ron Newman set to work and X progressed rapidly. They released Version 6 in January 1985. DEC, then preparing to release its first Ultrix workstation, judged X
SECTION 10
#1732782934279780-784: A remote machine, the user may do the following: The remote X client application will then make a connection to the user's local X server, providing display and input to the user. Alternatively, the local machine may run a small program that connects to the remote machine and starts the client application. Practical examples of remote clients include: X primarily defines protocol and graphics primitives – it deliberately contains no specification for application user-interface design, such as button, menu, or window title-bar styles. Instead, application software – such as window managers, GUI widget toolkits and desktop environments, or application-specific graphical user interfaces – define and provide such details. As
845-544: A remote-access application called Alto Terminal, that displayed overlapping windows on the Xerox Alto, and made remote hosts (typically DEC VAX systems running Unix) responsible for handling window-exposure events and refreshing window contents as necessary. X derives its name as a successor to a pre-1983 window system called W (the letter preceding X in the English alphabet ). W ran under the V operating system . W used
910-567: A result, there is no typical X interface and several different desktop environments have become popular among users. A window manager controls the placement and appearance of application windows. This may result in desktop interfaces reminiscent of those of Microsoft Windows or of the Apple Macintosh (examples include GNOME 2, KDE Plasma, Xfce) or have radically different controls (such as a tiling window manager, like wmii or Ratpoison ). Some interfaces such as Sugar or ChromeOS eschew
975-437: A slightly tongue-in-cheek acronym for "Plus Lumière Und Surfaces" (the two major areas of advancement over the base PHIGS standard). OpenGL , unlike PHIGS, was an immediate-mode rendering system with no "state"; once an object is sent to a view to be rendered it essentially disappears. Changes to the model had to be re-sent into the system and re-rendered, a dramatically different programming mindset. For simple projects, PHIGS
1040-457: A specification for client interoperability, has a reputation for being difficult to implement correctly. Further standards efforts such as Motif and CDE did not alleviate problems. This has frustrated users and programmers. Graphics programmers now generally address consistency of application look and feel and communication by coding to a specific desktop environment or to a specific widget toolkit, which also avoids having to deal directly with
1105-473: A version of X with Common Desktop Environment (CDE), known as DECwindows, as its standard desktop environment. Apple originally ported X to macOS in the form of X11.app, but that has been deprecated in favor of the XQuartz implementation. Third-party servers under Apple's older operating systems in the 1990s, System 7, and Mac OS 8 and 9, included Apple's MacX and White Pine Software's eXodus. Microsoft Windows
1170-414: Is a complete, albeit simple, display and interface solution which delivers a standard toolkit and protocol stack for building graphical user interfaces on most Unix-like operating systems and OpenVMS , and has been ported to many other contemporary general purpose operating systems . X provides the basic framework , or primitives, for building such GUI environments: drawing and moving windows on
1235-487: Is a display server, but in its current implementation it relies on a second program, the compositing window manager , to do the compositing. Examples are Mutter or KWin . Notable examples of display servers implementing the X11 display server protocol are X.Org Server , XFree86 , XQuartz and Cygwin/X , while client libraries implementing the X11 display server protocol are Xlib and XCB . Display servers that implement
1300-399: Is a key component in any graphical user interface , specifically the windowing system. The server/client relationship of a standalone display server is somewhat counterintuitive in that a "server" is usually thought of as a large, remote machine, whereas a standalone "display server" is a small local system, with most clients being executed on a larger central machine. The explanation is that
1365-432: Is device-specific and usually done by the display hardware OEM. For Apple's macOS family of operating systems, Quartz Compositor fulfils the tasks of a display server and of a window manager in the windowing system. For Microsoft Windows , from Windows Vista onward, Desktop Window Manager enables the use of hardware acceleration to render the graphical user interface. It was originally created to enable portions of
SECTION 20
#17327829342791430-436: Is generally a rectangular area of the screen. From a programmer 's point of view, a windowing system implements graphical primitives. For example: rendering fonts or drawing a line on the screen. It provides an abstraction of the graphics hardware for use by higher-level elements of the graphical interface such as a window manager. A display server protocol can be network capable or even network transparent , facilitating
1495-407: Is generally not possible. However, approaches like Virtual Network Computing (VNC), NX and Xpra allow a virtual session to be reached from different X servers (in a manner similar to GNU Screen in relation to terminals), and other applications and toolkits provide related facilities. Workarounds like x11vnc ( VNC :0 viewers ), Xpra's shadow mode and NX's nxagent shadow mode also exist to make
1560-475: Is no accessibility standard or accessibility guidelines for X11. Within the X11 standards process there is no working group on accessibility; however, accessibility needs are being addressed by software projects to provide these features on top of X. The Orca project adds accessibility support to the X Window System, including implementing an API ( AT-SPI ). This is coupled with GNOME's ATK to allow for accessibility features to be implemented in X programs using
1625-492: Is not shipped with support for X, but many third-party implementations exist, as free and open source software such as Cygwin/X , and proprietary products such as Exceed, MKS X/Server, Reflection X, X-Win32 and Xming . There are also Java implementations of X servers. WeirdX runs on any platform supporting Swing 1.1, and will run as an applet within most browsers. The Android X Server is an open source Java implementation that runs on Android devices. When an operating system with
1690-478: Is rendered to a "surface"; "surfaces" are produced by applications and placed into a queue that is managed by SurfaceFlinger. Yet another Android-specific solution is "Gralloc". Gralloc handles device memory i.e. it does allocation, arbitration, it handles synchronization via Android/Linux fence file descriptors. Gralloc competes with other solutions like e.g. Mesa's Generic Buffer Management (GBM) or Nvidia's EGLStreams. The Gralloc hardware abstraction layer (HAL)
1755-419: Is that they are not capable of any input or output other than the keyboard, mouse, and display. All relevant data is assumed to exist solely on the remote server, and the X terminal user has no methods available to save or load data from a local peripheral device. Dedicated (hardware) X terminals have fallen out of use; a PC or modern thin client with an X server typically provides the same functionality at
1820-414: Is the canonical implementation of X. Owing to liberal licensing, a number of variations, both free and open source and proprietary, have appeared. Commercial Unix vendors have tended to take the reference implementation and adapt it for their hardware, usually customizing it and adding proprietary extensions. Until 2004, XFree86 provided the most common X variant on free Unix-like systems. XFree86 started as
1885-462: Is used to allocate the buffers that underlie "surfaces". For compositing in Android, Surfaces are sent to SurfaceFlinger, which uses OpenGL ES to do the compositing. Hardware Composer HAL (HWC) was introduced in Android 3.0 and has evolved steadily over the years. Its primary purpose is to determine the most efficient way to composite buffers with the available hardware. As a HAL, its implementation
1950-576: The display and interacting with a mouse, keyboard or touchscreen. X does not mandate the user interface ; individual client programs handle this. Programs may use X's graphical abilities with no user interface. As such, the visual styling of X-based environments varies greatly; different programs may present radically different interfaces. Unlike most earlier display protocols, X was specifically designed to be used over network connections rather than on an integral or attached display device. X features network transparency , which means an X program running on
2015-573: The Argus system. Project Athena (a joint project between DEC , MIT and IBM to provide easy access to computing resources for all students) needed a platform-independent graphics system to link together its heterogeneous multiple-vendor systems; the window system then under development in Carnegie Mellon University 's Andrew Project did not make licenses available, and no alternatives existed. The project solved this by creating
PHIGS - Misplaced Pages Continue
2080-549: The GNOME/GTK APIs. KDE provides a different set of accessibility software, including a text-to-speech converter and a screen magnifier. The other major desktops (LXDE, Xfce and Enlightenment) attempt to be compatible with ATK. An X client cannot generally be detached from one server and reattached to another unless its code specifically provides for it ( Emacs is one of the few common programs with this ability). As such, moving an entire session from one X server to another
2145-702: The ICCCM. X also lacks native support for user-defined stored procedures on the X server, in the manner of NeWS – there is no Turing-complete scripting facility. Various desktop environments may thus offer their own (usually mutually incompatible) facilities. Systems built upon X may have accessibility issues that make utilization of a computer difficult for disabled users, including right click , double click , middle click , mouse-over , and focus stealing . Some X11 clients deal with accessibility issues better than others, so persons with accessibility problems are not locked out of using X11. However, there
2210-560: The Wayland display server protocol are called Wayland compositors . Like any display server, a Wayland compositor is responsible for handling input and output for its clients and, in contrast to X11, the compositing as well. Examples are Weston , Mutter , KWin or Enlightenment . Wayland compositors communicate with Wayland clients over the Wayland display server protocol . This protocol defines that clients can directly write data into
2275-502: The X project, with the current reference implementation, X.Org Server , available as free and open-source software under the MIT License and similar permissive licenses. X is an architecture-independent system for remote graphical user interfaces and input device capabilities. Each person using a networked terminal has the ability to interact with the display with any type of user input device. In its standard distribution it
2340-578: The X server by a remote X client program, and each then rendered by sending a single glCallList(which) across the network. X provides no native support for audio; several projects exist to fill this niche, some also providing transparent network support. X uses a client–server model: an X server communicates with various client programs. The server accepts requests for graphical output (windows) and sends back user input (from keyboard, mouse, or touchscreen). The server may function as: This client–server terminology – the user's terminal being
2405-546: The X11 protocol. It was developed by Canonical and was intended to be the display server of choice for Ubuntu . As of 2017, it has been replaced with the Wayland display server for desktop editions of Ubuntu. There are implementations of the Mir display server, the libmir-server and the libmir-client libraries available under the GPLv3 . Google developed a display server called SurfaceFlinger for Android : Everything in Android
2470-453: The bandwidth of a 100 Mbit/s network for a single client. In contrast, modern versions of X generally have extensions such as Mesa allowing local display of a local program's graphics to be optimized to bypass the network model and directly control the video card, for use of full-screen video, rendered 3D applications, and other such applications. X's design requires the clients and server to operate separately, and device independence and
2535-429: The basic Gouraud , "Dot", and Phong shading for rendering scenes. Although PHIGS ultimately expanded to contain advanced functions (including the more accurate Phong lighting model and Data Mapping), other features considered standard by the mid-1990s were not supported (notably texture mapping ), nor were many machines of the era physically capable of optimizing it to perform in real time. The word "hierarchical" in
2600-552: The client and server may run on the same machine or on different ones, possibly with different architectures and operating systems. A client and server can even communicate securely over the Internet by tunneling the connection over an encrypted network session. An X client itself may emulate an X server by providing display services to other clients. This is known as "X nesting". Open-source clients such as Xnest and Xephyr support such X nesting. To run an X client application on
2665-472: The compositing and on Linux it passes the data to one of three kernel components – DRM , gem or KMS driver . The component writes the data into the framebuffer and content of the framebuffer is transmitted to the connected screen and displayed. X relies on GLX . One of the implementations of display server concept is X Window System , in particular its actually used version – X.Org Server and Xlib and XCB client libraries. The X.Org Server
PHIGS - Misplaced Pages Continue
2730-461: The correct client. The display server is also responsible for the output of the clients to the computer monitor . The output of sound is usually not managed by the display server, but the sound volume is usually handled through GUI applets and it is the display server who decides which applications are on top. A windowing system enables the computer user to work with several programs at the same time. Each program presents its GUI in its own window, which
2795-426: The current X-server screen available. This ability allows the user interface (mouse, keyboard, monitor) of a running application to be switched from one location to another without stopping and restarting the application. Network traffic between an X server and remote X clients is not encrypted by default. An attacker with a packet sniffer can intercept it, making it possible to view anything displayed to or sent from
2860-454: The desktop metaphor altogether, simplifying their interfaces for specialized applications. Window managers range in sophistication and complexity from the bare-bones ( e.g. , twm, the basic window manager supplied with X, or evilwm, an extremely light window manager) to the more comprehensive desktop environments such as Enlightenment and even to application-specific window managers for vertical markets such as point-of-sale. Many users use X with
2925-466: The framebuffer using the EGL rendering API . The display server still gets to decide which window is on top and thus visible to the user and also still is responsible for passing data regarding to input devices from evdev to its clients. Wayland is used to a certain degree in some Linux desktop distributions, such as Fedora . It is also well suited for mobile computing and has been adopted, for example, by
2990-432: The implementation of thin clients . A display server or window server is a program whose primary task is to coordinate the input and output of its clients to and from the rest of the operating system, the hardware, and each other. The display server communicates with its clients over the display server protocol, a communications protocol , which can be network-transparent or simply network-capable. The display server
3055-568: The local X server to both local and remotely hosted X client programs who need to share the user's graphics and input devices to communicate with the user. X's network protocol is based on X command primitives. This approach allows both 2D and (through extensions like GLX) 3D operations by an X client application which might be running on a different computer to still be fully accelerated on the X server's display. For example, in classic OpenGL (before version 3.0), display lists containing large numbers of objects could be constructed and stored entirely in
3120-500: The name refers to a notable feature of PHIGS: unlike most graphics systems, PHIGS included a scene graph system as a part of the basic standard. Models were built up in a Centralized Structure Store (CSS), a database containing a "world" including both the drawing primitives and their attributes (color, line style, etc.). CSSes could be shared among a number of virtual devices, known under PHIGS as workstations , each of which could contain any number of views . Displaying graphics on
3185-442: The new "Windows Aero" user experience, which allowed for effects such as transparency, 3D window switching and more. It is also included with Windows Server 2008, but requires the "Desktop Experience" feature and compatible graphics drivers to be installed. From Windows 8 onwards DWM can't be disabled and is software rendered if no suitable graphics card is installed. Some systems such as Microsoft Windows ( XP , 9x and earlier),
3250-472: The only windowing system likely to become available in time. DEC engineers ported X6 to DEC's QVSS display on MicroVAX . Windowing system In computing , a windowing system (or window system ) is a software suite that manages separately different parts of display screens . It is a type of graphical user interface (GUI) which implements the WIMP ( windows , icons , menus , pointer ) paradigm for
3315-750: The same host. Additionally shared memory (via the MIT-SHM extension) can be employed for faster client–server communication. However, the programmer must still explicitly activate and use the shared memory extension. It is also necessary to provide fallback paths in order to stay compatible with older implementations, and in order to communicate with non-local X servers. Some people have attempted writing alternatives to and replacements for X. Historical alternatives include Sun 's NeWS and NeXT 's Display PostScript , both PostScript -based systems supporting user-definable display-side procedures, which X lacked. Current alternatives include: Additional ways to achieve
SECTION 50
#17327829342793380-517: The same large computer server to execute application programs as clients of each user's X terminal. This use is very much aligned with the original intention of the MIT project. X terminals explore the network (the local broadcast domain ) using the X Display Manager Control Protocol to generate a list of available hosts that are allowed as clients. One of the client hosts should run an X display manager . A limitation of X terminals and most thin clients
3445-476: The same, or lower, cost. The Unix-Haters Handbook (1994) devoted a full chapter to the problems of X. Why X Is Not Our Ideal Window System (1990) by Gajewska, Manasse and McCormack detailed problems in the protocol with recommendations for improvement. The lack of design guidelines in X has resulted in several vastly different interfaces, and in applications that have not always worked well together. The Inter-Client Communication Conventions Manual (ICCCM),
3510-497: The screen in PHIGS was a three-step process; first the model would be built into a CSS, then a workstation would be created and opened, and finally the model would be connected to the workstation. At that point the workstation would immediately render the model, and any future changes made to the model would instantly be reflected in all applicable workstation views. PHIGS originally lacked the capability to render illuminated scenes, and
3575-491: The screen. This was kept private in PHIGS, making it much more difficult to tune performance, but enabling tuning to happen "for free" within the PHIGS implementation. Given the low performance systems of the era and the need for high-performance rendering, OpenGL was generally considered to be much more "powerful" for 3D programming. PHIGS fell into disuse. Version 6.0 of the PEX protocol was designed to support other 3D programming models as well, but did not regain popularity. PEX
3640-487: The separation of client and server incur overhead. Most of the overhead comes from network round-trip delay time between client and server ( latency ) rather than from the protocol itself: the best solutions to performance issues depend on efficient application design. A common criticism of X is that its network features result in excessive complexity and decreased performance if only used locally. Modern X implementations use Unix domain sockets for efficient connections on
3705-428: The server and the applications being the clients – often confuses new X users, because the terms appear reversed. But X takes the perspective of the application, rather than that of the end-user: X provides display and I/O services to applications, so it is a server; applications use these services, thus they are clients. The communication protocol between server and client operates network-transparently:
3770-433: The smartphone- and tablet-focused projects Tizen , Sailfish OS and AsteroidOS . An implementation of Wayland is available under the MIT License , the libwayland-client and libwayland-server libraries. There is an ongoing effort to add Wayland support to ChromeOS . The Mir display server comes with its own Mir display server protocol which is different from those used by X11 and Wayland. Mir additionally supports
3835-471: The user's computer to request the rendering of graphics content and receive events from input devices including keyboards and mice. The fact that the term "server" is applied to the software in front of the user is often surprising to users accustomed to their programs being clients to services on remote computers. Here, rather than a remote database being the resource for a local app, the user's graphic display and input devices become resources made available by
3900-499: The user's screen. The most common way to encrypt X traffic is to establish a Secure Shell (SSH) tunnel for communication. Like all thin clients , when using X across a network, bandwidth limitations can impede the use of bitmap -intensive applications that require rapidly updating large portions of the screen with low latency, such as 3D animation or photo editing. Even a relatively small uncompressed 640×480×24 bit 30 fps video stream (~211 Mbit/s) can easily outstrip
3965-507: The whole screen, or to various printer-output devices. PHIGS was designed in the 1980s, inheriting many of its ideas from the Graphical Kernel System (GKS) of the late 1970s, and became a standard by 1988: ANSI (ANSI X3.144-1988), FIPS (FIPS 153) and then ISO (ISO/IEC 9592 and ISO/IEC 9593). Due to its early gestation, the standard supports only the most basic 3D graphics, including basic geometry and meshes, and only
SECTION 60
#17327829342794030-401: The window, which are graphical elements for direct user interaction, such as sliders, buttons, etc., is eased and simplified through the use of widget toolkits . The main component of any windowing system is usually called the display server , although alternative denominations such as window server or compositor are also in use. Any application that runs and presents its GUI in a window, is
4095-493: Was considerably easier to use and work with. However, OpenGL's "low-level" API allowed the programmer to make dramatic improvements in rendering performance by first examining the data on the CPU -side before trying to send it over the bus to the graphics engine. For instance, the programmer could "cull" the objects by examining which objects were actually visible in the scene, and sending only those objects that would actually end up on
4160-566: Was mostly removed from XFree86 4.2.x (2002) and finally removed from the X Window System altogether in X11R6.7.0 (April 2004). X Window System The X Window System ( X11 , or simply X ; stylized 𝕏 ) is a windowing system for bitmap displays, common on Unix-like operating systems. X originated as part of Project Athena at Massachusetts Institute of Technology (MIT) in 1984. The X protocol has been at version 11 (hence "X11") since September 1987. The X.Org Foundation leads
4225-446: Was superseded by PHIGS+ . PHIGS+ works in essentially the same manner, but added methods for lighting and filling surfaces within a 3D scene. PHIGS+ also introduced more advanced graphics primitives, such as Non-uniform rational B-spline (NURBS) surfaces. An ad hoc ANSI committee was formed around these proposed extensions to PHIGS, changing its name to the more descriptive and (optimistically) extensible name "PHIGS PLUS" -- "PLUS" being
#278721