gallium: add interface for driver queries like performance counters, etc.

The pipe query interface is reused. The list of available queries can be
obtained using pipe_screen::get_driver_query_info.

Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
Marek Olšák 2013-03-21 19:32:24 +01:00
parent 9cec5edea7
commit 8ddcd715b7
3 changed files with 24 additions and 1 deletions

View file

@ -517,7 +517,7 @@ util_query_clear_result(union pipe_query_result *result, unsigned type)
memset(&result->pipeline_statistics, 0, sizeof(result->pipeline_statistics));
break;
default:
assert(0);
memset(result, 0, sizeof(*result));
}
}

View file

@ -397,6 +397,10 @@ enum pipe_flush_flags {
#define PIPE_QUERY_PIPELINE_STATISTICS 10
#define PIPE_QUERY_TYPES 11
/* start of driver queries,
* see pipe_screen::get_driver_query_info */
#define PIPE_QUERY_DRIVER_SPECIFIC 256
/**
* Conditional rendering modes
@ -649,6 +653,14 @@ union pipe_color_union
unsigned int ui[4];
};
struct pipe_driver_query_info
{
const char *name;
unsigned query_type; /* PIPE_QUERY_DRIVER_SPECIFIC + i */
uint64_t max_value; /* max value that can be returned */
boolean uses_byte_units; /* whether the result is in bytes */
};
#ifdef __cplusplus
}
#endif

View file

@ -206,6 +206,17 @@ struct pipe_screen {
struct pipe_fence_handle *fence,
uint64_t timeout );
/**
* Returns a driver-specific query.
*
* If \p info is NULL, the number of available queries is returned.
* Otherwise, the driver query at the specified \p index is returned
* in \p info. The function returns non-zero on success.
*/
int (*get_driver_query_info)(struct pipe_screen *screen,
unsigned index,
struct pipe_driver_query_info *info);
};