state.h revision 81b3101ea5e60964f67c97185bbd43dbf75c5ab5
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#ifndef STATE_H
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#define STATE_H
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "cr_glstate.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifdef CHROMIUM_THREADSAFE
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "cr_threads.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
81b3101ea5e60964f67c97185bbd43dbf75c5ab5vboxsynctypedef struct _crCheckIDHWID {
81b3101ea5e60964f67c97185bbd43dbf75c5ab5vboxsync GLuint id, hwid;
81b3101ea5e60964f67c97185bbd43dbf75c5ab5vboxsync} crCheckIDHWID_t;
81b3101ea5e60964f67c97185bbd43dbf75c5ab5vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncextern SPUDispatchTable diff_api;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncextern CRStateBits *__currentBits;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#define GetCurrentBits() __currentBits
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifdef CHROMIUM_THREADSAFE
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncextern CRtsd __contextTSD;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#define GetCurrentContext() (CRContext *) crGetTSD(&__contextTSD)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#else
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncextern CRContext *__currentContext;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#define GetCurrentContext() __currentContext
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncextern void crStateTextureInitTextureObj (CRContext *ctx, CRTextureObj *tobj, GLuint name, GLenum target);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncextern void crStateTextureInitTextureFormat( CRTextureLevel *tl, GLenum internalFormat );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/* Normally these functions would have been in cr_bufferobject.h but
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * that led to a number of issues.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crStateBufferObjectInit(CRContext *ctx);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crStateBufferObjectDestroy (CRContext *ctx);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crStateBufferObjectDiff(CRBufferObjectBits *bb, CRbitvalue *bitID,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRContext *fromCtx, CRContext *toCtx);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crStateBufferObjectSwitch(CRBufferObjectBits *bb, CRbitvalue *bitID,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRContext *fromCtx, CRContext *toCtx);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/* These would normally be in cr_client.h */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crStateClientDiff(CRClientBits *cb, CRbitvalue *bitID, CRContext *from, CRContext *to);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crStateClientSwitch(CRClientBits *cb, CRbitvalue *bitID, CRContext *from, CRContext *to);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynccrStateGetTextureObjectAndImage(CRContext *g, GLenum texTarget, GLint level,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRTextureObj **obj, CRTextureLevel **img);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif