#ifndef __NVC0_QUERY_H__ #define __NVC0_QUERY_H__ #include "pipe/p_context.h" #include "nouveau_context.h" struct nvc0_context; struct nvc0_query; struct nvc0_query_funcs { void (*destroy_query)(struct nvc0_context *, struct nvc0_query *); boolean (*begin_query)(struct nvc0_context *, struct nvc0_query *); void (*end_query)(struct nvc0_context *, struct nvc0_query *); boolean (*get_query_result)(struct nvc0_context *, struct nvc0_query *, boolean, union pipe_query_result *); void (*get_query_result_resource)(struct nvc0_context *nvc0, struct nvc0_query *q, boolean wait, enum pipe_query_value_type result_type, int index, struct pipe_resource *resource, unsigned offset); }; struct nvc0_query { const struct nvc0_query_funcs *funcs; uint16_t type; uint16_t index; }; static inline struct nvc0_query * nvc0_query(struct pipe_query *pipe) { return (struct nvc0_query *)pipe; } /* * Driver queries groups: */ #define NVC0_HW_SM_QUERY_GROUP 0 #define NVC0_HW_METRIC_QUERY_GROUP 1 #define NVC0_SW_QUERY_DRV_STAT_GROUP 2 void nvc0_init_query_functions(struct nvc0_context *); #endif