gallium/hud: support GALLIUM_HUD_DUMP_DIR feature on Windows
[mesa.git] / src / gallium / auxiliary / hud / hud_private.h
index 01caf7b8b2ce671f93cd3cda9fc173296646a304..bbc5ec70c8a63f2dd8850e6d61a92fac03456c7f 100644 (file)
@@ -41,6 +41,7 @@ struct hud_graph {
    /* name and query */
    char name[128];
    void *query_data;
+   void (*begin_query)(struct hud_graph *gr);
    void (*query_new_value)(struct hud_graph *gr);
    void (*free_query_data)(void *ptr); /**< do not use ordinary free() */
 
@@ -48,6 +49,7 @@ struct hud_graph {
    unsigned num_vertices;
    unsigned index; /* vertex index being updated */
    uint64_t current_value;
+   FILE *fd;
 };
 
 struct hud_pane {
@@ -61,16 +63,19 @@ struct hud_pane {
    unsigned inner_height;
    float yscale;
    unsigned max_num_vertices;
+   unsigned last_line; /* index of the last describing line in the graph */
    uint64_t max_value;
    uint64_t initial_max_value;
    uint64_t ceiling;
    unsigned dyn_ceil_last_ran;
    boolean dyn_ceiling;
+   boolean sort_items;
    enum pipe_driver_query_type type;
    uint64_t period; /* in microseconds */
 
    struct list_head graph_list;
    unsigned num_graphs;
+   unsigned next_color;
 };
 
 
@@ -80,19 +85,60 @@ void hud_pane_set_max_value(struct hud_pane *pane, uint64_t value);
 void hud_graph_add_value(struct hud_graph *gr, uint64_t value);
 
 /* graphs/queries */
+struct hud_batch_query_context;
+
 #define ALL_CPUS ~0 /* optionally set as cpu_index */
 
 int hud_get_num_cpus(void);
 
 void hud_fps_graph_install(struct hud_pane *pane);
 void hud_cpu_graph_install(struct hud_pane *pane, unsigned cpu_index);
-void hud_pipe_query_install(struct hud_pane *pane, struct pipe_context *pipe,
+void hud_api_thread_busy_install(struct hud_pane *pane);
+void hud_pipe_query_install(struct hud_batch_query_context **pbq,
+                            struct hud_pane *pane, struct pipe_context *pipe,
                             const char *name, unsigned query_type,
                             unsigned result_index,
                             uint64_t max_value,
                             enum pipe_driver_query_type type,
-                            enum pipe_driver_query_result_type result_type);
-boolean hud_driver_query_install(struct hud_pane *pane,
+                            enum pipe_driver_query_result_type result_type,
+                            unsigned flags);
+boolean hud_driver_query_install(struct hud_batch_query_context **pbq,
+                                 struct hud_pane *pane,
                                  struct pipe_context *pipe, const char *name);
+void hud_batch_query_begin(struct hud_batch_query_context *bq);
+void hud_batch_query_update(struct hud_batch_query_context *bq);
+void hud_batch_query_cleanup(struct hud_batch_query_context **pbq);
+
+#if HAVE_GALLIUM_EXTRA_HUD
+int hud_get_num_nics(bool displayhelp);
+#define NIC_DIRECTION_RX 1
+#define NIC_DIRECTION_TX 2
+#define NIC_RSSI_DBM     3
+void hud_nic_graph_install(struct hud_pane *pane, const char *nic_index,
+                           unsigned int mode);
+
+int hud_get_num_disks(bool displayhelp);
+#define DISKSTAT_RD 1
+#define DISKSTAT_WR 2
+void hud_diskstat_graph_install(struct hud_pane *pane, const char *dev_name,
+                                unsigned int mode);
+
+int hud_get_num_cpufreq(bool displayhelp);
+#define CPUFREQ_MINIMUM     1
+#define CPUFREQ_CURRENT     2
+#define CPUFREQ_MAXIMUM     3
+void hud_cpufreq_graph_install(struct hud_pane *pane, int cpu_index, unsigned int mode);
+#endif
+
+#if HAVE_LIBSENSORS
+int hud_get_num_sensors(bool displayhelp);
+#define SENSORS_TEMP_CURRENT     1
+#define SENSORS_TEMP_CRITICAL    2
+#define SENSORS_VOLTAGE_CURRENT  3
+#define SENSORS_CURRENT_CURRENT  4
+#define SENSORS_POWER_CURRENT    5
+void hud_sensors_temp_graph_install(struct hud_pane *pane, const char *dev_name,
+                                    unsigned int mode);
+#endif
 
 #endif