diff options
author | Robert Bragg <[email protected]> | 2015-04-29 08:41:34 +0100 |
---|---|---|
committer | Robert Bragg <[email protected]> | 2017-02-22 14:07:09 +0000 |
commit | 0e7464f0a93908cc31d05fb33611f3cd73a7be65 (patch) | |
tree | f781e2a8d246f73e2cf971b0770c295a3ebcfc81 /src/mesa/main/performance_query.h | |
parent | d83a33a9de94212b622053ab341655a3e92cc033 (diff) |
mesa: Model INTEL perf query backend after query obj BE
Instead of using the same backend interface as AMD_performance_monitor
this defines a dedicated INTEL_performance_query interface that is
modelled more on the ARB_query_buffer_object interface (considering the
similarity of the extensions) with the addition of vfuncs for
initializing and enumerating query and counter info.
Compared to the previous backend, some notable differences are:
- The backend is free to represent counters using whatever data
structures are optimal/convenient since queries and counters are
enumerated via an iterator api instead of declaring them using
structures directly shared with the frontend.
This is also done to help us support the full range of data and
semantic types available with INTEL_performance_query which is awkward
while using a structure shared with the AMD_performance_monitor
backend since neither extension's types are a subset of the other.
- The backend must support waiting for a query instead of the frontend
simply using glFinish().
- Objects go through 'Active' and 'Ready' states consistent with the
query object backend (hopefully making them more familiar). There is
no 'Ended' state (which used to show that a query has ended at least
once for a given object). There is a new 'Used' state, set when a
query is first begun which implies that we are expecting to get
results back for the object at some point. There's no equivalent to
the 'EverBound' state since the spec doesn't require there to be a
limbo state between generating IDs and associating them with an object
on query Begin.
The INTEL_performance_query and AMD_performance_monitor extensions are
now completely orthogonal within Mesa main (though a driver could
optionally choose to implement both extensions within a unified backend
if that were convenient for the sake of sharing state/code).
v2: (Samuel Pitoiset)
- init PerfQuery.NumQueries in frontend
- s/return_string/output_clipped_string/
- s/backed/backend/ typo
- remove redundant *bytesWritten = 0
v3:
- Add InitPerfQueryInfo for lazy probing of available queries
v4:
- Clean up some internal usage of GL typedefs (Ken)
Signed-off-by: Robert Bragg <[email protected]>
Reviewed-by: Lionel Landwerlin <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa/main/performance_query.h')
-rw-r--r-- | src/mesa/main/performance_query.h | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/src/mesa/main/performance_query.h b/src/mesa/main/performance_query.h index 3fed5eae1b8..8268f0ef194 100644 --- a/src/mesa/main/performance_query.h +++ b/src/mesa/main/performance_query.h @@ -1,5 +1,5 @@ /* - * Copyright © 2012 Intel Corporation + * Copyright © 2012,2015 Intel Corporation * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -38,10 +38,6 @@ _mesa_init_performance_queries(struct gl_context *ctx); extern void _mesa_free_performance_queries(struct gl_context *ctx); -unsigned -_mesa_perf_query_counter_size(const struct gl_perf_monitor_counter *); - - extern void GLAPIENTRY _mesa_GetFirstPerfQueryIdINTEL(GLuint *queryId); |