st/mesa: add st_BeginQuery() case for GL_ANY_SAMPLES_PASSED
[mesa.git] / src / mesa / state_tracker / st_cb_queryobj.c
index af60db886967046e29c500fb19f8d8139b24a403..d0ac253bcecd9ebfe55fa241e3309be3dccc0ae0 100644 (file)
@@ -35,7 +35,7 @@
 
 #include "main/imports.h"
 #include "main/context.h"
-#include "main/image.h"
+#include "main/mfeatures.h"
 
 #include "pipe/p_context.h"
 #include "pipe/p_defines.h"
 #include "st_cb_queryobj.h"
 
 
+#if FEATURE_queryobj
+
 static struct gl_query_object *
-st_NewQueryObject(GLcontext *ctx, GLuint id)
+st_NewQueryObject(struct gl_context *ctx, GLuint id)
 {
    struct st_query_object *stq = ST_CALLOC_STRUCT(st_query_object);
    if (stq) {
@@ -60,7 +62,7 @@ st_NewQueryObject(GLcontext *ctx, GLuint id)
 
 
 static void
-st_DeleteQuery(GLcontext *ctx, struct gl_query_object *q)
+st_DeleteQuery(struct gl_context *ctx, struct gl_query_object *q)
 {
    struct pipe_context *pipe = st_context(ctx)->pipe;
    struct st_query_object *stq = st_query_object(q);
@@ -75,7 +77,7 @@ st_DeleteQuery(GLcontext *ctx, struct gl_query_object *q)
 
 
 static void
-st_BeginQuery(GLcontext *ctx, struct gl_query_object *q)
+st_BeginQuery(struct gl_context *ctx, struct gl_query_object *q)
 {
    struct pipe_context *pipe = st_context(ctx)->pipe;
    struct st_query_object *stq = st_query_object(q);
@@ -83,6 +85,8 @@ st_BeginQuery(GLcontext *ctx, struct gl_query_object *q)
 
    /* convert GL query type to Gallium query type */
    switch (q->Target) {
+   case GL_ANY_SAMPLES_PASSED:
+      /* fall-through */
    case GL_SAMPLES_PASSED_ARB:
       type = PIPE_QUERY_OCCLUSION_COUNTER;
       break;
@@ -92,6 +96,9 @@ st_BeginQuery(GLcontext *ctx, struct gl_query_object *q)
    case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:
       type = PIPE_QUERY_PRIMITIVES_EMITTED;
       break;
+   case GL_TIME_ELAPSED_EXT:
+      type = PIPE_QUERY_TIME_ELAPSED;
+      break;
    default:
       assert(0 && "unexpected query target in st_BeginQuery()");
       return;
@@ -116,7 +123,7 @@ st_BeginQuery(GLcontext *ctx, struct gl_query_object *q)
 
 
 static void
-st_EndQuery(GLcontext *ctx, struct gl_query_object *q)
+st_EndQuery(struct gl_context *ctx, struct gl_query_object *q)
 {
    struct pipe_context *pipe = st_context(ctx)->pipe;
    struct st_query_object *stq = st_query_object(q);
@@ -126,7 +133,7 @@ st_EndQuery(GLcontext *ctx, struct gl_query_object *q)
 
 
 static void
-st_WaitQuery(GLcontext *ctx, struct gl_query_object *q)
+st_WaitQuery(struct gl_context *ctx, struct gl_query_object *q)
 {
    struct pipe_context *pipe = st_context(ctx)->pipe;
    struct st_query_object *stq = st_query_object(q);
@@ -148,7 +155,7 @@ st_WaitQuery(GLcontext *ctx, struct gl_query_object *q)
 
 
 static void
-st_CheckQuery(GLcontext *ctx, struct gl_query_object *q)
+st_CheckQuery(struct gl_context *ctx, struct gl_query_object *q)
 {
    struct pipe_context *pipe = st_context(ctx)->pipe;
    struct st_query_object *stq = st_query_object(q);
@@ -168,3 +175,5 @@ void st_init_query_functions(struct dd_function_table *functions)
    functions->WaitQuery = st_WaitQuery;
    functions->CheckQuery = st_CheckQuery;
 }
+
+#endif /* FEATURE_queryobj */