/* Copyright (c) 2001, Stanford University
* All rights reserved
*
* See the file LICENSE.txt for information on redistributing this software.
*/
#include "state.h"
#include "state/cr_statetypes.h"
#include "state/cr_statefuncs.h"
#include "state_internals.h"
#include "cr_mem.h"
void
{
o->objects = crAllocHashtable();
o->currentQueryObject = 0;
}
void
{
}
static CROcclusionObject *
{
if (q) {
q->passedCounter = 0;
}
return q;
}
void STATE_APIENTRY
{
CRContext *g = GetCurrentContext();
CROcclusionState *o = &(g->occlusion);
/*CRStateBits *sb = GetCurrentBits();*/
/*CROcclusionBits *bb = &(sb->occlusion);*/
int i;
FLUSH();
if (g->current.inBeginEnd) {
return;
}
if (n < 0) {
"glDeleteQueriesARB(n < 0)");
return;
}
for (i = 0; i < n; i++) {
if (ids[i]) {
CROcclusionObject *q = (CROcclusionObject *)
if (q) {
}
}
}
}
void STATE_APIENTRY
{
CRContext *g = GetCurrentContext();
CROcclusionState *o = &(g->occlusion);
FLUSH();
if (g->current.inBeginEnd) {
return;
}
if (n < 0) {
"glGenQueriesARB(n < 0)");
return;
}
if (start) {
GLint i;
for (i = 0; i < n; i++)
}
else {
}
}
{
CRContext *g = GetCurrentContext();
CROcclusionState *o = &(g->occlusion);
FLUSH();
if (g->current.inBeginEnd) {
return GL_FALSE;
}
return GL_TRUE;
else
return GL_FALSE;
}
void STATE_APIENTRY
{
CRContext *g = GetCurrentContext();
CROcclusionState *o = &(g->occlusion);
FLUSH();
if (g->current.inBeginEnd) {
return;
}
switch (pname) {
break;
case GL_CURRENT_QUERY_ARB:
*params = o->currentQueryObject;
break;
default:
"glGetGetQueryivARB(pname)");
return;
}
}
void STATE_APIENTRY
{
CRContext *g = GetCurrentContext();
CROcclusionState *o = &(g->occlusion);
FLUSH();
if (g->current.inBeginEnd) {
return;
}
if (!q || q->active) {
"glGetQueryObjectivARB");
return;
}
switch (pname) {
case GL_QUERY_RESULT_ARB:
*params = q->passedCounter;
break;
break;
default:
"glGetQueryObjectivARB(pname)");
return;
}
}
void STATE_APIENTRY
{
CRContext *g = GetCurrentContext();
CROcclusionState *o = &(g->occlusion);
FLUSH();
if (g->current.inBeginEnd) {
return;
}
if (!q || q->active) {
"glGetQueryObjectuivARB");
return;
}
switch (pname) {
case GL_QUERY_RESULT_ARB:
*params = q->passedCounter;
break;
/* XXX revisit when we have a hardware implementation! */
break;
default:
"glGetQueryObjectuivARB(pname)");
return;
}
}
void STATE_APIENTRY
{
CRContext *g = GetCurrentContext();
CROcclusionState *o = &(g->occlusion);
FLUSH();
if (g->current.inBeginEnd) {
return;
}
if (target != GL_SAMPLES_PASSED_ARB) {
"glBeginQueryARB(target)");
return;
}
if (o->currentQueryObject) {
"glBeginQueryARB(target)");
return;
}
if (q && q->active) {
return;
}
else if (!q) {
if (!q) {
return;
}
}
q->passedCounter = 0;
q->passedCounter = 0;
o->currentQueryObject = id;
}
void STATE_APIENTRY
{
CRContext *g = GetCurrentContext();
CROcclusionState *o = &(g->occlusion);
FLUSH();
if (g->current.inBeginEnd) {
return;
}
if (target != GL_SAMPLES_PASSED_ARB) {
return;
}
if (!q || !q->active) {
"glEndQueryARB with glBeginQueryARB");
return;
}
q->passedCounter = 0;
o->currentQueryObject = 0;
}
{
/* Apparently, no occlusion state differencing needed */
}
/*
*/
{
/* Apparently, no occlusion state switching needed */
/* Note: we better not do a switch while we're inside a glBeginQuery/
* glEndQuery sequence.
*/
}