aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/nouveau/nv50/nv50_query.c
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2015-11-10 01:27:15 +0100
committerSamuel Pitoiset <[email protected]>2015-11-14 23:42:42 +0100
commit6a9c151dbb87a10b6d51c451a5a277d646d08857 (patch)
tree6436fb41a82e3b0cdfd837b5bfaffcaf08409afd /src/gallium/drivers/nouveau/nv50/nv50_query.c
parentff72440b40211326eda118232fabd53965410afd (diff)
nv50: add compute-related MP perf counters on G84+
These compute-related MP performance counters have been reverse engineered using CUPTI which is part of NVIDIA CUDA. As for nvc0, we use a compute kernel to read out those performance counters, and the command stream to configure them. Note that Tesla only exposes 4 MP performance counters, while Fermi has 8. Only G84+ is supported because G80 is an old and weird card. Tested on G84, G96, G200, MCP79 and GT218 with glxgears, glxspheres64, xonotic-glx, heaven and valley. Signed-off-by: Samuel Pitoiset <[email protected]> Tested-by: Pierre Moreau <[email protected]> Acked-by: Ilia Mirkin <[email protected]>
Diffstat (limited to 'src/gallium/drivers/nouveau/nv50/nv50_query.c')
-rw-r--r--src/gallium/drivers/nouveau/nv50/nv50_query.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_query.c b/src/gallium/drivers/nouveau/nv50/nv50_query.c
index dd9b85b7208..c31bf728c61 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_query.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_query.c
@@ -153,3 +153,26 @@ nv50_init_query_functions(struct nv50_context *nv50)
pipe->get_query_result = nv50_get_query_result;
pipe->render_condition = nv50_render_condition;
}
+
+int
+nv50_screen_get_driver_query_info(struct pipe_screen *pscreen,
+ unsigned id,
+ struct pipe_driver_query_info *info)
+{
+ struct nv50_screen *screen = nv50_screen(pscreen);
+ int num_hw_queries = 0;
+
+ num_hw_queries = nv50_hw_get_driver_query_info(screen, 0, NULL);
+
+ if (!info)
+ return num_hw_queries;
+
+ /* Init default values. */
+ info->name = "this_is_not_the_query_you_are_looking_for";
+ info->query_type = 0xdeadd01d;
+ info->max_value.u64 = 0;
+ info->type = PIPE_DRIVER_QUERY_TYPE_UINT64;
+ info->group_id = -1;
+
+ return nv50_hw_get_driver_query_info(screen, id, info);
+}