server.h revision f0b06b8e4de2a0d9ddb10ac0a30d68fafd73d8c1
/* Copyright (c) 2001, Stanford University
* All rights reserved.
*
* See the file LICENSE.txt for information on redistributing this software.
*/
#ifndef CR_SERVER_H
#define CR_SERVER_H
#include "cr_protocol.h"
#include "cr_glstate.h"
#include "spu_dispatch_table.h"
#include "state/cr_currentpointers.h"
#include "cr_server.h"
#ifdef VBOX_WITH_CRHGSMI
# include <VBox/VBoxVideo.h>
extern uint8_t* g_pvVRamBase;
{
}
DECLINLINE(void) crServerCrHgsmiCmdComplete(struct VBOXVDMACMD_CHROMIUM_CMD *pCmd, int cmdProcessingRc)
{
}
} while (0)
if (CRVBOXHGSMI_CMDDATA_IS_SET(_pData)) { \
} \
} while (0)
#endif
/*
* This is the base number for window and context IDs
*/
#define MAGIC_OFFSET 5000
/* Semaphore wait queue node */
typedef struct _wqnode {
RunQueue *q;
} wqnode;
typedef struct {
typedef struct {
typedef struct {
/* glProgramLocalParameterARB, glProgramParameterNV */
void crServerSetVBoxConfiguration();
void crServerSetVBoxConfigurationHGCM();
void crServerInitDispatch(void);
void crServerWriteback(void);
void crServerSerializeRemoteStreams(void);
int crServerGetCurrentEye(void);
GLint crServerDispatchCreateContextEx(const char *dpyName, GLint visualBits, GLint shareCtx, GLint preloadCtxID, int32_t internalID);
GLint crServerMuralInit(CRMuralInfo *mural, const char *dpyName, GLint visBits, GLint preloadWinID);
#define CR_SERVER_REDIR_F_NONE 0x00
/* the data should be displayed on host (unset when is on or when CR_SERVER_REDIR_F_FBO_RAM_VMFB is set) */
#define CR_SERVER_REDIR_F_DISPLAY 0x01
/* guest window data get redirected to FBO on host */
#define CR_SERVER_REDIR_F_FBO 0x02
/* used with CR_SERVER_REDIR_F_FBO only
* indicates that FBO data should be copied to RAM for further processing */
#define CR_SERVER_REDIR_F_FBO_RAM 0x04
/* used with CR_SERVER_REDIR_F_FBO_RAM only
* indicates that FBO data should be passed to VRDP backend */
#define CR_SERVER_REDIR_F_FBO_RAM_VRDP 0x08
/* used with CR_SERVER_REDIR_F_FBO_RAM only
* indicates that FBO data should be passed to VM Framebuffer */
#define CR_SERVER_REDIR_F_FBO_RAM_VMFB 0x10
/* used with CR_SERVER_REDIR_F_FBO_RAM only
* makes the RPW (Read Pixels Worker) mechanism to be used for GPU memory aquisition */
#define CR_SERVER_REDIR_F_FBO_RPW 0x20
#define CR_SERVER_REDIR_F_ALL 0x3f
#define CR_SERVER_REDIR_FGROUP_REQUIRE_FBO_RAM (CR_SERVER_REDIR_F_FBO_RAM_VRDP | CR_SERVER_REDIR_F_FBO_RAM_VMFB | CR_SERVER_REDIR_F_FBO_RPW)
{
/* sanitize values */
return value;
}
{
&& !mural->fRootVrOn ? CrVrScrCompositorEntryIsInList(&mural->CEntry) : CrVrScrCompositorEntryIsInList(&mural->RootVrCEntry);
}
{
}
{
}
/* display worker thread.
* see comments for CR_SERVER_RPW struct definition in cr_server.h */
{
}
#ifdef DEBUG_misha
# define CR_SERVER_RPW_DEBUG
#endif
/* *
* _name : Draw, Submitted, Worker, Gpu
*/
#ifdef CR_SERVER_RPW_DEBUG
#else
# define crServerRpwEntryDbgVerify(_pE) do {} while (0)
#endif
} while (0)
} while (0)
} while (0)
} while (0)
#define CR_SERVER_RPW_ENTRY_TEX(_pEntry, _name) ((_pEntry)->aidWorkerTexs[(_pEntry)->iTex##_name - 1])
#define CR_SERVER_RPW_ENTRY_PBO_COMPLETED(_pEntry) ((_pEntry)->aidPBOs[CR_SERVER_RPW_ENTRY_PBO_NEXT_ID((_pEntry)->iCurPBO)])
#define CR_SERVER_RPW_ENTRY_PBO_FLIP(_pEntry) do { \
} while (0)
#ifdef CR_SERVER_RPW_DEBUG
{
int tstMask = 0;
#define CR_VERVER_RPW_ENTRY_DBG_CHECKVAL(_v) do { \
} while (0)
}
#endif
{
}
{
}
int crServerRpwEntryInit(CR_SERVER_RPW *pWorker, CR_SERVER_RPW_ENTRY *pEntry, uint32_t width, uint32_t height, PFNCR_SERVER_RPW_DATA pfnData);
int crServerRpwEntryResize(CR_SERVER_RPW *pWorker, CR_SERVER_RPW_ENTRY *pEntry, uint32_t width, uint32_t height);
DECLINLINE(void) crServerRpwEntryDrawSettingsToTex(const CR_SERVER_RPW_ENTRY *pEntry, VBOXVR_TEXTURE *pTex)
{
}
/**/
typedef struct CR_SERVER_CTX_SWITCH
{
{
if (pCurrentMural)
{
}
else
{
idDrawFBO = 0;
idReadFBO = 0;
}
}
{
}
#endif /* CR_SERVER_H */