aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2014-07-04 11:24:02 +0200
committerMartin Peres <[email protected]>2015-05-06 00:03:35 +0300
commitf137f5c691f5bd97a8b7f881f1f6837bff0ebc7a (patch)
tree885beddeded2c990cb26ebed2fe7e62f29343188
parentce01c0af70f2475fbbb1c3ab90d43a19047abc5c (diff)
gallium: add pipe_screen::get_driver_query_group_info
Driver queries are organized as a single hierarchy where queries are categorized into groups. Each group has a list of queries and a maximum number of queries that can be sampled. The list of available groups can be obtained using pipe_screen::get_driver_query_group_info. This will be used by GL_AMD_performance monitor. v2: add group type (CPU/GPU) Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Martin Peres <[email protected]>
-rw-r--r--src/gallium/docs/source/screen.rst10
-rw-r--r--src/gallium/include/pipe/p_defines.h14
-rw-r--r--src/gallium/include/pipe/p_screen.h11
3 files changed, 35 insertions, 0 deletions
diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst
index 4386bcfb5ac..68931cf3519 100644
--- a/src/gallium/docs/source/screen.rst
+++ b/src/gallium/docs/source/screen.rst
@@ -588,3 +588,13 @@ query at the specified **index** is returned in **info**.
The function returns non-zero on success.
The driver-specific query is described with the pipe_driver_query_info
structure.
+
+get_driver_query_group_info
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Return a driver-specific query group. If the **info** parameter is NULL,
+the number of available groups is returned. Otherwise, the driver
+query group at the specified **index** is returned in **info**.
+The function returns non-zero on success.
+The driver-specific query group is described with the
+pipe_driver_query_group_info structure.
diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
index 67f48e42936..c1e660e899c 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -752,6 +752,12 @@ union pipe_color_union
unsigned int ui[4];
};
+enum pipe_driver_query_group_type
+{
+ PIPE_DRIVER_QUERY_GROUP_TYPE_CPU = 0,
+ PIPE_DRIVER_QUERY_GROUP_TYPE_GPU = 1,
+};
+
struct pipe_driver_query_info
{
const char *name;
@@ -760,6 +766,14 @@ struct pipe_driver_query_info
boolean uses_byte_units; /* whether the result is in bytes */
};
+struct pipe_driver_query_group_info
+{
+ const char *name;
+ enum pipe_driver_query_group_type type;
+ unsigned max_active_queries;
+ unsigned num_queries;
+};
+
#ifdef __cplusplus
}
#endif
diff --git a/src/gallium/include/pipe/p_screen.h b/src/gallium/include/pipe/p_screen.h
index 21e7dd35ec0..98b2159defe 100644
--- a/src/gallium/include/pipe/p_screen.h
+++ b/src/gallium/include/pipe/p_screen.h
@@ -236,6 +236,17 @@ struct pipe_screen {
unsigned index,
struct pipe_driver_query_info *info);
+ /**
+ * Returns a driver-specific query group.
+ *
+ * If \p info is NULL, the number of available groups is returned.
+ * Otherwise, the driver query group at the specified \p index is returned
+ * in \p info. The function returns non-zero on success.
+ */
+ int (*get_driver_query_group_info)(struct pipe_screen *screen,
+ unsigned index,
+ struct pipe_driver_query_group_info *info);
+
};