Template Version: @(#)sac_nextcase 1.56 10/26/05 SMI
This information is Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.

1. Introduction
    1.1. Project/Component Working Name:
	 OpenGL boot time selection of libraries and headers
    1.2. Name of Document Author/Supplier:
	 Author:  John Martin
    1.3  Date of This Document:
	17 November, 2005
4. Technical Description

OpenGL boot time selection of libraries and headers
===================================================

This project creates a boot time selection of the vendor specific
OpenGL libaries and header files built on the Greenline registry.

The current OpenGL strategy for Solaris x86 is to leverage the
development for Xorg on Linux/FreeBSD.  The current deliverables
are MESA from the Xorg source tree and NVIDIA proprietary drivers
for Solaris x86.  The current method for installing proprietary
OpenGL drivers on Linux/FreeBSD is to rename the system supplied
(MESA) libraries and headers and install the proprietary in their
place.  It is desired for Solaris to create vendor specific
subdirectories for installation of headers and libraries and
then select the correct ones at boot time.

Run time selection of libraries was investigated, but at this time
only a single Xorg server OpenGL library can be loaded.  This
effectively restricts run time OpenGL Xorg support to a single vendor
per system.  There is work in the Xorg community and the LSB Desktop
standards committee to resolve this limitation, but a solution is
unlikely in the time frame needed for this project.

This project establishes one new subdirectory in the FMRI service namespace:
    svc:/application/opengl    - for OpenGL specific services

This project delivers a manifest for this FMRI, more fully described in
the section below:

    svc:/application/opengl/ogl-select      OpenGL selection

This service and all of its properties are declared to be Unstable
interfaces at this time.  This project is declared suitable for
integration into a Micro/Patch release of Solaris.

OpenGL selection
================
This project selects, at boot time, the OpenGL libraries and headers
to be used by the Xorg server and applications.  The target objects:

  User libraries:
    /usr/X11/lib/libGL.so
    /usr/X11/lib/libGL.so.1

  Xorg server shared module:
    /usr/X11/lib/modules/extensions/libglx.so

  Headers:
    /usr/X11/include/GL/gl.h
    /usr/X11/include/GL/glext.h
    /usr/X11/include/GL/glx.h
    /usr/X11/include/GL/glxext.h

The current OpenGL deliverables (MESA and NVIDIA) install
their objects in subdirectories of the same name.  Any new
vendors will be required to do the same.

FMRI's & instances
------------------
This project creates the FMRI svc:/application/ogl/ogl-select for storing
OpenGL vendor configuration.   This configuration information is needed
when the correct vendor cannot be determined automatically.

A new script /lib/svc/method/ogl-select is provided to perform
loopback mounts of selected vendor libraries and headers to the
generic names.  Until Xorg is delivered for SPARC, the script will
only execute the desired selection on x86.

Automatic selection of the vendor is attempted by looking at
the kernel driver attached to the default framebuffer device
(/dev/fb).  Currently this is vgatext for MESA and nvidia for NVIDIA.
In cases where the automatic detection does not select the desired
vendor, it may be overridden by a user defined property.

Properties
----------
A single property may be defined by the user:
  "options/vendor" (type astring - desired vendor name, currently
        "mesa", "MESA", "nvidia" or "NVIDIA" with other vendor names
        added when new drivers are available.)


Interface Tables
================

Imported Interfaces:
--------------------
assorted SMF interfaces         Evolving            PSARC 2002/547
svc:system/filesystems/local    Unstable            PSARC 2002/547
MESA (open source OpenGL clone) External            LSARC 2005/109
NVIDIA drivers for x86          External            PSARC 2005/371

Exported Interfaces:
--------------------
svc:/application/ogl/ogl-select  Unstable
ogl-select properties            Unstable
/lib/svc/method/ogl-select       Project Private

6. Resources and Schedule
    6.4. Steering Committee requested information
   	6.4.1. Consolidation C-team Name:
		X Consolidation / Desktop C-Team
    6.5. ARC review type: FastTrack
