gllindrv.cpp revision 039cd2c4871a00e51af909222a34695d9cec3000
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync/** @file
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync *
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * VBox OpenGL
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync *
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * Simple buffered OpenGL functions
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync *
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * Copyright (C) 2006-2007 innotek GmbH
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync *
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * available from http://www.virtualbox.org. This file is free software;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * you can redistribute it and/or modify it under the terms of the GNU
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * General Public License as published by the Free Software Foundation,
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * distribution. VirtualBox OSE is distributed in the hope that it will
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * be useful, but WITHOUT ANY WARRANTY of any kind.
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync *
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * If you received this file as part of a commercial VirtualBox
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * distribution, then only the terms of your commercial VirtualBox
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * license agreement apply instead of the previous paragraph.
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync *
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync#include "vboxgl.h"
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync#define LOG_GROUP LOG_GROUP_SHARED_OPENGL
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync#include <VBox/log.h>
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync/**
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * Global init of VBox OpenGL for windows
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync *
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * @returns VBox error code
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncint vboxglGlobalInit()
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync return VINF_SUCCESS;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync/**
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * Client connect init
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync *
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * @returns VBox error code
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * @param pClient Client context
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncint vboxglConnect(PVBOXOGLCTX pClient)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync return VINF_SUCCESS;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync/**
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * Client disconnect cleanup
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync *
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * @returns VBox error code
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * @param pClient Client context
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncint vboxglDisconnect(PVBOXOGLCTX pClient)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync return VINF_SUCCESS;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync/* Driver functions */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvCreateContext(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvCreateContext, 4);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HDC, hdc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(uint32_t, cx);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(uint32_t, cy);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(BYTE, cColorBits);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(BYTE, iPixelType);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(BYTE, cDepthBits);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvDeleteContext(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvDeleteContext, 1);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HGLRC, hglrc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvSetContext(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvSetContext, 2);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HDC, hdc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HGLRC, hglrc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvCopyContext(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvDeleteContext, 3);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HGLRC, hglrcSrc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HGLRC, hglrcDst);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(UINT, mask);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvReleaseContext(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvReleaseContext, 1);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HGLRC, hglrc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvCreateLayerContext(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvCreateLayerContext, 5);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HDC, hdc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(int, iLayerPlane);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(uint32_t, cx);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(uint32_t, cy);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(BYTE, cColorBits);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(BYTE, iPixelType);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(BYTE, cDepthBits);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync AssertFailed();
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync /** @todo create memory dc with the parameters above */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvShareLists(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvShareLists, 3);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HGLRC, hglrc1);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HGLRC, hglrc2);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvRealizeLayerPalette(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvRealizeLayerPalette, 3);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HDC, hdc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(int, iLayerPlane);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(BOOL, bRealize);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvSwapLayerBuffers(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvSwapLayerBuffers, 2);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HDC, hdc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(UINT, fuPlanes);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvSetPixelFormat(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvSetPixelFormat, 2);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HDC, hdc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(int, iPixelFormat);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvSwapBuffers(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvSwapBuffers, 1);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HDC, hdc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvDescribeLayerPlane(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync PLAYERPLANEDESCRIPTOR plpd;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvDescribeLayerPlane, 4);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HDC, hdc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(int, iPixelFormat);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(int, iLayerPlane);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(UINT, nBytes);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync Assert(pClient->cbLastParam == nBytes);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync plpd = (PLAYERPLANEDESCRIPTOR)pClient->pLastParam;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvSetLayerPaletteEntries(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvSetLayerPaletteEntries, 5);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HDC, hdc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(int, iLayerPlane);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(int, iStart);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(int, cEntries);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_MEMPARAM(COLORREF, pcr);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvGetLayerPaletteEntries(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync COLORREF *pcr;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvGetLayerPaletteEntries, 4);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HDC, hdc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(int, iLayerPlane);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(int, iStart);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(int, cEntries);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync Assert(pClient->cbLastParam == sizeof(COLORREF)*cEntries);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pcr = (COLORREF *)pClient->pLastParam;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncvoid vboxglDrvDescribePixelFormat(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync LPPIXELFORMATDESCRIPTOR ppfd;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_CMD(DrvDescribePixelFormat, 3);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(HDC, hdc);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(int, iPixelFormat);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync OGL_PARAM(UINT, nBytes);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync Assert(pClient->cbLastParam == nBytes);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync ppfd = (LPPIXELFORMATDESCRIPTOR)pClient->pLastParam;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync pClient->lastretval = 0; /** @todo */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync}
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync