891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder/* Copyright (c) 2001, Stanford University
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder * All rights reserved.
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder *
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder * See the file LICENSE.txt for information on redistributing this software.
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski */
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder#ifndef CR_STATE_FEEDBACK_H
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder#define CR_STATE_FEEDBACK_H
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski#include "state/cr_statetypes.h"
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski#include <iprt/cdefs.h>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski#ifdef __cplusplus
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowskiextern "C" {
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski#endif
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski#define MAX_NAME_STACK_DEPTH 64
d1126d58419412635564085406d3779325b33ae0Till Mossakowski
8731f7b93b26083dc34a2c0937cd6493b42f2c2cTill Mossakowskitypedef struct {
8731f7b93b26083dc34a2c0937cd6493b42f2c2cTill Mossakowski CRbitvalue dirty[CR_MAX_BITARRAY];
8731f7b93b26083dc34a2c0937cd6493b42f2c2cTill Mossakowski} CRFeedbackBits;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowskitypedef struct {
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski CRbitvalue dirty[CR_MAX_BITARRAY];
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski} CRSelectionBits;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowskitypedef struct {
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski GLenum type;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski GLuint mask;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski GLfloat *buffer;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski GLuint bufferSize;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski GLuint count;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski} CRFeedbackState;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowskitypedef struct {
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder GLuint *buffer;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski GLuint bufferSize;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski GLuint bufferCount;
c0b6cd35d7f5da7483964a378fefc3bb0f519d9eTill Mossakowski GLuint hits;
c0b6cd35d7f5da7483964a378fefc3bb0f519d9eTill Mossakowski GLuint nameStackDepth;
c0b6cd35d7f5da7483964a378fefc3bb0f519d9eTill Mossakowski GLuint nameStack[MAX_NAME_STACK_DEPTH];
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski GLboolean hitFlag;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski GLfloat hitMinZ, hitMaxZ;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski} CRSelectionState;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowskiextern DECLEXPORT(void) crStateFeedbackDiff(CRFeedbackState *from, CRFeedbackState *to,
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski CRFeedbackBits *bb, CRbitvalue *bitID);
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowskiextern DECLEXPORT(void) crStateFeedbackSwitch(CRFeedbackBits *bb, CRbitvalue *bitID,
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski CRFeedbackState *from, CRFeedbackState *to);
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski#ifdef __cplusplus
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski}
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski#endif
8731f7b93b26083dc34a2c0937cd6493b42f2c2cTill Mossakowski
8731f7b93b26083dc34a2c0937cd6493b42f2c2cTill Mossakowski#endif /* CR_STATE_FEEDBACK_H */
8731f7b93b26083dc34a2c0937cd6493b42f2c2cTill Mossakowski