VBoxOGL.h revision 4604ab7d38c2bd2dfc255aa1facffdf81c1c9153
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * VirtualBox Windows NT/2000/XP guest OpenGL ICD
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Copyright (C) 2006-2007 Sun Microsystems, Inc.
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * available from http://www.virtualbox.org. This file is free software;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * you can redistribute it and/or modify it under the terms of the GNU
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * General Public License (GPL) as published by the Free Software
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * additional information or have any questions.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/* get rid of the inconsistent dll linkage warnings */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef struct _icdTable
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef struct
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/* HGCM macro */
223cf005b18af2c21352a70693ebaf0582f68ebcvboxsync#define VBOX_INIT_CALL(a, b, c) \
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/* glDrawElement internal state */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef struct
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef struct
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* Internal OpenGL state variables */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync VBOX_OGL_DRAWELEMENT Pointer[VBOX_OGL_DRAWELEMENT_MAX];
726fc44ad0bd65a178ad4c3ab46ebd6cd3208e99vboxsync /** @todo log error */ \
fdea543f71872a3ec3909536a4fce37ab7aa3a8bvboxsync * Initialize the OpenGL guest-host communication channel
fdea543f71872a3ec3909536a4fce37ab7aa3a8bvboxsync * @return success or failure (boolean)
726fc44ad0bd65a178ad4c3ab46ebd6cd3208e99vboxsync * @param hDllInst Dll instance handle
3080f6c0871099df43a4e91b31894d9c2b1369a8vboxsync * Destroy the OpenGL guest-host communication channel
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @return success or failure (boolean)
50df3da42ff6589b0ecc4f50f2288811bc370186vboxsync * Initialize new thread
50df3da42ff6589b0ecc4f50f2288811bc370186vboxsync * @return success or failure (boolean)
3080f6c0871099df43a4e91b31894d9c2b1369a8vboxsync * Clean up for terminating thread
3080f6c0871099df43a4e91b31894d9c2b1369a8vboxsync * @return success or failure (boolean)
50df3da42ff6589b0ecc4f50f2288811bc370186vboxsync * Set the thread local OpenGL context
50df3da42ff6589b0ecc4f50f2288811bc370186vboxsync * @param pCtx thread local OpenGL context ptr
726fc44ad0bd65a178ad4c3ab46ebd6cd3208e99vboxsyncvoid VBoxOGLSetThreadCtx(PVBOX_OGL_THREAD_CTX pCtx);
726fc44ad0bd65a178ad4c3ab46ebd6cd3208e99vboxsync * Return the thread local OpenGL context
50df3da42ff6589b0ecc4f50f2288811bc370186vboxsync * @return thread local OpenGL context ptr or NULL if failure
50df3da42ff6589b0ecc4f50f2288811bc370186vboxsync * Queue a new OpenGL command
50df3da42ff6589b0ecc4f50f2288811bc370186vboxsync * @param enmOp OpenGL command op
26824086a3f6b36cd911058f1d9b4c0b944706fbvboxsync * @param cParam Number of parameters
26824086a3f6b36cd911058f1d9b4c0b944706fbvboxsync * @param cbParams Memory needed for parameters
68ef804c4ec232c58e2c03c8fc6afe3765c5c0d1vboxsyncvoid VBoxCmdStart(uint32_t enmOp, uint32_t cParam, uint32_t cbParams);
3080f6c0871099df43a4e91b31894d9c2b1369a8vboxsync * Add a parameter to the currently queued OpenGL command
50df3da42ff6589b0ecc4f50f2288811bc370186vboxsync * @param pParam Parameter ptr
50df3da42ff6589b0ecc4f50f2288811bc370186vboxsync * @param cbParam Parameter value size
26824086a3f6b36cd911058f1d9b4c0b944706fbvboxsyncvoid VBoxCmdSaveParameter(uint8_t *pParam, uint32_t cbParam);
b8aaccdbdd143967110d499670605dd7ff6ecc72vboxsync * Add a parameter (variable size) to the currently queued OpenGL command
50df3da42ff6589b0ecc4f50f2288811bc370186vboxsync * @param pParam Parameter ptr
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @param cbParam Parameter value size
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncvoid VBoxCmdSaveMemParameter(uint8_t *pParam, uint32_t cbParam);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Finish the queued command
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @param enmOp OpenGL command op
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Send an HGCM request
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @return VBox status code
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @param pvData Data pointer
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @param cbData Data size
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Log to the debug output device
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @param pszFormat Format string
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @param ... Variable parameters
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Flush the OpenGL command queue and return the return val of the last command
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @returns return val of last command
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Flush the OpenGL command queue and return the return val of the last command
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * The last command's final parameter is a pointer where its result is stored
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @returns return val of last command
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @param pLastParam Last parameter's address
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @param cbParam Last parameter's size
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncuint64_t VBoxOGLFlushPtr(void *pLastParam, uint32_t cbParam);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Initialize OpenGL extensions
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @returns VBox status code
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @param pCtx OpenGL thread context
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncint vboxInitOpenGLExtensions(PVBOX_OGL_THREAD_CTX pCtx);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Check if an OpenGL extension is available on the host
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @returns available or not
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @param pszExtFunctionName
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncbool VBoxIsExtensionAvailable(const char *pszExtFunctionName);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Query the specified cached parameter
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @returns requested cached value
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @param type Parameter type (Note: minimal checks only!)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Query the specified cached texture level parameter
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @returns requested cached value
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @param type Parameter type (Note: minimal checks only!)
aaeb2e2f6ed5b164f1dec9a16a7adeb84f64cf31vboxsyncGLint glInternalGetTexLevelParameteriv(GLenum type);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Query the number of bytes required for a pixel in the specified format
7e960d3a0a8a3a84d7aba2cca45d72b1c31cc97bvboxsync * @returns requested pixel size
78a205e3fc6719d59e8c561b3d287d3a4f879852vboxsync * @param type Parameter type
50df3da42ff6589b0ecc4f50f2288811bc370186vboxsyncGLint glInternalGetPixelFormatElements(GLenum format);
50df3da42ff6589b0ecc4f50f2288811bc370186vboxsync * Query the size of the specified data type
50df3da42ff6589b0ecc4f50f2288811bc370186vboxsync * @returns type size or 0 if unknown type
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @param type data type
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif /* __VBOXOGL_H__ */