Solaris 7 Sun Hardware Platform Guide

Unexpected Slow Local Rendering

Whenever possible, Solaris OpenGL renders directly to the frame buffer, bypassing the X server. This is enabled by Sun's DGA mechanism for locking portions of the screen. However, a Solaris security feature only allows the user who originally logged in to the window system to use DGA to lock portions of the screen. Only owners of the window system have access to DGA.

If you notice poor performance when rendering locally, the cause may be this Solaris security feature. For example, if you start the window system, and another user at the workstation changes to that user's own environment using su, the application will not run via DGA even though the second user is running the application locally.

If you notice slow local rendering, run the ogl_install_check diagnostic program (found in /usr/openwin/demo/GL) to determine whether the application is running via DGA. If the OpenGL GLX Server status report from the ogl_install_check program says that the GLX context is indirect, the login permissions need to be edited to enable DGA access for all users.

To give all local users access to DGA, follow these steps:

  1. Become superuser.


    % su
    Password: superuser password
    

  2. Edit permissions to allow world read/write access to the following devices:


    % chmod 666 /dev/mouse /dev/kbd /dev/sound/* /dev/fbs/*
    

    This will enable DGA access by all users for the duration of the current window system session (subject to X authorization, see xhost(1)).

  3. Edit the /etc/logindevperm file and change the default permissions of all devices listed in the file to 0666 to allow world read/write access.

    For example, in the following lines in logindevperm, the 0600 should be changed to 0666 so that the next time you log in and restart your window system, it will still be accessible by all users.


    /dev/console     0600     /dev/mouse:/dev/kbd
    /dev/console     0600     /dev/sound/*       # audio devices
    /dev/console     0600     /dev/fbs/*         #frame buffers

Note that your system is no longer secure.