packspu_context.c revision 5586ae4e5888ee52fdd4b024f6340f7fc5a5f02f
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* Copyright (c) 2001, Stanford University
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * All rights reserved
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * See the file LICENSE.txt for information on redistributing this software.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Allocate a new ThreadInfo structure, setup a connection to the
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * server, allocate/init a packer context, bind this ThreadInfo to
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * the calling thread with crSetTSD().
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * We'll always call this function at least once even if we're not
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * using threads.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync for (i=0; i<MAX_THREADS; ++i)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync /* connect to the server */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync thread->netServer.name = crStrdup( pack_spu.name );
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync thread->netServer.buffer_size = pack_spu.buffer_size;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync /* packer setup */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync thread->packer = crPackNewContext( pack_spu.swap );
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync crPackInitBuffer( &(thread->buffer), crNetAlloc(thread->netServer.conn),
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync thread->netServer.conn->buffer_size, thread->netServer.conn->mtu );
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync thread->buffer.canBarf = thread->netServer.conn->Barf ? GL_TRUE : GL_FALSE;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync crPackSetBuffer( thread->packer, &thread->buffer );
#ifdef CHROMIUM_THREADSAFE
if (!CRPACKSPU_IS_WDDM_CRHGSMI())
#ifdef CHROMIUM_THREADSAFE
return thread;
if (thread)
void PACKSPU_APIENTRY
void PACKSPU_APIENTRY
crError("Should not be here since idxThreadInUse should be always 0 for the dummy connection created in packSPUInit!");
for (i=0; i<MAX_THREADS; ++i)
#ifdef CHROMIUM_THREADSAFE
if (CRPACKSPU_IS_WDDM_CRHGSMI())
if (!con)
if (!thread)
#ifdef CHROMIUM_THREADSAFE
if (CRPACKSPU_IS_WDDM_CRHGSMI())
packspu_VBoxConChromiumParametervCR(GLint con, GLenum target, GLenum type, GLsizei count, const GLvoid *values)
#ifdef CHROMIUM_THREADSAFE
if (CRPACKSPU_IS_WDDM_CRHGSMI())
if (!con)
if (!thread)
#ifdef CHROMIUM_THREADSAFE
if (CRPACKSPU_IS_WDDM_CRHGSMI())
int slot;
#ifdef CHROMIUM_THREADSAFE
if (CRPACKSPU_IS_WDDM_CRHGSMI())
if (!con)
if (!thread)
if (shareCtx > 0) {
if (serverCtx < 0) {
#ifdef CHROMIUM_THREADSAFE
if (CRPACKSPU_IS_WDDM_CRHGSMI())
if (CRPACKSPU_IS_WDDM_CRHGSMI())
#ifdef CHROMIUM_THREADSAFE
if (CRPACKSPU_IS_WDDM_CRHGSMI())
if (CRPACKSPU_IS_WDDM_CRHGSMI())
if (!CRPACKSPU_IS_WDDM_CRHGSMI())
if (CRPACKSPU_IS_WDDM_CRHGSMI())
if (!CRPACKSPU_IS_WDDM_CRHGSMI())
if (!thread) {
if (ctx) {
if (CRPACKSPU_IS_WDDM_CRHGSMI())
if (thread->currentContext && newCtx != thread->currentContext && thread->currentContext->fCheckZerroVertAttr)
if (CRPACKSPU_IS_WDDM_CRHGSMI())
if (!thread)
serverCtx = 0;
if (serverCtx)
GET_THREAD(t);
CRASSERT(t);