2 * Copyright (c) 2017 Etnaviv Project
3 * Copyright (C) 2017 Zodiac Inflight Innovations
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sub license,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the
13 * next paragraph) shall be included in all copies or substantial portions
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
25 * Rob Clark <robclark@freedesktop.org>
26 * Christian Gmeiner <christian.gmeiner@gmail.com>
29 #ifndef H_ETNAVIV_QUERY_HW
30 #define H_ETNAVIV_QUERY_HW
32 #include "etnaviv_query.h"
36 struct etna_hw_sample_provider
{
37 void (*start
)(struct etna_hw_query
*hq
, struct etna_context
*ctx
);
38 void (*stop
)(struct etna_hw_query
*hq
, struct etna_context
*ctx
);
39 void (*suspend
)(struct etna_hw_query
*hq
, struct etna_context
*ctx
);
40 void (*resume
)(struct etna_hw_query
*hq
, struct etna_context
*ctx
);
42 void (*result
)(struct etna_hw_query
*hq
, void *buf
,
43 union pipe_query_result
*result
);
46 struct etna_hw_query
{
47 struct etna_query base
;
49 struct pipe_resource
*prsc
;
50 unsigned samples
; /* number of samples stored in resource */
51 unsigned no_wait_cnt
; /* see etna_hw_get_query_result() */
52 struct list_head node
; /* list-node in ctx->active_hw_queries */
54 const struct etna_hw_sample_provider
*provider
;
57 static inline struct etna_hw_query
*
58 etna_hw_query(struct etna_query
*q
)
60 return (struct etna_hw_query
*)q
;
64 etna_hw_create_query(struct etna_context
*ctx
, unsigned query_type
);
67 etna_hw_query_suspend(struct etna_hw_query
*hq
, struct etna_context
*ctx
)
69 const struct etna_hw_sample_provider
*p
= hq
->provider
;
78 etna_hw_query_resume(struct etna_hw_query
*hq
, struct etna_context
*ctx
)
80 const struct etna_hw_sample_provider
*p
= hq
->provider
;