nvc0: add driver metrics for SM35 (GK110)
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 9 Mar 2016 22:59:05 +0000 (23:59 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 10 Mar 2016 17:20:38 +0000 (18:20 +0100)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Acked-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/gallium/drivers/nouveau/nvc0/nvc0_query_hw_metric.c

index a01ab3fba4ce1fd924c9db80244e4ab66ae340e1..b961cbf652ed6f9c7fa45720c9415d14a72cb4bf 100644 (file)
@@ -300,6 +300,20 @@ static const struct nvc0_hw_metric_query_cfg *sm30_hw_metric_queries[] =
    &sm30_shared_replay_overhead,
 };
 
+/* ==== Compute capability 3.5 (GK110) ==== */
+static const struct nvc0_hw_metric_query_cfg *sm35_hw_metric_queries[] =
+{
+   &sm30_achieved_occupancy,
+   &sm30_inst_issued,
+   &sm30_inst_per_wrap,
+   &sm30_inst_replay_overhead,
+   &sm30_issued_ipc,
+   &sm30_inst_issued,
+   &sm30_issue_slot_utilization,
+   &sm30_ipc,
+   &sm30_shared_replay_overhead,
+};
+
 #undef _SM
 
 static inline const struct nvc0_hw_metric_query_cfg **
@@ -308,6 +322,8 @@ nvc0_hw_metric_get_queries(struct nvc0_screen *screen)
    struct nouveau_device *dev = screen->base.device;
 
    switch (screen->base.class_3d) {
+   case NVF0_3D_CLASS:
+      return sm35_hw_metric_queries;
    case NVE4_3D_CLASS:
       return sm30_hw_metric_queries;
    default:
@@ -325,6 +341,8 @@ nvc0_hw_metric_get_num_queries(struct nvc0_screen *screen)
    struct nouveau_device *dev = screen->base.device;
 
    switch (screen->base.class_3d) {
+   case NVF0_3D_CLASS:
+      return ARRAY_SIZE(sm35_hw_metric_queries);
    case NVE4_3D_CLASS:
       return ARRAY_SIZE(sm30_hw_metric_queries);
    default:
@@ -558,6 +576,7 @@ nvc0_hw_metric_get_query_result(struct nvc0_context *nvc0,
    }
 
    switch (screen->base.class_3d) {
+   case NVF0_3D_CLASS:
    case NVE4_3D_CLASS:
       value = sm30_hw_metric_calc_result(hq, res64);
       break;
@@ -629,7 +648,7 @@ nvc0_hw_metric_get_driver_query_info(struct nvc0_screen *screen, unsigned id,
 
    if (id < count) {
       if (screen->compute) {
-         if (screen->base.class_3d <= NVE4_3D_CLASS) {
+         if (screen->base.class_3d <= NVF0_3D_CLASS) {
             const struct nvc0_hw_metric_query_cfg **queries =
                nvc0_hw_metric_get_queries(screen);