xref: /aosp_15_r20/external/angle/src/libANGLE/Query.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2012 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker 
7*8975f5c5SAndroid Build Coastguard Worker // Query.h: Defines the gl::Query class
8*8975f5c5SAndroid Build Coastguard Worker 
9*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_QUERY_H_
10*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_QUERY_H_
11*8975f5c5SAndroid Build Coastguard Worker 
12*8975f5c5SAndroid Build Coastguard Worker #include "common/PackedEnums.h"
13*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Debug.h"
14*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Error.h"
15*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/RefCountObject.h"
16*8975f5c5SAndroid Build Coastguard Worker 
17*8975f5c5SAndroid Build Coastguard Worker #include "common/angleutils.h"
18*8975f5c5SAndroid Build Coastguard Worker 
19*8975f5c5SAndroid Build Coastguard Worker #include "angle_gl.h"
20*8975f5c5SAndroid Build Coastguard Worker 
21*8975f5c5SAndroid Build Coastguard Worker namespace rx
22*8975f5c5SAndroid Build Coastguard Worker {
23*8975f5c5SAndroid Build Coastguard Worker class GLImplFactory;
24*8975f5c5SAndroid Build Coastguard Worker class QueryImpl;
25*8975f5c5SAndroid Build Coastguard Worker }  // namespace rx
26*8975f5c5SAndroid Build Coastguard Worker 
27*8975f5c5SAndroid Build Coastguard Worker namespace gl
28*8975f5c5SAndroid Build Coastguard Worker {
29*8975f5c5SAndroid Build Coastguard Worker 
30*8975f5c5SAndroid Build Coastguard Worker class Query final : public RefCountObject<QueryID>, public LabeledObject
31*8975f5c5SAndroid Build Coastguard Worker {
32*8975f5c5SAndroid Build Coastguard Worker   public:
33*8975f5c5SAndroid Build Coastguard Worker     Query(rx::GLImplFactory *factory, QueryType type, QueryID id);
34*8975f5c5SAndroid Build Coastguard Worker     ~Query() override;
35*8975f5c5SAndroid Build Coastguard Worker     void onDestroy(const Context *context) override;
36*8975f5c5SAndroid Build Coastguard Worker 
37*8975f5c5SAndroid Build Coastguard Worker     angle::Result setLabel(const Context *context, const std::string &label) override;
38*8975f5c5SAndroid Build Coastguard Worker     const std::string &getLabel() const override;
39*8975f5c5SAndroid Build Coastguard Worker 
40*8975f5c5SAndroid Build Coastguard Worker     angle::Result begin(const Context *context);
41*8975f5c5SAndroid Build Coastguard Worker     angle::Result end(const Context *context);
42*8975f5c5SAndroid Build Coastguard Worker     angle::Result queryCounter(const Context *context);
43*8975f5c5SAndroid Build Coastguard Worker     angle::Result getResult(const Context *context, GLint *params);
44*8975f5c5SAndroid Build Coastguard Worker     angle::Result getResult(const Context *context, GLuint *params);
45*8975f5c5SAndroid Build Coastguard Worker     angle::Result getResult(const Context *context, GLint64 *params);
46*8975f5c5SAndroid Build Coastguard Worker     angle::Result getResult(const Context *context, GLuint64 *params);
47*8975f5c5SAndroid Build Coastguard Worker     angle::Result isResultAvailable(const Context *context, bool *available);
48*8975f5c5SAndroid Build Coastguard Worker 
49*8975f5c5SAndroid Build Coastguard Worker     QueryType getType() const;
50*8975f5c5SAndroid Build Coastguard Worker 
51*8975f5c5SAndroid Build Coastguard Worker     rx::QueryImpl *getImplementation() const;
52*8975f5c5SAndroid Build Coastguard Worker 
53*8975f5c5SAndroid Build Coastguard Worker   private:
54*8975f5c5SAndroid Build Coastguard Worker     rx::QueryImpl *mQuery;
55*8975f5c5SAndroid Build Coastguard Worker 
56*8975f5c5SAndroid Build Coastguard Worker     std::string mLabel;
57*8975f5c5SAndroid Build Coastguard Worker };
58*8975f5c5SAndroid Build Coastguard Worker }  // namespace gl
59*8975f5c5SAndroid Build Coastguard Worker 
60*8975f5c5SAndroid Build Coastguard Worker #endif  // LIBANGLE_QUERY_H_
61