[Mesa-dev] [PATCH 1/5] gallium: add interface for driver queries like performance counters, etc.
Marek Olšák
maraeo at gmail.com
Fri Mar 22 16:51:00 PDT 2013
The pipe query interface is reused. The list of available queries can be
obtained using pipe_screen::get_driver_query_info.
---
src/gallium/auxiliary/util/u_inlines.h | 2 +-
src/gallium/include/pipe/p_defines.h | 12 ++++++++++++
src/gallium/include/pipe/p_screen.h | 11 +++++++++++
3 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/src/gallium/auxiliary/util/u_inlines.h b/src/gallium/auxiliary/util/u_inlines.h
index ba745eb..719ba25 100644
--- a/src/gallium/auxiliary/util/u_inlines.h
+++ b/src/gallium/auxiliary/util/u_inlines.h
@@ -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));
}
}
diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
index fdf6e7f..0027f9e 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -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
@@ -647,6 +651,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
diff --git a/src/gallium/include/pipe/p_screen.h b/src/gallium/include/pipe/p_screen.h
index 754cfd7..c487e8e 100644
--- a/src/gallium/include/pipe/p_screen.h
+++ b/src/gallium/include/pipe/p_screen.h
@@ -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);
+
};
--
1.7.10.4
More information about the mesa-dev
mailing list