Sun Microsystems Elite3D Installation Manual
Sun Microsystems Elite3D Installation Manual

Sun Microsystems Elite3D Installation Manual

Frame lock and buffer swap synchronization
Hide thumbs Also See for Elite3D:

Advertisement

Quick Links

Sun
Elite3D Frame Lock and
Buffer Swap Synchronization
Installation Guide
Sun Microsystems, Inc.
901 San Antonio Road
Palo Alto, CA 94303-4900 USA
650 960-1300
Fax 650 969-9131
Part No. 806-0273-11
August 1999, Revision A
Send comments about this document to: docfeedback@sun.com

Advertisement

Table of Contents
loading
Need help?

Need help?

Do you have a question about the Elite3D and is the answer not in the manual?

Questions and answers

Summary of Contents for Sun Microsystems Elite3D

  • Page 1 Elite3D Frame Lock and ™ Buffer Swap Synchronization Installation Guide Sun Microsystems, Inc. 901 San Antonio Road Palo Alto, CA 94303-4900 USA 650 960-1300 Fax 650 969-9131 Part No. 806-0273-11 August 1999, Revision A Send comments about this document to: docfeedback@sun.com...
  • Page 2 Sun, Sun Microsystems, the Sun logo, SunService, OpenGL, OpenWindows, SunVTS, Ultra, and Solaris are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and in other countries. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. in the United States and in other countries. Products bearing SPARC trademarks are based upon an architecture developed by Sun Microsystems, Inc.
  • Page 3 FCC radio frequency emission limits. Networking connections can be made using unshielded twisted-pair (UTP) cables. Modifications: Any modifications made to this device that are not approved by Sun Microsystems, Inc. may void the authority granted to the user by the FCC to operate this equipment.
  • Page 4 This Class B digital apparatus meets all requirements of the Canadian Interference-Causing Equipment Regulations. Cet appareil numérique de la classe B respecte toutes les exigences du Règlement sur le matériel brouilleur du Canada. Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 5: Table Of Contents

    Frame Lock 1 Buffer Swap Synchronization 2 Supported Systems 2 Creating a Multiscreen Application 3 Elite3D Frame Lock and Buffer Swap Synchronization Installation 5 Software Requirements 5 Installing the Software 5 Configuring Elite3D Graphics Cards 6 Frame Lock Cable Installation 7...
  • Page 6 Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 7 Figures Frame Lock Cable Assembly 8 FIGURE 2-1 Elite3D Backplate Stereo Connector 9 FIGURE 2-2 Horizontal Elite3D and Frame Lock Cable Assembly 11 FIGURE 2-3 Vertical Elite3D and Frame Lock Cable Assembly 12 FIGURE 2-4 Figures...
  • Page 8 Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 9 Tables Supported Systems 2 TABLE 1-1 Frame Lock Cable Connections 8 TABLE 2-1 Elite3D Stereo Connector Pinout 9 TABLE 2-2 Wiring Schematic for Frame Lock Cable Assembly 9 TABLE 2-3 Tables...
  • Page 10 Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 11: Preface

    Synchronization system with your Sun Workstation™. It is intended for system administrators and programmers who want to display multiscreen applications over two or more Elite3D frame buffer monitors. How This Book Is Organized Chapter 1 describes the Frame Lock and Buffer Swap Synchronization product and an example on creating a multi-screen application.
  • Page 12: Sun Documentation On The Web

    We are interested in improving our documentation and welcome your comments and suggestions. You can email your comments to us at: docfeedback@sun.com Please include the part number of your document in the subject line of your email. Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 13: Introduction

    Description The Elite3D Frame Lock and Buffer Swap Synchronization system enables two or more Elite3D graphics device monitors to display multiscreen applications. This product includes the Frame Lock cable assembly and software. There are two main feature components: Frame Lock and Buffer Swap Synchronization.
  • Page 14: Buffer Swap Synchronization

    Buffer Swap Synchronization Buffer Swap synchronization enables a simultaneous swap of buffer memory contents on all Elite3D graphics subsystems to maintain image quality and to enable continuity between scenes on all applicable displays. This feature, however, is not applicable across two or more systems. The display can be a monitor or a large wall screen image displayed by a projector.
  • Page 15: Creating A Multiscreen Application

    Creating a Multiscreen Application The following is a programming example of how to create a Buffer Swap Synchronization (multiscreen) application. Refer to Appendix A for the code for this application example. Main program: Create n full screen windows, one per screen. Create n rendering threads and associate one thread per screen.
  • Page 16 Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 17: Elite3D Frame Lock And Buffer Swap Synchronization Installation

    This chapter provides procedures for installing the Elite3D Frame Lock and Buffer Swap Synchronization software and hardware. It also describes how to configure an Elite3D graphics card as either master or slave devices within the Frame Lock system. Software Requirements The latest OpenGL 1.1.2 patch...
  • Page 18: Configuring Elite3D Graphics Cards

    Frame Lock, you may select any device (that is, afb0, afb1, afb2,...afb7) to be the master Elite3D device. 1. Select an Elite 3D card to designate as master for the Elite3D graphics cards to be in Frame Lock. One solution for designating an Elite3D to be the master is to use the Elite3D that serves as the boot/console head for that system.
  • Page 19: Frame Lock Cable Installation

    3. Connect the Frame Lock cable to each Elite3D graphics card. Make sure to first connect the top of the Frame Lock cable assembly to the master Elite3D card. See the section ““Frame Lock Cable Installation” on page 7.” 4. From the master Elite3D graphics card display window, configure the other Elite3D graphics cards in slave mode.
  • Page 20: Frame Lock Cable Assembly

    Frame Lock cables (female connector) for slave Elite3D devices. Note – There can only be one master Elite3D graphics device. You must configure all other Elite3D devices as slaves. See the section “Configuring Elite3D Graphics Cards” on page 6.”...
  • Page 21 Elite3D device and one or TABLE 2-3 more slave Elite3D devices. You should wire the second to nth slave devices exactly as the “slave” column in this table. Wiring Schematic for Frame Lock Cable Assembly...
  • Page 22: Connecting The Frame Lock Cable Assembly

    Connecting the Frame Lock Cable Assembly 1. Locate the master Elite3D back panel on the rear of your system and connect the top of the Frame Lock cable assembly to the master Elite3D stereo connector. 2. Connect the slave cable connector to a slave Elite3D stereo connector.
  • Page 23 Top of Frame Lock Slave cable assembly cables to master Elite3D Daisy-chain/stereo connector Cabling for second slave Elite3D Optional slave stereo glasses Horizontal Elite3D and Frame Lock Cable Assembly FIGURE 2-3 Chapter 2 Elite3D Frame Lock and Buffer Swap Synchronization Installation...
  • Page 24 Slave cables to master Elite3D Daisy-chain/stereo connector Cabling for second slave Elite3D Optional slave stereo glasses Vertical Elite3D and Frame Lock Cable Assembly FIGURE 2-4 Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 25: Multiscreen Application Code Example

    /******************************************************************* * @(#)multi_screen_MT.c 1.3 99/07/13 16:35:53 * Copyright (c) 1998-1999 Sun Microsystems, Inc. All Rights Reserved. * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use, * modify and redistribute this software in source and binary code form, * provided that i) this copyright notice and license appear on all copies of * the software;...
  • Page 26 * includes the X11 display and window state, OpenGL state, and thread communication state. typedef struct { Display *dpy; /* X11 Display connection */ XVisualInfo *visInfo;/* X11 visual info */ Window win; /* XID of Canvas window */ Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 27 whichCtx; /* Which context (1 thru n) */ GLXContext ctx; /* GLX context ID */ double angle; /* rotation angle */ mutex_t *masterMutex; /* Used to notify master */ cond_t *masterCond; /* Ditto */ volatile GLboolean *masterFlag; /* Ditto */ mutex_t *renderMutex;...
  • Page 28 /* Used to notify master */ cond_t masterCond[MAXSCR]; /* Ditto */ GLboolean masterFlag[MAXSCR]; /* Ditto */ mutex_t renderMutex[MAXSCR]; /* Used to notify master */ cond_t renderCond[MAXSCR]; /* Ditto */ Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 29 GLboolean renderFlag[MAXSCR]; /* Ditto */ static int gl_visual_attrs[] = { GLX_USE_GL, GLX_RGBA, GLX_DOUBLEBUFFER, GLX_RED_SIZE, 2, GLX_GREEN_SIZE, 2, GLX_BLUE_SIZE, 2, None /* Parse command line options */ while (--argc > 0) { static char *usage = "multi_frames_MT [-cells <numRows> <numCols>]"; ++argv; if (argv[0][0] == ’-’) { if (strcmp(argv[0], "-cells") == 0) { if (argc >= 3) {...
  • Page 30 (i = 0; i < numScreens; i++) { mutex_init(&masterMutex[i], USYNC_THREAD, NULL); cond_init(&masterCond[i], USYNC_THREAD, NULL); masterFlag[i] = GL_FALSE; mutex_init(&renderMutex[i], USYNC_THREAD, NULL); cond_init(&renderCond[i], USYNC_THREAD, NULL); renderFlag[i] = GL_FALSE; renderThreadState[i] = newRenderThreadState(i, dpy, visInfo[i], win[i], Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 31 &masterMutex[i], &masterCond[i], &masterFlag[i], &renderMutex[i], &renderCond[i], &renderFlag[i]); if (thr_create(NULL, 0, renderThreadRun, renderThreadState[i], THR_DAEMON | THR_NEW_LWP, &render_tid[i]) != 0) { perror("thr_create"); masterThreadState = newMasterThreadState(masterMutex, masterCond, masterFlag, renderMutex, renderCond, renderFlag); if (thr_create(NULL, 0, masterThreadRun, masterThreadState, THR_DAEMON | THR_NEW_LWP, &master_tid) != 0) { perror("thr_create"); /* Process window events from the main thread */ event_loop(dpy, win);...
  • Page 32 (i == 1 && (text[0] == ’\033’ || text[0] == ’Q’)) { exit(0); break; case MappingNotify: XRefreshKeyboardMapping(&event); break; * newRenderThreadState * This method allocate and initializes a new render thread state object. Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 33 static RenderThreadState * newRenderThreadState(int whichCtx, /* context number [0,N-1] */ Display * dpy, /* X11 display */ XVisualInfo * visInfo, /* X11 visual */ Window win, /* X11 window */ mutex_t * masterMutex, /* Master thread mutex */ cond_t * masterCond, /* Master thread cond var */ GLboolean * masterFlag, /* Master thread "done"...
  • Page 34 * Wait for notification from other thread static void waitForPost(mutex_t * m, cond_t * c, volatile GLboolean * flag) mutex_lock(m); while (!*flag) { cond_wait(c, m); *flag = GL_FALSE; mutex_unlock(m); * renderThreadRun Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 35 * Main run method for render threads. void renderThreadRun(void *threadState) RenderThreadState *ts = (RenderThreadState *) threadState; fprintf(stderr, "renderThreadRun(%d)\n", ts->whichCtx); initContext(ts); while (1) { * Wait for notification from master thread, perform one rendering * pass, and then notify the master thread that we are done. waitForPost(ts->renderMutex, ts->renderCond, ts->renderFlag);...
  • Page 36 = (((double) screenHeight * (double) numRows) / ((double) screenWidth * (double) numCols)); xCellPos = ts->whichCtx % numCols; yCellPos = ts->whichCtx / numCols; xmin = 2.0 * xCellPos / numCols - 1.0; Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 37 xmax = 2.0 * (xCellPos + 1) / numCols - 1.0; ymin = 2.0 * (numRows - 1 - yCellPos) / numRows - 1.0; ymax = 2.0 * (numRows - yCellPos) / numRows - 1.0; ymin *= aspect; ymax *= aspect; glMatrixMode(GL_PROJECTION);...
  • Page 38 XSetWindowAttributes wattrs; XEvent event; Colormap cmap; cmap = XCreateColormap(dpy, parent, visInfo->visual, AllocNone); /* Create the output window */ wattrs.background_pixel = 0; wattrs.border_pixel = 0; wattrs.colormap = cmap; Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 39 wattrs.event_mask = ExposureMask | StructureNotifyMask | KeyPressMask; window = XCreateWindow(dpy, parent, 0, 0, width, height, 1, visInfo->depth, InputOutput, visInfo->visual, (CWBackPixel | CWBorderPixel | CWEventMask | CWColormap), &wattrs); XMapWindow(dpy, window); return window; Appendix A Multiscreen Application Code Example...
  • Page 40 Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 41: Questions And Answers

    Q - Which systems support buffer swap synchronization and multi-head stereo, and how many Elite3D graphics subsystems are supported in these systems? A - (1) Sun Ultra 30 and Sun Ultra 60 systems support two (2) Elite3D graphics subsystems (2) Sun Enterprise 3000 and 3500 systems support four (4) Elite3D...
  • Page 42 A - This feature is not supported. But it could work if the external source is a TTL or LVTTL square wave at 1/2 the vertical frequency. Q - Do all Elite3D monitor display devices have to be at the same resolution for Frame Lock? A - Yes.
  • Page 43 Power cycle, however, may fix the problem or allow you to change master/slave configuration. Q - When an Elite3D graphic system is configured via software to a slave, will its output video on the display monitor change? A - No. The output video will remain the same but one will see the video display flicker a bit at the time the software command is invoked.
  • Page 44 Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 45: Afbconfig Manpage

    This appendix provides the manpage for the afbconfig(1M) maintenance commands. The afbconfig command is used when configuring your Elite3D graphics cards as either master or slave. See “Configuring Elite3D Graphics Cards” on page 6. Refer to these pages for syntax and command option descriptions.
  • Page 46 OWconfig file in the /usr/openwin directory tree is used. If the file does not exist, it is created. -res video-mode [now | try [ noconfirm | nocheck ] ] Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 47 Specifies the video mode used to drive the monitor connected to the specified AFB device. widthxheightxrate where width is the screen width in pixels, height is the screen height in pixels, and rate is the vertical frequency of the screen refresh. The s suffix of 960x680x112s and 960x680x108s means that these are stereo video modes.
  • Page 48 OWconfig file (other options specified will still take effect). If a carriage return is Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 49 typed, the user is prompted for a yes or no answer on whether to keep the new video mode. This option implies the now suboption (see the warning note on the now suboption). AFB possesses two types of visuals: linear and nonlinear. Linear visuals are gamma corrected and nonlinear visuals are not.
  • Page 50 Each of these values should be in hexadecimal format and separated from each other by at least 1 space. Also this file should provide 256 such triplets. An example of this file is as follows. Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 51 0x00 0x00 0x00 0x01 0x01 0x01 0x02 0x02 0x02 0xff 0xff 0xff Using this option, the gamma correction table can be loaded while the window system is running. The new gamma correction will affect all the windows being displayed using the linear visuals. Note, when gamma correction is being done using user specified table, the gamma correction value is undefined.
  • Page 52 1152x900x76, 1280x1024x67, 1280x1024x76, 960x680x112s, 960x680 x108s Current resolution setting: 1280x1024x76 -help Prints a list of the afbconfig command line options, along with a brief explanation of each. DEFAULTS Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...
  • Page 53 For a given invocation of afbconfig command line if an option does not appear on the command line, the corresponding OWconfig option is not updated; it retains its previous value. When the window system is run, if an AFB option has never been specified via afbconfig, a default value is used.
  • Page 54 /dev/fbs/afb0 device special file SEE ALSO mmap(2), fbio(7I), afb(7D) Sun Elite3D Frame Lock and Buffer Swap Synchronization Installation Guide • August 1999...

Table of Contents