pack_beginend.c revision e0e0c19eefceaf5d4ec40f9466b58a771f50e799
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/* Copyright (c) 2001, Stanford University
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * All rights reserved
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync *
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * See the file LICENSE.txt for information on redistributing this software.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "packer.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "cr_protocol.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid PACK_APIENTRY crPackBegin( GLenum mode )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GET_PACKER_CONTEXT(pc);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync unsigned char *data_ptr;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync (void) pc;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if (pc->buffer.canBarf)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if (!pc->buffer.holds_BeginEnd)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync pc->Flush( pc->flush_arg );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync pc->buffer.in_BeginEnd = 1;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync pc->buffer.holds_BeginEnd = 1;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GET_BUFFERED_POINTER( pc, 4 );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync pc->current.begin_data = data_ptr;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync pc->current.begin_op = pc->buffer.opcode_current;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync pc->current.attribsUsedMask = 0;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync WRITE_DATA( 0, GLenum, mode );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync WRITE_OPCODE( pc, CR_BEGIN_OPCODE );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid PACK_APIENTRY crPackBeginSWAP( GLenum mode )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GET_PACKER_CONTEXT(pc);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync unsigned char *data_ptr;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync (void) pc;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if (pc->buffer.canBarf)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if (!pc->buffer.holds_BeginEnd)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync pc->Flush( pc->flush_arg );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync pc->buffer.in_BeginEnd = 1;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync pc->buffer.holds_BeginEnd = 1;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GET_BUFFERED_POINTER( pc, 4 );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync pc->current.begin_data = data_ptr;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync pc->current.begin_op = pc->buffer.opcode_current;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync pc->current.attribsUsedMask = 0;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync WRITE_DATA( 0, GLenum, SWAP32(mode) );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync WRITE_OPCODE( pc, CR_BEGIN_OPCODE );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid PACK_APIENTRY crPackEnd( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GET_PACKER_CONTEXT(pc);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync unsigned char *data_ptr;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync (void) pc;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GET_BUFFERED_POINTER_NO_ARGS( pc );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync WRITE_OPCODE( pc, CR_END_OPCODE );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync pc->buffer.in_BeginEnd = 0;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid PACK_APIENTRY crPackEndSWAP( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GET_PACKER_CONTEXT(pc);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync unsigned char *data_ptr;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync (void) pc;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GET_BUFFERED_POINTER_NO_ARGS( pc );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync WRITE_OPCODE( pc, CR_END_OPCODE );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync pc->buffer.in_BeginEnd = 0;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync