+#define VIRGL_QUERY_OCCLUSION_COUNTER 0
+#define VIRGL_QUERY_OCCLUSION_PREDICATE 1
+#define VIRGL_QUERY_TIMESTAMP 2
+#define VIRGL_QUERY_TIMESTAMP_DISJOINT 3
+#define VIRGL_QUERY_TIME_ELAPSED 4
+#define VIRGL_QUERY_PRIMITIVES_GENERATED 5
+#define VIRGL_QUERY_PRIMITIVES_EMITTED 6
+#define VIRGL_QUERY_SO_STATISTICS 7
+#define VIRGL_QUERY_SO_OVERFLOW_PREDICATE 8
+#define VIRGL_QUERY_GPU_FINISHED 9
+#define VIRGL_QUERY_PIPELINE_STATISTICS 10
+#define VIRGL_QUERY_OCCLUSION_PREDICATE_CONSERVATIVE 11
+#define VIRGL_QUERY_SO_OVERFLOW_ANY_PREDICATE 12
+
+static const int pquery_map[] =
+{
+ VIRGL_QUERY_OCCLUSION_COUNTER,
+ VIRGL_QUERY_OCCLUSION_PREDICATE,
+ VIRGL_QUERY_OCCLUSION_PREDICATE_CONSERVATIVE,
+ VIRGL_QUERY_TIMESTAMP,
+ VIRGL_QUERY_TIMESTAMP_DISJOINT,
+ VIRGL_QUERY_TIME_ELAPSED,
+ VIRGL_QUERY_PRIMITIVES_GENERATED,
+ VIRGL_QUERY_PRIMITIVES_EMITTED,
+ VIRGL_QUERY_SO_STATISTICS,
+ VIRGL_QUERY_SO_OVERFLOW_PREDICATE,
+ VIRGL_QUERY_SO_OVERFLOW_ANY_PREDICATE,
+ VIRGL_QUERY_GPU_FINISHED,
+ VIRGL_QUERY_PIPELINE_STATISTICS,
+};
+
+static int pipe_to_virgl_query(enum pipe_query_type ptype)
+{
+ return pquery_map[ptype];
+}
+
+static inline struct virgl_query *virgl_query(struct pipe_query *q)
+{
+ return (struct virgl_query *)q;
+}