• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef __NVC0_QUERY_HW_METRIC_H__
2 #define __NVC0_QUERY_HW_METRIC_H__
3 
4 #include "nvc0_query_hw.h"
5 
6 struct nvc0_hw_metric_query {
7    struct nvc0_hw_query base;
8    struct nvc0_hw_query *queries[8];
9    unsigned num_queries;
10 };
11 
12 static inline struct nvc0_hw_metric_query *
nvc0_hw_metric_query(struct nvc0_hw_query * hq)13 nvc0_hw_metric_query(struct nvc0_hw_query *hq)
14 {
15    return (struct nvc0_hw_metric_query *)hq;
16 }
17 
18 /*
19  * Driver metrics queries:
20  */
21 #define NVC0_HW_METRIC_QUERY(i)   (PIPE_QUERY_DRIVER_SPECIFIC + 2048 + (i))
22 #define NVC0_HW_METRIC_QUERY_LAST  NVC0_HW_METRIC_QUERY(NVC0_HW_METRIC_QUERY_COUNT - 1)
23 enum nvc0_hw_metric_queries
24 {
25     NVC0_HW_METRIC_QUERY_ACHIEVED_OCCUPANCY = 0,
26     NVC0_HW_METRIC_QUERY_BRANCH_EFFICIENCY,
27     NVC0_HW_METRIC_QUERY_INST_ISSUED,
28     NVC0_HW_METRIC_QUERY_INST_PER_WRAP,
29     NVC0_HW_METRIC_QUERY_INST_REPLAY_OVERHEAD,
30     NVC0_HW_METRIC_QUERY_ISSUED_IPC,
31     NVC0_HW_METRIC_QUERY_ISSUE_SLOTS,
32     NVC0_HW_METRIC_QUERY_ISSUE_SLOT_UTILIZATION,
33     NVC0_HW_METRIC_QUERY_IPC,
34     NVC0_HW_METRIC_QUERY_SHARED_REPLAY_OVERHEAD,
35     NVC0_HW_METRIC_QUERY_WARP_EXECUTION_EFFICIENCY,
36     NVC0_HW_METRIC_QUERY_WARP_NONPRED_EXECUTION_EFFICIENCY,
37     NVC0_HW_METRIC_QUERY_COUNT
38 };
39 
40 struct nvc0_hw_query *
41 nvc0_hw_metric_create_query(struct nvc0_context *, unsigned);
42 int
43 nvc0_hw_metric_get_driver_query_info(struct nvc0_screen *, unsigned,
44                                      struct pipe_driver_query_info *);
45 unsigned
46 nvc0_hw_metric_get_num_queries(struct nvc0_screen *);
47 
48 #endif
49