pack_framebuffer.c revision bb275959ba820112503274429509d86eb7a9c30f
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync/* $Id$ */
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync/** @file
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync * VBox OpenGL: EXT_framebuffer_object
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync */
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync/*
e64031e20c39650a7bc902a3e1aba613b9415deevboxsync * Copyright (C) 2009 Oracle Corporation
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync *
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync * available from http://www.virtualbox.org. This file is free software;
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync * you can redistribute it and/or modify it under the terms of the GNU
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync * General Public License (GPL) as published by the Free Software
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync */
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync#include "packer.h"
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync#include "cr_error.h"
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync#include "cr_string.h"
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync
ca551aca153d6df494985b5281c573ba2e3eb474vboxsyncvoid PACK_APIENTRY
ca551aca153d6df494985b5281c573ba2e3eb474vboxsynccrPackDeleteRenderbuffersEXT(GLsizei n, const GLuint * renderbuffers)
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync{
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync unsigned char *data_ptr;
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync int packet_length = sizeof(GLenum) + sizeof(n) + n*sizeof(*renderbuffers);
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync if (!renderbuffers)
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync return;
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync data_ptr = (unsigned char *) crPackAlloc(packet_length);
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync WRITE_DATA(0, GLenum, CR_DELETERENDERBUFFERSEXT_EXTEND_OPCODE);
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync WRITE_DATA(4, GLsizei, n);
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync crMemcpy(data_ptr + 8, renderbuffers, n* sizeof(*renderbuffers));
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync crHugePacket(CR_EXTEND_OPCODE, data_ptr);
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync crPackFree(data_ptr);
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync}
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync
ca551aca153d6df494985b5281c573ba2e3eb474vboxsyncvoid PACK_APIENTRY
ca551aca153d6df494985b5281c573ba2e3eb474vboxsynccrPackDeleteFramebuffersEXT(GLsizei n, const GLuint * framebuffers)
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync{
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync unsigned char *data_ptr;
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync int packet_length = sizeof(GLenum) + sizeof(n) + n*sizeof(*framebuffers);
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync if (!framebuffers)
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync return;
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync data_ptr = (unsigned char *) crPackAlloc(packet_length);
bb275959ba820112503274429509d86eb7a9c30fvboxsync WRITE_DATA(0, GLenum, CR_DELETEFRAMEBUFFERSEXT_EXTEND_OPCODE);
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync WRITE_DATA(4, GLsizei, n);
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync crMemcpy(data_ptr + 8, framebuffers, n* sizeof(*framebuffers));
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync crHugePacket(CR_EXTEND_OPCODE, data_ptr);
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync crPackFree(data_ptr);
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync}
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync
ca551aca153d6df494985b5281c573ba2e3eb474vboxsyncvoid PACK_APIENTRY
ca551aca153d6df494985b5281c573ba2e3eb474vboxsynccrPackDeleteRenderbuffersEXTSWAP(GLsizei n, const GLuint * renderbuffers)
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync{
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync (void) n;
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync (void) renderbuffers;
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync crError ("No swap version");
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync}
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync
ca551aca153d6df494985b5281c573ba2e3eb474vboxsyncvoid PACK_APIENTRY
ca551aca153d6df494985b5281c573ba2e3eb474vboxsynccrPackDeleteFramebuffersEXTSWAP(GLsizei n, const GLuint * framebuffers)
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync{
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync (void) n;
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync (void) framebuffers;
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync crError ("No swap version");
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync}