9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync * VirtualBox OpenGL command pack/unpack header
c58f1213e628a545081c70e26c6b67a841cff880vboxsync * Copyright (C) 2006-2010 Oracle Corporation
c98fb3e16fcd571a790eab772c0c66173d225205vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
c98fb3e16fcd571a790eab772c0c66173d225205vboxsync * available from http://www.virtualbox.org. This file is free software;
c98fb3e16fcd571a790eab772c0c66173d225205vboxsync * you can redistribute it and/or modify it under the terms of the GNU
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * General Public License (GPL) as published by the Free Software
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * 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 * The contents of this file may alternatively be used under the terms
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * of the Common Development and Distribution License Version 1.0
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * VirtualBox OSE distribution, in which case the provisions of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * CDDL are applicable instead of those of the GPL.
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * You may elect to license modified versions of this file under the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * terms and conditions of either the GPL or the CDDL or both.
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/************************************************************************************************************
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync * Guest side macro's for packing OpenGL function calls into the command buffer. *
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync ************************************************************************************************************/
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync OGL_CMD(op, 3, sizeof(p1)+sizeof(p2)+sizeof(p3)); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync OGL_CMD(op, 4, sizeof(p1)+sizeof(p2)+sizeof(p3)+sizeof(p4)); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync OGL_CMD(op, 5, sizeof(p1)+sizeof(p2)+sizeof(p3)+sizeof(p4)+sizeof(p5)); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP6(op, p1, p2, p3, p4, p5, p6) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync OGL_CMD(op, 6, sizeof(p1)+sizeof(p2)+sizeof(p3)+sizeof(p4)+sizeof(p5)+sizeof(p6)); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP7(op, p1, p2, p3, p4, p5, p6, p7) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync OGL_CMD(op, 7, sizeof(p1)+sizeof(p2)+sizeof(p3)+sizeof(p4)+sizeof(p5)+sizeof(p6)+sizeof(p7)); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP8(op, p1, p2, p3, p4, p5, p6, p7, p8) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync OGL_CMD(op, 8, sizeof(p1)+sizeof(p2)+sizeof(p3)+sizeof(p4)+sizeof(p5)+sizeof(p6)+sizeof(p7)+sizeof(p8)); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* last parameter is a memory block */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP3PTR(op, p1, p2, size, p3ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP4PTR(op, p1, p2, p3, size, p4ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync OGL_CMD(op, 4, sizeof(p1)+sizeof(p2)+sizeof(p3)+size); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP5PTR(op, p1, p2, p3, p4, size, p5ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync OGL_CMD(op, 5, sizeof(p1)+sizeof(p2)+sizeof(p3)+sizeof(p4)+size); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP6PTR(op, p1, p2, p3, p4, p5, size, p6ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync OGL_CMD(op, 6, sizeof(p1)+sizeof(p2)+sizeof(p3)+sizeof(p4)+sizeof(p5)+size); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP7PTR(op, p1, p2, p3, p4, p5, p6, size, p7ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync OGL_CMD(op, 7, sizeof(p1)+sizeof(p2)+sizeof(p3)+sizeof(p4)+sizeof(p5)+sizeof(p6)+size); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP8PTR(op, p1, p2, p3, p4, p5, p6, p7, size, p8ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync OGL_CMD(op, 8, sizeof(p1)+sizeof(p2)+sizeof(p3)+sizeof(p4)+sizeof(p5)+sizeof(p6)+sizeof(p7)+size); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP9PTR(op, p1, p2, p3, p4, p5, p6, p7, p8, size, p9ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync OGL_CMD(op, 9, sizeof(p1)+sizeof(p2)+sizeof(p3)+sizeof(p4)+sizeof(p5)+sizeof(p6)+sizeof(p7)+sizeof(p8)+size); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP10PTR(op, p1, p2, p3, p4, p5, p6, p7, p8, p9, size, p10ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync OGL_CMD(op, 10, sizeof(p1)+sizeof(p2)+sizeof(p3)+sizeof(p4)+sizeof(p5)+sizeof(p6)+sizeof(p7)+sizeof(p8)+sizeof(p9)+size); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* two memory blocks */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP2PTRPTR(op, size1, p1ptr, size2, p2ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP3PTRPTR(op, p1, size2, p2ptr, size3, p3ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* Note: sync operations always set the last error */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* sync operation that returns a value */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP1_RET(rettype, op, p1) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP2_RET(rettype, op, p1, p2) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP3_RET(rettype, op, p1, p2, p3) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP4_RET(rettype, op, p1, p2, p3, p4) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP5_RET(rettype, op, p1, p2, p3, p4, p5) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP6_RET(rettype, op, p1, p2, p3, p4, p5, p6) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP7_RET(rettype, op, p1, p2, p3, p4, p5, p6, p7) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* Sync operation whose last parameter is a block of memory */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP2_PTR(op, p1, size, p2ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP5_PTR(op, p1, p2, p3, p4, size, p5ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP2PTR(op, p1, p2, p3, p4, size, p5ptr); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP6_PTR(op, p1, p2, p3, p4, p5, size, p6ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP6PTR(op, p1, p2, p3, p4, p5, size, p6ptr); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP7_PTR(op, p1, p2, p3, p4, p5, p6, size, p7ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP7PTR(op, p1, p2, p3, p4, p5, p6, size, p7ptr); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* Sync operation whose last parameter is a block of memory in which results are returned */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP1_PASS_PTR(op, size, p1ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP2_PASS_PTR(op, p1, size, p2ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP3_PASS_PTR(op, p1, p2, size, p3ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP4_PASS_PTR(op, p1, p2, p3, size, p4ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP5_PASS_PTR(op, p1, p2, p3, p4, size, p5ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP6_PASS_PTR(op, p1, p2, p3, p4, p5, size, p6ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP7_PASS_PTR(op, p1, p2, p3, p4, p5, p6, size, p7ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* Sync operation whose last parameter is a block of memory and return a value */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP2_PTR_RET(rettype, op, p1, size, p2ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP4_PTR_RET(rettype, op, p1, p2, p3, size, p4ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP4PTR(op, p1, p2, p3, size, p4ptr); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP5_PTR_RET(rettype, op, p1, p2, p3, p4, size, p5ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP5PTR(op, p1, p2, p3, p4, size, p5ptr); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP6_PTR_RET(rettype, op, p1, p2, p3, p4, p5, size, p6ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP6PTR(op, p1, p2, p3, p4, p5, size, p6ptr); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP7_PTR_RET(rettype, op, p1, p2, p3, p4, p5, p6, size, p7ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP7PTR(op, p1, p2, p3, p4, p5, p6, size, p7ptr); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* Sync operation whose last parameter is a block of memory in which results are returned and return a value */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP2_PASS_PTR_RET(rettype, op, p1, size, p2ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync rettype retval = (rettype)VBoxOGLFlushPtr(p2ptr, size);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP4_PASS_PTR_RET(rettype, op, p1, p2, p3, size, p4ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync rettype retval = (rettype)VBoxOGLFlushPtr(p4ptr, size);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP5_PASS_PTR_RET(rettype, op, p1, p2, p3, p4, size, p5ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync rettype retval = (rettype)VBoxOGLFlushPtr(p5ptr, size);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP6_PASS_PTR_RET(rettype, op, p1, p2, p3, p4, p5, size, p6ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync rettype retval = (rettype)VBoxOGLFlushPtr(p6ptr, size);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP7_PASS_PTR_RET(rettype, op, p1, p2, p3, p4, p5, p6, size, p7ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync rettype retval = (rettype)VBoxOGLFlushPtr(p7ptr, size);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* Generate async functions elements in the command queue */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (void) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type a) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type a) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function)##v (const Type *v) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type a, Type b) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type a, Type b) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function)##v (const Type *v) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type a, Type b, Type c) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type a, Type b, Type c) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function)##v (const Type *v) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type a, Type b, Type c, Type d) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type a, Type b, Type c, Type d) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function)##v (const Type *v) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP4(Function, v[0], v[1], v[2], v[3]); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type a, Type b, Type c, Type d, Type e, Type f) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type1 a, Type2 b) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC2V(Function, Type1, Type2) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type1 a, Type2 b) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function)##v (Type1 a, const Type2 *v) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC3(Function, Type1, Type2, Type3) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type1 a, Type2 b, Type3 c) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC3V(Function, Type1, Type2, Type3) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type1 a, Type2 b, Type3 c) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function)##v (Type1 a, Type2 b, const Type3 *v) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC4(Function, Type1, Type2, Type3, Type4) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type1 a, Type2 b, Type3 c, Type4 d) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC5(Function, Type1, Type2, Type3, Type4, Type5) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type1 a, Type2 b, Type3 c, Type4 d, Type5 e) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC6(Function, Type1, Type2, Type3, Type4, Type5, Type6) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type1 a, Type2 b, Type3 c, Type4 d, Type5 e, Type6 f) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC7(Function, Type1, Type2, Type3, Type4, Type5, Type6, Type7) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type1 a, Type2 b, Type3 c, Type4 d, Type5 e, Type6 f, Type7 g) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC8(Function, Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type1 a, Type2 b, Type3 c, Type4 d, Type5 e, Type6 f, Type7 g, Type8 h) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP8(Function, a, b, c, d, e, f, g, h); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC9(Function, Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8 ,Type9) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void APIENTRY VBOX_OGL_NAME_PREFIX(Function) (Type1 a, Type2 b, Type3 c, Type4 d, Type5 e, Type6 f, Type7 g, Type8 h, Type9 i) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP9(Function, a, b, c, d, e, f, g, h, i); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/************************************************************************************************************
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync * Host side macro's for generating OpenGL function calls from the packed commands in the command buffer. *
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync ************************************************************************************************************/
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_NAME_PREFIX(Function) vboxgl##Function
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_CHECK_MAGIC(pParVal) Assert(pParVal->Magic == VBOX_OGL_CMD_MAGIC)
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync pParam = RT_ALIGN_PT(pParam, VBOX_OGL_CMD_ALIGN, uint8_t *);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync PVBOX_OGL_VAR_PARAM pParVal = (PVBOX_OGL_VAR_PARAM)pParam; \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync pParam = RT_ALIGN_PT(pParam, VBOX_OGL_CMD_ALIGN, uint8_t *);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync pParam = RT_ALIGN_PT(pParam, VBOX_OGL_CMD_ALIGN, uint8_t *);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP4(op, Type1, Type2, Type3, Type4) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP5(op, Type1, Type2, Type3, Type4, Type5) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP6(op, Type1, Type2, Type3, Type4, Type5, Type6) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP7(op, Type1, Type2, Type3, Type4, Type5, Type6, Type7) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP8(op, Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* last parameter is a memory block */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP3PTR(op, Type1, Type2, Type3) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP4PTR(op, Type1, Type2, Type3, Type4) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP5PTR(op, Type1, Type2, Type3, Type4, Type5) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP6PTR(op, Type1, Type2, Type3, Type4, Type5, Type6) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP7PTR(op, Type1, Type2, Type3, Type4, Type5, Type6, Type7) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP8PTR(op, Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP9PTR(op, Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP10PTR(op, Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* two memory blocks */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_OP3PTRPTR(op, Type1, Type2, Type3) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* Note: sync operations always set the last error */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* sync operation that returns a value */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP1_RET(rettype, op, Type1) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP2_RET(rettype, op, Type1, Type2) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP3_RET(rettype, op, Type1, Type2, Type3) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* Sync operation whose last parameter is a block of memory */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP5_PTR(op, p1, p2, p3, p4, p5ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP2PTR(op, p1, p2, p3, p4, size, p5ptr);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP6_PTR(op, p1, p2, p3, p4, p5, p6ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP6PTR(op, p1, p2, p3, p4, p5, size, p6ptr);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP7_PTR(op, p1, p2, p3, p4, p5, p6, p7ptr) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP7PTR(op, p1, p2, p3, p4, p5, p6, p7ptr);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* Sync operation whose last parameter is a block of memory in which results are returned */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync Assert(pClient->pLastParam && pClient->cbLastParam); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP2_PASS_PTR(op, Type1, Type2) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync Assert(pClient->pLastParam && pClient->cbLastParam); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP3_PASS_PTR(op, Type1, Type2, Type3) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync Assert(pClient->pLastParam && pClient->cbLastParam); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP4_PASS_PTR(op, Type1, Type2, Type3, Type4) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync Assert(pClient->pLastParam && pClient->cbLastParam); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP5_PASS_PTR(op, Type1, Type2, Type3, Type4, Type5) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync Assert(pClient->pLastParam && pClient->cbLastParam); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync gl##op(p1, p2, p3, p4, (Type5 *)pClient->pLastParam);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP6_PASS_PTR(op, Type1, Type2, Type3, Type4, Type5, Type6) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync Assert(pClient->pLastParam && pClient->cbLastParam); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync gl##op(p1, p2, p3, p4, p5, (Type6 *)pClient->pLastParam);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP7_PASS_PTR(op, Type1, Type2, Type3, Type4, Type5, Type6, Type7) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync Assert(pClient->pLastParam && pClient->cbLastParam); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync gl##op(p1, p2, p3, p4, p5, p6, (Type7 *)pClient->pLastParam);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* Sync operation whose last parameter is a block of memory and returns a value */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP2_PTR_RET(rettype, op, Type1, Type2) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP4_PTR_RET(rettype, op, Type1, Type2, Type3, Type4) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP5_PTR_RET(rettype, op, Type1, Type2, Type3, Type4, Type5) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP6_PTR_RET(rettype, op, Type1, Type2, Type3, Type4, Type5, Type6) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync pClient->lastretval = gl##op(p1, p2, p3, p4, p5, p6);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define VBOX_OGL_GEN_SYNC_OP7_PTR_RET(rettype, op, Type1, Type2, Type3, Type4, Type5, Type6, Type7) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync pClient->lastretval = gl##op(p1, p2, p3, p4, p5, p6, p7);
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* Generate async functions elements in the command queue */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void VBOX_OGL_NAME_PREFIX(Function) (VBOXOGLCTX *pClient, uint8_t *pCmdBuffer) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void VBOX_OGL_NAME_PREFIX(Function) (VBOXOGLCTX *pClient, uint8_t *pCmdBuffer) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_FUNC1V(Function, Type) GL_GEN_FUNC1(Function, Type)
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void VBOX_OGL_NAME_PREFIX(Function) (VBOXOGLCTX *pClient, uint8_t *pCmdBuffer) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_FUNC2V(Function, Type) GL_GEN_FUNC2(Function, Type)
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void VBOX_OGL_NAME_PREFIX(Function) (VBOXOGLCTX *pClient, uint8_t *pCmdBuffer) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_FUNC3V(Function, Type) GL_GEN_FUNC3(Function, Type)
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void VBOX_OGL_NAME_PREFIX(Function) (VBOXOGLCTX *pClient, uint8_t *pCmdBuffer) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP4(Function, Type, Type, Type, Type); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_FUNC4V(Function, Type) GL_GEN_FUNC4(Function, Type)
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void VBOX_OGL_NAME_PREFIX(Function) (VBOXOGLCTX *pClient, uint8_t *pCmdBuffer) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP6(Function, Type, Type, Type, Type, Type, Type); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void VBOX_OGL_NAME_PREFIX(Function) (VBOXOGLCTX *pClient, uint8_t *pCmdBuffer) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC2V(Function, Type) GL_GEN_VPAR_FUNC2(Function, Type)
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC3(Function, Type1, Type2, Type3) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void VBOX_OGL_NAME_PREFIX(Function) (VBOXOGLCTX *pClient, uint8_t *pCmdBuffer) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC3V(Function, Type) GL_GEN_VPAR_FUNC3(Function, Type)
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC4(Function, Type1, Type2, Type3, Type4) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void VBOX_OGL_NAME_PREFIX(Function) (VBOXOGLCTX *pClient, uint8_t *pCmdBuffer) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP4(Function, Type1, Type2, Type3, Type4); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC5(Function, Type1, Type2, Type3, Type4, Type5) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void VBOX_OGL_NAME_PREFIX(Function) (VBOXOGLCTX *pClient, uint8_t *pCmdBuffer) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP5(Function, Type1, Type2, Type3, Type4 ,Type5); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC6(Function, Type1, Type2, Type3, Type4, Type5, Type6) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void VBOX_OGL_NAME_PREFIX(Function) (VBOXOGLCTX *pClient, uint8_t *pCmdBuffer) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP6(Function, Type1, Type2, Type3, Type4 ,Type5, Type6); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC7(Function, Type1, Type2, Type3, Type4, Type5, Type6, Type7) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void VBOX_OGL_NAME_PREFIX(Function) (VBOXOGLCTX *pClient, uint8_t *pCmdBuffer) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP7(Function, Type1, Type2, Type3, Type4 ,Type5, Type6, Type7); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC8(Function, Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void VBOX_OGL_NAME_PREFIX(Function) (VBOXOGLCTX *pClient, uint8_t *pCmdBuffer) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP8(Function, Type1, Type2, Type3, Type4 ,Type5, Type6, Type7, Type8); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#define GL_GEN_VPAR_FUNC9(Function, Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8 ,Type9) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync void VBOX_OGL_NAME_PREFIX(Function) (VBOXOGLCTX *pClient, uint8_t *pCmdBuffer) \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync VBOX_OGL_GEN_OP9(Function, Type1, Type2, Type3, Type4 ,Type5, Type6, Type7, Type8, Type9); \
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#endif /* VBOX_OGL_HOST_SIDE */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* OpenGL opcodes */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* Note: keep all three tables in sync! */
e7e589ca404045e288030a4151e57b63976cb39dvboxsynctypedef enum
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync /* Windows ICD exports */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync /* OpenGL Extensions */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#if defined(DEBUG) && defined(VBOX_OGL_WITH_CMD_STRINGS)
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsyncstatic const char *pszVBoxOGLCmd[VBOX_OGL_OP_Last] =
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glArrayElement",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glBindTexture",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glBlendFunc",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glCallList",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor3b",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor3d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor3f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor3i",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor3s",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor3ub",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor3ui",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor3us",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor4b",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor4d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor4f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor4i",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor4s",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor4ub",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor4ui",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColor4us",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glClearAccum",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glClearColor",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glClearDepth",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glClearIndex",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glClearStencil",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glAlphaFunc",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glVertex2d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glVertex2f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glVertex2i",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glVertex2s",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glVertex3d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glVertex3f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glVertex3i",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glVertex3s",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glVertex4d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glVertex4f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glVertex4i",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glVertex4s",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord1d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord1f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord1i",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord1s",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord2d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord2f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord2i",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord2s",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord3d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord3f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord3i",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord3s",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord4d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord4f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord4i",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoord4s",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glNormal3b",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glNormal3d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glNormal3f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glNormal3i",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glNormal3s",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRasterPos2d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRasterPos2f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRasterPos2i",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRasterPos2s",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRasterPos3d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRasterPos3f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRasterPos3i",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRasterPos3s",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRasterPos4d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRasterPos4f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRasterPos4i",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRasterPos4s",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glEvalCoord1d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glEvalCoord1f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glEvalCoord2d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glEvalCoord2f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glEvalPoint1",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glEvalPoint2",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glIndexd",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glIndexf",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glIndexi",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glIndexs",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glIndexub",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRotated",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRotatef",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glScaled",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glScalef",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTranslated",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTranslatef",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glDepthFunc",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glDepthMask",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glFinish",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glDeleteLists",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glCullFace",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glDeleteTextures",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glDepthRange",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glDisableClientState",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glEnableClientState",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glEvalMesh1",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glEvalMesh2",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLightModelf",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLightModelfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLightModeli",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLightModeliv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLightf",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLightfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLighti",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLightiv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLineStipple",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLineWidth",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glListBase",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glDrawArrays",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glDrawBuffer",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glEdgeFlag",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glEndList",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glCopyTexImage1D",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glCopyTexImage2D",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColorMaterial",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glMateriali",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glMaterialf",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glMaterialfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glMaterialiv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPopAttrib",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPopClientAttrib",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPopMatrix",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPopName",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPushAttrib",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPushClientAttrib",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPushMatrix",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPushName",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glReadBuffer",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexGendv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexGenf",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexGend",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexGeni",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexEnvi",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexEnvf",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexEnviv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexEnvfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexGeniv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexGenfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexParameterf",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexParameteri",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexParameterfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexParameteriv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLoadIdentity",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLoadName",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLoadMatrixd",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLoadMatrixf",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glStencilFunc",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glShadeModel",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glStencilMask",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glStencilOp",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glScissor",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glViewport",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRectdv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRectfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRectiv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRectsv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glMultMatrixd",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glMultMatrixf",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glNewList",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glIndexMask",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glInitNames",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexCoordPointer",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glVertexPointer",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColorPointer",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glEdgeFlagPointer",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glIndexPointer",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glNormalPointer",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPolygonStipple",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glCallLists",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glClipPlane",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glFrustum",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGenTextures",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glMapGrid1d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glMapGrid1f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glMapGrid2d",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glMapGrid2f",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glCopyPixels",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexImage1D",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexImage2D",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexSubImage1D",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glTexSubImage2D",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glFeedbackBuffer",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glSelectBuffer",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glIsList",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glIsTexture",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glRenderMode",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glReadPixels",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glIsEnabled",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGenLists",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPixelTransferf",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPixelTransferi",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPixelZoom",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPixelStorei",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPixelStoref",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPixelMapfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPixelMapuiv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPixelMapusv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPointSize",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPolygonMode",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPolygonOffset",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPassThrough",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glMatrixMode",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glLogicOp",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glColorMask",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glCopyTexSubImage1D",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glCopyTexSubImage2D",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glFrontFace",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glDisable",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glEnable",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glPrioritizeTextures",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetBooleanv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetDoublev",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetFloatv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetIntegerv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetLightfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetLightiv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetMaterialfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetMaterialiv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetPixelMapfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetPixelMapuiv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetPixelMapusv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetTexEnviv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetTexEnvfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetTexGendv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetTexGenfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetTexGeniv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetTexParameterfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetTexParameteriv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetClipPlane",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetPolygonStipple",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetTexLevelParameterfv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetTexLevelParameteriv",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "glGetTexImage",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync /* Windows ICD exports */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvReleaseContext",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvCreateContext",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvDeleteContext",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvCopyContext",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvSetContext",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvCreateLayerContext",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvShareLists",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvDescribeLayerPlane",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvSetLayerPaletteEntries",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvGetLayerPaletteEntries",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvRealizeLayerPalette",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvSwapLayerBuffers",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvDescribePixelFormat",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvSetPixelFormat",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "DrvSwapBuffers",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync /* OpenGL Extensions */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "wglSwapIntervalEXT",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync "wglGetSwapIntervalEXT",
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync/* OpenGL function wrappers. */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsyncstatic PFN_VBOXGLWRAPPER pfnOGLWrapper[VBOX_OGL_OP_Last] =
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync /* Windows ICD exports */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync /* OpenGL Extensions */
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsynctypedef struct
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsyncstatic PFNWGLSWAPINTERVALEXTPROC pfnwglSwapIntervalEXT = NULL;
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsyncstatic PFNWGLGETSWAPINTERVALEXTPROC pfnwglGetSwapIntervalEXT = NULL;
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync { "WGL_EXT_swap_control", "wglSwapIntervalEXT", VBOX_OGL_EXTENSION(wglSwapIntervalEXT), false },
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync { "WGL_EXT_swap_control", "wglGetSwapIntervalEXT", VBOX_OGL_EXTENSION(wglGetSwapIntervalEXT), false },
9c9df2b728333cb734a7cc7856568e9ea9dc4600vboxsync#endif /* VBOX_OGL_WITH_EXTENSION_ARRAY */