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 <samuel.pitoiset@gmail.com>
Reviewed-by: Martin Peres <martin.peres@free.fr>
This commit is contained in:
Samuel Pitoiset
2014-07-04 11:24:02 +02:00
committed by Martin Peres
parent ce01c0af70
commit f137f5c691
3 changed files with 35 additions and 0 deletions

View File

@@ -588,3 +588,13 @@ query at the specified **index** is returned in **info**.
The function returns non-zero on success. The function returns non-zero on success.
The driver-specific query is described with the pipe_driver_query_info The driver-specific query is described with the pipe_driver_query_info
structure. 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.

View File

@@ -752,6 +752,12 @@ union pipe_color_union
unsigned int ui[4]; 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 struct pipe_driver_query_info
{ {
const char *name; const char *name;
@@ -760,6 +766,14 @@ struct pipe_driver_query_info
boolean uses_byte_units; /* whether the result is in bytes */ 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 #ifdef __cplusplus
} }
#endif #endif

View File

@@ -236,6 +236,17 @@ struct pipe_screen {
unsigned index, unsigned index,
struct pipe_driver_query_info *info); 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);
}; };