diff options
author | Jose Fonseca <j_r_fonseca@yahoo.co.uk> | 2003-01-19 12:18:08 +0000 |
---|---|---|
committer | Jose Fonseca <j_r_fonseca@yahoo.co.uk> | 2003-01-19 12:18:08 +0000 |
commit | 4fb1eb7be21eadd6e12cf2e230556be5c31feb3d (patch) | |
tree | 016a5891a4f8ddaef2c28e45767149117ee8f07f /src | |
parent | cf119744c31f07f723875691e6e9c824ea26375b (diff) |
Add the missing detailed documentation bits on miniglx.c and xf86drm.c.
Several updates and fixes to the documentation.
Diffstat (limited to 'src')
-rw-r--r-- | src/miniglx/miniglx.c | 136 | ||||
-rw-r--r-- | src/miniglx/miniglxP.h | 47 | ||||
-rw-r--r-- | src/miniglx/xf86drm.c | 10 |
3 files changed, 152 insertions, 41 deletions
diff --git a/src/miniglx/miniglx.c b/src/miniglx/miniglx.c index df3781f811..2dafd5764c 100644 --- a/src/miniglx/miniglx.c +++ b/src/miniglx/miniglx.c @@ -22,7 +22,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $Id: miniglx.c,v 1.1.4.38 2003/01/18 12:25:57 keithw Exp $ */ +/* $Id: miniglx.c,v 1.1.4.39 2003/01/19 12:18:08 jrfonseca Exp $ */ /** @@ -132,14 +132,26 @@ static void SwitchDisplay(int i_signal) } /**********************************************************************/ -/** \name FBdev functions */ +/** \name Framebuffer device functions */ /**********************************************************************/ /*@{*/ /** - * \brief Do first part of setting up fbdev. + * \brief Do the first part of setting up the framebuffer device. * + * \param dpy the display handle. + * + * \return GL_TRUE on success, or GL_FALSE on failure. + * * \sa This is called during XOpenDisplay(). + * + * \internal + * Gets the VT number, opens the respective console TTY device. Saves its state + * to restore when exiting and goes into graphics mode. + * + * Opens the framebuffer device and make a copy of the original variable screen + * information and gets the fixed screen information. Maps the framebuffer and + * MMIO region into the process address space. */ static GLboolean OpenFBDev( Display *dpy ) @@ -154,7 +166,7 @@ OpenFBDev( Display *dpy ) return GL_FALSE; } - /* open /dev/tty0 and get the vt number */ + /* open /dev/tty0 and get the VT number */ if ((fd = open("/dev/tty0", O_WRONLY, 0)) < 0) { fprintf(stderr, "error opening /dev/tty0\n"); return GL_FALSE; @@ -305,9 +317,24 @@ OpenFBDev( Display *dpy ) /** - * \brief Setup up our desired fbdev framebuffer mode. + * \brief Setup up the desired framebuffer device mode. * + * \param dpy the display handle. + * \param win the window handle, from which the screen size is taken. + * + * \return GL_TRUE on success, or GL_FALSE on failure. + * * \sa This is called during XCreateWindow(). + * + * \internal + * Bumps the size of the window the the next supported mode. Sets the variable + * screen information according to the desired mode and asks the driver to + * validate the mode. Certifies that a TrueColor visual is used from the + * updated fixed screen information. + * + * Attempts to draws a bitmap with a gradient. + * + * \todo Timings are hardcoded in the code for a set of supported modes. */ static GLboolean SetupFBDev( Display *dpy, Window win ) @@ -505,10 +532,18 @@ SetupFBDev( Display *dpy, Window win ) /** - * \brief Restore framebuffer to state it was in before we started - * (undoes work done in SetupFBDev). + * \brief Restore the framebuffer device to state it was in before we started + * + * Undoes the work done by SetupFBDev(). + * + * \param dpy the display handle. + * + * \return GL_TRUE on success, or GL_FALSE on failure. * * \sa Called from XDestroyWindow(). + * + * \internal + * Restores the original variable screen info. */ static GLboolean RestoreFBDev( Display *dpy ) @@ -526,9 +561,15 @@ RestoreFBDev( Display *dpy ) /** - * \brief Close FBDev. + * \brief Close the framebuffer device. * + * \param dpy the display handle. + * * \sa Called from XCloseDisplay(). + * + * \internal + * Unmaps the framebuffer and MMIO region. Restores the text mode and the + * original virtual terminal. Closes the console and framebuffer devices. */ static void CloseFBDev( Display *dpy ) @@ -565,6 +606,17 @@ CloseFBDev( Display *dpy ) /**********************************************************************/ /*@{*/ +/** + * \brief Find the DRI screen dependent methods associated with the display. + * + * \param dpy a display handle, as returned by XOpenDisplay(). + * \param scrn the screen number. Not referenced. + * + * \returns a pointer to a __DRIscreenRec structure. + * + * \internal + * Returns the MiniGLXDisplayRec::driScreen attribute. + */ __DRIscreen * __glXFindDRIScreen(Display *dpy, int scrn) { @@ -572,6 +624,16 @@ __glXFindDRIScreen(Display *dpy, int scrn) return &(dpy->driScreen); } +/** + * \brief Validate a drawable. + * + * \param dpy a display handle, as returned by XOpenDisplay(). + * \param draw drawable to validate. + * + * \internal + * Since Mini GLX only supports one window, compares the specified drawable with + * the MiniGLXDisplayRec::TheWindow attribute. + */ Bool __glXWindowExists(Display *dpy, GLXDrawable draw) { @@ -581,6 +643,14 @@ __glXWindowExists(Display *dpy, GLXDrawable draw) return False; } +/** + * \brief Get current thread ID. + * + * \return thread ID. + * + * \internal + * Always returns 0. + */ unsigned long _glthread_GetID(void) { @@ -638,9 +708,19 @@ static int get_chipset_from_busid( Display *dpy ) /** * \brief Read settings from a configuration file. * - * \return non-zeros on success, zero otherwise. + * The configuration file is usually "/etc/minigilx.conf", but can be overriden + * with the MINIGLX_CONF environment variable. + * + * The format consists in \code option = value \endcode lines. The option names + * corresponds to the fields in MiniGLXDisplayRec. + * + * \param dpy the display handle as. + * + * \return non-zero on success, zero otherwise. * * \internal + * Sets some defaults. Opens and parses the the Mini GLX configuration file and + * fills in the MiniGLXDisplayRec field that corresponds for each option. */ static int __read_config_file( Display *dpy ) { @@ -749,8 +829,18 @@ static int __read_config_file( Display *dpy ) * the graphics system, NULL otherwise. * * \internal + * Allocates a MiniGLXDisplayRec structure and fills in with information from a + * configuration file. + * + * Opens and initializes the fbdev device. * - * \attention This function not stable. + * Loads the DRI driver and pulls in MiniGLX-specific hooks into a + * MiniGLXDriverRec structure, and the standard DRI \e __driCreateScreen hook. + * Asks the driver for a list of supported visuals. Performs the client-side + * initialization - has to be done this here as it depends on the chosen + * display resolution, which in this window system depends on the size of the + * \e window created. Also setups the callbacks in the screen private + * information. */ Display * XOpenDisplay( const char *display_name ) @@ -834,7 +924,7 @@ XOpenDisplay( const char *display_name ) * Clearly there is a limit of one on the number of windows in * existence at any time. * - * Need to shut down drm and free dri data in XDestroyWindow, too. + * Need to shut down DRM and free DRI data in XDestroyWindow(), too. */ dpy->driScreen.private = (*dpy->createScreen)(dpy, 0, &(dpy->driScreen), @@ -867,9 +957,12 @@ XOpenDisplay( const char *display_name ) * * \internal * This function frees the \p display structure, after calling the - * __DRIscreenRec::destroyScreen method pointed by MiniGLXDisplayRec::driScreen - * attribute of \p display, closing the dynamic library handle - * MiniGLXDisplayRec::dlHandle and calling CleanupFBDev() to close the fbdev. + * __DRIscreenRec::destroyScreen method pointed by + * MiniGLXDisplayRec::driScreen attribute of \p display, closing the dynamic + * library handle MiniGLXDisplayRec::dlHandle and calling CloseFBDev() to + * close the fbdev. + * + * Also destroy the window and halt the framebuffer device. */ void XCloseDisplay( Display *display ) @@ -901,7 +994,7 @@ XCloseDisplay( Display *display ) /** * \brief Window creation. * - * \param display a #Display pointer, as returned by XOpenDisplay(). + * \param display a display handle, as returned by XOpenDisplay(). * \param parent the parent window for the new window. For Mini GLX this should * be * \code RootWindow(display, 0) \endcode @@ -911,8 +1004,8 @@ XCloseDisplay( Display *display ) * screen width such as 1024 or 1280. * \param height the window height. For Mini GLX, this specifies the desired * screen height such as 768 or 1024. - * \param border_width This parameter should be zero. - * \param depth the window pixel depth. For Mini GLX this should be the depth + * \param border_width the border sith. For Mini GLX, it should be zero. + * \param depth the window pixel depth. For Mini GLX, this should be the depth * found in the #XVisualInfo object returned by glXChooseVisual() * \param class the window class. For Mini GLX this value should be * #InputOutput. @@ -1103,8 +1196,8 @@ XMapWindow( Display *display, Window w ) * \return the color map. * * \internal - * This function is only provided to ease porting. Practically a no-op. - * Returns a pointer to an one-byte chunk of memory allocated with #MALLOC. + * This function is only provided to ease porting. Practically a no-op - + * returns a pointer to a dinamically allocated chunk of memory (one byte). */ Colormap XCreateColormap( Display *dpy, Window w, Visual *visual, int alloc ) @@ -1436,7 +1529,8 @@ glXChooseVisual( Display *dpy, int screen, int *attribList ) * invalid. * * \internal - * Returns the appropriate attribute of ::__GLXvisualConfig pointed by MiniGLXVisualRec::glxConfig of XVisualInfo::visual. + * Returns the appropriate attribute of ::__GLXvisualConfig pointed by + * MiniGLXVisualRec::glxConfig of XVisualInfo::visual. * * \sa datatypes. */ @@ -1588,7 +1682,7 @@ glXDestroyContext( Display *dpy, GLXContext ctx ) * __DRIcontextRec::unbindContext and binds the new one via * __DRIcontextRec::bindContext. * - * If /p drawable is zero it unbinds the GLX context by calling + * If \p drawable is zero it unbinds the GLX context by calling * __DRIcontextRec::bindContext with zeros. */ Bool diff --git a/src/miniglx/miniglxP.h b/src/miniglx/miniglxP.h index 9b787b828a..d27331af70 100644 --- a/src/miniglx/miniglxP.h +++ b/src/miniglx/miniglxP.h @@ -52,9 +52,9 @@ typedef struct __GLXvisualConfigRec { } __GLXvisualConfig; -typedef struct __DRIscreenRec __DRIscreen; -typedef struct __DRIcontextRec __DRIcontext; -typedef struct __DRIdrawableRec __DRIdrawable; +typedef struct __DRIscreenRec __DRIscreen; /**< \copydoc __DRIscreenRec */ +typedef struct __DRIcontextRec __DRIcontext; /**< \copydoc __DRIcontextRec */ +typedef struct __DRIdrawableRec __DRIdrawable; /**< \copydoc __DRIdrawableRec */ typedef void *(*CreateScreenFunc)(Display *dpy, int scrn, __DRIscreen *psc, @@ -65,7 +65,6 @@ typedef void *(*CreateScreenFunc)(Display *dpy, int scrn, __DRIscreen *psc, /** * \brief Screen dependent methods. * - * \internal * This structure is initialized during the MiniGLXDisplayRec::createScreen * call. */ @@ -113,7 +112,6 @@ struct __DRIscreenRec { /** * \brief Context dependent methods. * - * \internal * This structure is initialized during the __DRIscreenRec::createContext call. */ struct __DRIcontextRec { @@ -149,7 +147,6 @@ struct __DRIcontextRec { /** * \brief Drawable dependent methods. * - * \internal * This structure is initialized during the __DRIscreenRec::createDrawable call. * * __DRIscreenRec::createDrawable is not called by libGL at this time. It's @@ -178,17 +175,31 @@ struct __DRIdrawableRec { /** * \brief Interface to driver. * - * \internal - * This structure is retrieved from the loadable driver by dlsym - * "__driMiniGLXDriver" to access the miniglx-specific hardware + * This structure is retrieved from the loadable driver by the \e + * __driMiniGLXDriver symbol to access the MiniGLX-specific hardware * initalization and takedown routines. */ struct MiniGLXDriverRec { + /** + * \brief Get the list of supported configs. + */ int (*initScreenConfigs)( struct MiniGLXDisplayRec *dpy, int *numConfigs, __GLXvisualConfig **configs ); + /** + * \brief Validate the framebuffer device mode + */ int (*validateMode)( struct MiniGLXDisplayRec *dpy ); + int (*postValidateMode)( struct MiniGLXDisplayRec *dpy ); + + /** + * \brief Initialize the framebuffer device. + */ int (*initFBDev)( struct MiniGLXDisplayRec *dpy ); + + /** + * \brief Halt the framebuffer device. + */ void (*haltFBDev)( struct MiniGLXDisplayRec *dpy ); }; @@ -196,14 +207,13 @@ struct MiniGLXDriverRec { /** * \brief Supported pixel formats. - * \enum pixelFormat */ enum PixelFormat { - PF_B8G8R8, /**< 24-bit BGR */ - PF_B8G8R8A8, /**< 32-bit BGRA */ - PF_B5G6R5, /**< 16-bit BGR */ - PF_B5G5R5, /**< 15-bit BGR */ - PF_CI8 /**< 8-bit color index */ + PF_B8G8R8, /**< \brief 24-bit BGR */ + PF_B8G8R8A8, /**< \brief 32-bit BGRA */ + PF_B5G6R5, /**< \brief 16-bit BGR */ + PF_B5G5R5, /**< \brief 15-bit BGR */ + PF_CI8 /**< \brief 8-bit color index */ }; @@ -288,8 +298,8 @@ struct MiniGLXDisplayRec { * \name From __GLXdisplayPrivate */ /*@{*/ - CreateScreenFunc createScreen; - __DRIscreen driScreen; + CreateScreenFunc createScreen; /**< \brief \e __driCreateScreen hook */ + __DRIscreen driScreen; /**< \brief Screen dependent methods */ void *dlHandle; /**< * \brief handle to the client dynamic * library @@ -306,8 +316,7 @@ struct MiniGLXDisplayRec { /** * \name Configuration details * - * \todo Will come from a file, hardcoded for now - * \todo Can we get chipset from fbdev? -- kindof, see fbdevhw.c + * They are read from a configuration file by __read_config_file(). */ /*@{*/ const char *fbdevDevice; diff --git a/src/miniglx/xf86drm.c b/src/miniglx/xf86drm.c index cb889ba992..7aa43caf72 100644 --- a/src/miniglx/xf86drm.c +++ b/src/miniglx/xf86drm.c @@ -1441,6 +1441,8 @@ int drmGetInterruptFromBusID(int fd, int busnum, int devnum, int funcnum) * \return zero on sucess, or a negative value on failure. * * \internal + * Issues a ioctl given by + * \code DRM_COMMAND_BASE + drmCommandIndex \endcode. */ int drmCommandNone(int fd, unsigned long drmCommandIndex) { @@ -1465,8 +1467,10 @@ int drmCommandNone(int fd, unsigned long drmCommandIndex) * \param size size of the data to be read. * * \return zero on sucess, or a negative value on failure. - * + * * \internal + * Issues a read ioctl given by + * \code DRM_COMMAND_BASE + drmCommandIndex \endcode. */ int drmCommandRead(int fd, unsigned long drmCommandIndex, void *data, unsigned long size ) @@ -1494,6 +1498,8 @@ int drmCommandRead(int fd, unsigned long drmCommandIndex, * \return zero on sucess, or a negative value on failure. * * \internal + * Issues a write ioctl given by + * \code DRM_COMMAND_BASE + drmCommandIndex \endcode. */ int drmCommandWrite(int fd, unsigned long drmCommandIndex, void *data, unsigned long size ) @@ -1521,6 +1527,8 @@ int drmCommandWrite(int fd, unsigned long drmCommandIndex, * \return zero on sucess, or a negative value on failure. * * \internal + * Issues a read-write ioctl given by + * \code DRM_COMMAND_BASE + drmCommandIndex \endcode. */ int drmCommandWriteRead(int fd, unsigned long drmCommandIndex, void *data, unsigned long size ) |