Logo Search packages:      
Sourcecode: virtualbox-ose version File versions  Download package

VBoxOpenGLSvc.h

Go to the documentation of this file.
/** @file
 * OpenGL:
 * Common header for host service and guest clients.
 */

/*
 * Copyright (C) 2006-2007 innotek GmbH
 *
 * This file is part of VirtualBox Open Source Edition (OSE), as
 * available from http://www.virtualbox.org. This file is free software;
 * you can redistribute it and/or modify it under the terms of the GNU
 * General Public License as published by the Free Software Foundation,
 * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
 * distribution. VirtualBox OSE is distributed in the hope that it will
 * be useful, but WITHOUT ANY WARRANTY of any kind.
 */

#ifndef ___VBox_HostService_VBoxOpenGLSvc_h
#define ___VBox_HostService_VBoxOpenGLSvc_h

#include <VBox/types.h>
#include <VBox/VBoxGuest.h>
#include <VBox/hgcmsvc.h>

/* OpenGL command buffer size */
#define VBOX_OGL_MAX_CMD_BUFFER                     (128*1024)
#define VBOX_OGL_CMD_ALIGN                          4
#define VBOX_OGL_CMD_ALIGN_MASK                     (VBOX_OGL_CMD_ALIGN-1)
#define VBOX_OGL_CMD_MAGIC                          0x1234ABCD

/* for debugging */
#define VBOX_OGL_CMD_STRICT

/* OpenGL command block */
typedef struct
{
#ifdef VBOX_OGL_CMD_STRICT
    uint32_t    Magic;
#endif
    uint32_t    enmOp;
    uint32_t    cbCmd;
    uint32_t    cParams;
    /* start of variable size parameter array */
} VBOX_OGL_CMD, *PVBOX_OGL_CMD;

typedef struct
{
#ifdef VBOX_OGL_CMD_STRICT
    uint32_t    Magic;
#endif
    uint32_t    cbParam;
    /* start of variable size parameter */
} VBOX_OGL_VAR_PARAM, *PVBOX_OGL_VAR_PARAM;

/** OpenGL Folders service functions. (guest)
 *  @{
 */

/** Query mappings changes. */
00060 #define VBOXOGL_FN_GLGETSTRING          (1)
#define VBOXOGL_FN_GLFLUSH              (2)
#define VBOXOGL_FN_GLFLUSHPTR           (3)
#define VBOXOGL_FN_GLCHECKEXT           (4)

/** @} */

/** Function parameter structures.
 *  @{
 */

/**
 * VBOXOGL_FN_GLGETSTRING
 */

/** Parameters structure. */
00076 typedef struct
{
    VBoxGuestHGCMCallInfo   hdr;

    /** 32bit, in: name
     * GLenum name parameter
     */
00083     HGCMFunctionParameter   name;

    /** pointer, in/out
     * Buffer for requested string
     */
00088     HGCMFunctionParameter   pString;
} VBoxOGLglGetString;

/** Number of parameters */
00092 #define VBOXOGL_CPARMS_GLGETSTRING (2)



/**
 * VBOXOGL_FN_GLFLUSH
 */

/** Parameters structure. */
00101 typedef struct
{
    VBoxGuestHGCMCallInfo   hdr;

    /** pointer, in
     * Command buffer
     */
00108     HGCMFunctionParameter   pCmdBuffer;

    /** 32bit, out: cCommands
     * Number of commands in the buffer
     */
00113     HGCMFunctionParameter   cCommands;
    
    /** 64bit, out: retval
     * uint64_t return code of last command
     */
00118     HGCMFunctionParameter   retval;

    /** 32bit, out: lasterror
     * GLenum current last error
     */
00123     HGCMFunctionParameter   lasterror;

} VBoxOGLglFlush;

/** Number of parameters */
00128 #define VBOXOGL_CPARMS_GLFLUSH (4)

/**
 * VBOXOGL_FN_GLFLUSHPTR
 */

/** Parameters structure. */
00135 typedef struct
{
    VBoxGuestHGCMCallInfo   hdr;

    /** pointer, in
     * Command buffer
     */
00142     HGCMFunctionParameter   pCmdBuffer;

    /** 32bit, out: cCommands
     * Number of commands in the buffer
     */
00147     HGCMFunctionParameter   cCommands;

    /** pointer, in
     * Last command's final parameter memory block
     */
00152     HGCMFunctionParameter   pLastParam;
    
    /** 64bit, out: retval
     * uint64_t return code of last command
     */
00157     HGCMFunctionParameter   retval;

    /** 32bit, out: lasterror
     * GLenum current last error
     */
00162     HGCMFunctionParameter   lasterror;

} VBoxOGLglFlushPtr;

/** Number of parameters */
00167 #define VBOXOGL_CPARMS_GLFLUSHPTR (5)


/**
 * VBOXOGL_FN_GLCHECKEXT
 */

/** Parameters structure. */
00175 typedef struct
{
    VBoxGuestHGCMCallInfo   hdr;

    /** pointer, in
     * Extension function name
     */
00182     HGCMFunctionParameter   pszExtFnName;

} VBoxOGLglCheckExt;

/** Number of parameters */
00187 #define VBOXOGL_CPARMS_GLCHECKEXT (1)

/** @} */


#endif

Generated by  Doxygen 1.6.0   Back to index