/* Copyright (c) 2001, Stanford University
* All rights reserved.
*
* See the file LICENSE.txt for information on redistributing this software.
*/
#ifndef CR_PACKSPU_H
#define CR_PACKSPU_H
#ifdef WINDOWS
#else
#define PACKSPU_APIENTRY
#endif
#include "cr_glstate.h"
#include "cr_netserver.h"
#include "cr_pack.h"
#include "cr_spu.h"
#include "cr_threads.h"
#include "state/cr_client.h"
#ifdef VBOX_WITH_CRPACKSPU_DUMPER
# include "cr_dump.h"
#endif
extern uint32_t g_u32VBoxHostCaps;
struct zvabuffer_info_t
{
/* GL_ARRAY_BUFFER_ARB buffer */
/* buffer length */
/* number of values stored in the buffer currently */
/* current buffer value */
union
{
GLfloat f[4];
GLshort s[4];
} Value;
};
struct thread_info_t {
unsigned long id;
int BeginEndState;
int writeback;
};
struct context_info_t {
};
typedef struct {
int id;
int swap;
/* config options */
int swapbuffer_sync;
int ReadPixels;
char *name;
int buffer_size;
#if defined(WINDOWS) && defined(VBOX_WITH_WDDM)
bool bRunningUnderWDDM;
#endif
#ifdef VBOX_WITH_CRPACKSPU_DUMPER
#endif
int numContexts;
} PackSPU;
#ifdef CHROMIUM_THREADSAFE
extern CRmutex _PackMutex;
#else
#endif
#define GET_CONTEXT(C) \
GET_THREAD(thread); \
#ifdef DEBUG_misha
#else
#endif
if (g_u32VBoxHostCaps & CR_VBOX_CAP_CMDVBVA) { \
(_writeback) = 0; \
break; \
} \
} while (0)
#else
#endif
extern void packspuCreateFunctions( void );
#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
, struct VBOXUHGSMI *pHgsmi
#endif
);
extern void packspuFlush( void *arg );
extern void packspuInitStrings();
extern GLboolean packspuSyncOnFlushes();
extern ThreadInfo *packspuNewThread(
#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
struct VBOXUHGSMI *pHgsmi
#endif
);
#endif /* CR_PACKSPU_H */