server_lists.c revision 01df41f7a4e5f7de195a059541d1c89676da9673
7bfdc833786b0261c468584470b4c98005500ab2vboxsync/* Copyright (c) 2001-2003, Stanford University
7bfdc833786b0261c468584470b4c98005500ab2vboxsync All rights reserved.
7bfdc833786b0261c468584470b4c98005500ab2vboxsync See the file LICENSE.txt for information on redistributing this software. */
7bfdc833786b0261c468584470b4c98005500ab2vboxsync * Notes on ID translation:
7bfdc833786b0261c468584470b4c98005500ab2vboxsync * If a server has multiple clients (in the case of parallel applications)
7bfdc833786b0261c468584470b4c98005500ab2vboxsync * and N of the clients all create a display list with ID K, does K name
7bfdc833786b0261c468584470b4c98005500ab2vboxsync * one display list or N different display lists?
7bfdc833786b0261c468584470b4c98005500ab2vboxsync * By default, there is one display list named K. If the clients put
7bfdc833786b0261c468584470b4c98005500ab2vboxsync * identical commands into list K, then this is fine. But if the clients
7bfdc833786b0261c468584470b4c98005500ab2vboxsync * each put something different into list K when they created it, then this
7bfdc833786b0261c468584470b4c98005500ab2vboxsync * is a serious problem.
7bfdc833786b0261c468584470b4c98005500ab2vboxsync * By zeroing the 'shared_display_lists' configuration option, we can tell
7bfdc833786b0261c468584470b4c98005500ab2vboxsync * the server to make list K be unique for all N clients. We do this by
7bfdc833786b0261c468584470b4c98005500ab2vboxsync * translating K into a new, unique ID dependent on which client we're
a853f8415aaf07b63c0f6b5b7e5b222a915b868evboxsync * talking to (curClient->number).
a853f8415aaf07b63c0f6b5b7e5b222a915b868evboxsync * Same story for texture objects, vertex programs, etc.
a853f8415aaf07b63c0f6b5b7e5b222a915b868evboxsync * The application can also dynamically switch between shared and private
7bfdc833786b0261c468584470b4c98005500ab2vboxsync * display lists with:
939e2ecb812c6402abcc63e7d615c5444acfd02evboxsync * glChromiumParameteri(GL_SHARED_DISPLAY_LISTS_CR, GL_TRUE)
a853f8415aaf07b63c0f6b5b7e5b222a915b868evboxsync * glChromiumParameteri(GL_SHARED_DISPLAY_LISTS_CR, GL_FALSE)
7bfdc833786b0261c468584470b4c98005500ab2vboxsync/* XXXX Note: shared/separate Program ID numbers aren't totally implemented! */
7bfdc833786b0261c468584470b4c98005500ab2vboxsync crWarning("using glNewList(GL_COMPILE_AND_EXECUTE) can confuse the crserver");
7bfdc833786b0261c468584470b4c98005500ab2vboxsync cr_server.head_spu->dispatch_table.NewList( list, mode );
a853f8415aaf07b63c0f6b5b7e5b222a915b868evboxsync CRMuralInfo *mural = client ? client->currentMural : NULL;
7bfdc833786b0261c468584470b4c98005500ab2vboxsync fbFbo = mural->aidFBOs[CR_SERVER_FBO_FB_IDX(mural)];
939e2ecb812c6402abcc63e7d615c5444acfd02evboxsync bbFbo = mural->aidFBOs[CR_SERVER_FBO_BB_IDX(mural)];
#ifndef IN_GUEST
GLsizei i;
switch (type) {
case GL_UNSIGNED_BYTE:
case GL_BYTE:
case GL_UNSIGNED_SHORT:
case GL_SHORT:
case GL_UNSIGNED_INT:
case GL_INT:
case GL_FLOAT:
case GL_2_BYTES:
case GL_3_BYTES:
case GL_4_BYTES:
if (newLists) {
return retval;
GLint i;
if (!newTextures)
crDebug("DeleteTexture: %d, pid %d, ctx %d", textures[i], (uint32_t)cr_server.curClient->pid, cr_server.currentCtxInfo->pContext->id);
void SERVER_DISPATCH_APIENTRY crServerDispatchPrioritizeTextures( GLsizei n, const GLuint * textures, const GLclampf * priorities )
GLint i;
if (!newTextures)
GLint i;
if (!pLocalProgs) {
GLsizei i;
(void) residences;
GLsizei i;
(void) residences;