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