[Mesa-dev] [PATCH] Mesa: Fix performance query id check

Robert Bragg robert at sixbynine.org
Mon Feb 27 15:43:54 UTC 2017


On Mon, Feb 27, 2017 at 2:47 PM, Juha-Pekka Heikkila
<juhapekka.heikkila at gmail.com> wrote:
> In queryid_valid() fix handling of zero index.
>
> CC: Robert Bragg <robert at sixbynine.org>
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
> ---
>  src/mesa/main/performance_query.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/mesa/main/performance_query.c b/src/mesa/main/performance_query.c
> index aa10351..142d834 100644
> --- a/src/mesa/main/performance_query.c
> +++ b/src/mesa/main/performance_query.c
> @@ -91,7 +91,7 @@ static inline bool
>  queryid_valid(const struct gl_context *ctx, unsigned numQueries, GLuint queryid)
>  {
>     GLuint index = queryid_to_index(queryid);
> -   return index >= 0 && index < numQueries;
> +   return queryid != 0 && index < numQueries;
>  }
>
>  static inline GLuint
> --
> 2.7.4
>

Oh, I thought I'd sent out an updated patch, but apparently I made it
but got distracted and didn't actually send it :-/

Main differences with mine was that I added a quote from the spec
about ID zero being reserved:

-   GLuint index = queryid_to_index(queryid);
-   return index >= 0 && index < numQueries;
+   /* The GL_INTEL_performance_query spec says:
+    *
+    *  "Performance counter ids values start with 1. Performance counter id 0
+    *  is reserved as an invalid counter."
+    */
+   return queryid != 0 && queryid_to_index(queryid) < numQueries;

And dropped the local variable which you say you'd prefer to keep. I
suppose on the other hand it seems good to me to not pass an index of
zero to queryid_to_index() before validation in case
queryid_to_index() might one day gain its own paranoid assertion that
the queryid is >= 0.

I don't have a strong opinion here though, so your patch looks fine to
land to me:
Reviewed-by: Robert Bragg <robert at sixbynine.org>

Br,
- Robert


More information about the mesa-dev mailing list