aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/mesa/main/queryobj.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-01-16 08:28:39 +0100
committermarha <marha@users.sourceforge.net>2013-01-16 08:28:39 +0100
commit92bd40b3fc3830028340969f2cc5c6a0720c4450 (patch)
tree538a7f953afd9b5cf38e1a24e20b5be333053f92 /mesalib/src/mesa/main/queryobj.c
parent2fe4d492f39a5a5b67c4444805f7b1eaa1e745a9 (diff)
downloadvcxsrv-92bd40b3fc3830028340969f2cc5c6a0720c4450.tar.gz
vcxsrv-92bd40b3fc3830028340969f2cc5c6a0720c4450.tar.bz2
vcxsrv-92bd40b3fc3830028340969f2cc5c6a0720c4450.zip
libxtrans fontconfig glproto libX11 libXau libXext libXft libXinerama
libXmu libfontenc mesa xkeyboard-config libxtrans: d9f3728ff74ceb956f6cf8dc24b38611f9a4868a fontconfig: ec5ca08c807585a9230f83c95f7cca6b7065b142 glproto: 8e3407e02980d088e20041e79bdcdd3737e7827e libX11: f57fd760cba92ad846917f21e94e73e9c846185f libXau: 1a8a1b2c68967b48c07b56142799b1020f017027 libXext: 8eee1236041d46a21faba32e0d27c26985267d89 libXft: c5e760a239afc62a1c75e0509868e35957c8df52 libXinerama: 470b9356af961ff7d3968b164aa73872b49a5dcc libXmu: 474d22468c90f99104873b4c5fd7b0f0d2cbf823 libfontenc: 0c3518df24192f18f15ce91c2868560a5973a3dc mesa: 3c00a52f7e02007f40fa53a06fad517bed0328ff xkeyboard-config: 8a117fbd4a029b952afcfe362931628dccf496e4
Diffstat (limited to 'mesalib/src/mesa/main/queryobj.c')
-rw-r--r--mesalib/src/mesa/main/queryobj.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/mesalib/src/mesa/main/queryobj.c b/mesalib/src/mesa/main/queryobj.c
index aa7c800d4..c48ba5be6 100644
--- a/mesalib/src/mesa/main/queryobj.c
+++ b/mesalib/src/mesa/main/queryobj.c
@@ -50,7 +50,20 @@ _mesa_new_query_object(struct gl_context *ctx, GLuint id)
q->Id = id;
q->Result = 0;
q->Active = GL_FALSE;
- q->Ready = GL_TRUE; /* correct, see spec */
+
+ /* This is to satisfy the language of the specification: "In the initial
+ * state of a query object, the result is available" (OpenGL 3.1 §
+ * 2.13).
+ */
+ q->Ready = GL_TRUE;
+
+ /* OpenGL 3.1 § 2.13 says about GenQueries, "These names are marked as
+ * used, but no object is associated with them until the first time they
+ * are used by BeginQuery." Since our implementation actually does
+ * allocate an object at this point, use a flag to indicate that this
+ * object has not yet been bound so should not be considered a query.
+ */
+ q->EverBound = GL_FALSE;
}
return q;
}
@@ -252,16 +265,22 @@ _mesa_DeleteQueries(GLsizei n, const GLuint *ids)
GLboolean GLAPIENTRY
_mesa_IsQuery(GLuint id)
{
+ struct gl_query_object *q;
+
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);
if (MESA_VERBOSE & VERBOSE_API)
_mesa_debug(ctx, "glIsQuery(%u)\n", id);
- if (id && _mesa_lookup_query_object(ctx, id))
- return GL_TRUE;
- else
+ if (id == 0)
return GL_FALSE;
+
+ q = _mesa_lookup_query_object(ctx, id);
+ if (q == NULL)
+ return GL_FALSE;
+
+ return q->EverBound;
}
static GLboolean
@@ -354,6 +373,7 @@ _mesa_BeginQueryIndexed(GLenum target, GLuint index, GLuint id)
q->Active = GL_TRUE;
q->Result = 0;
q->Ready = GL_FALSE;
+ q->EverBound = GL_TRUE;
/* XXX should probably refcount query objects */
*bindpt = q;