xref: /aosp_15_r20/external/angle/samples/sample_util/SampleApplication.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2014 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 #ifndef SAMPLE_UTIL_SAMPLE_APPLICATION_H
8*8975f5c5SAndroid Build Coastguard Worker #define SAMPLE_UTIL_SAMPLE_APPLICATION_H
9*8975f5c5SAndroid Build Coastguard Worker 
10*8975f5c5SAndroid Build Coastguard Worker #include <stdint.h>
11*8975f5c5SAndroid Build Coastguard Worker #include <list>
12*8975f5c5SAndroid Build Coastguard Worker #include <memory>
13*8975f5c5SAndroid Build Coastguard Worker #include <string>
14*8975f5c5SAndroid Build Coastguard Worker 
15*8975f5c5SAndroid Build Coastguard Worker #include "common/system_utils.h"
16*8975f5c5SAndroid Build Coastguard Worker #include "util/EGLPlatformParameters.h"
17*8975f5c5SAndroid Build Coastguard Worker #include "util/OSWindow.h"
18*8975f5c5SAndroid Build Coastguard Worker #include "util/Timer.h"
19*8975f5c5SAndroid Build Coastguard Worker #include "util/egl_loader_autogen.h"
20*8975f5c5SAndroid Build Coastguard Worker 
21*8975f5c5SAndroid Build Coastguard Worker class EGLWindow;
22*8975f5c5SAndroid Build Coastguard Worker class GLWindowBase;
23*8975f5c5SAndroid Build Coastguard Worker 
24*8975f5c5SAndroid Build Coastguard Worker namespace angle
25*8975f5c5SAndroid Build Coastguard Worker {
26*8975f5c5SAndroid Build Coastguard Worker class Library;
27*8975f5c5SAndroid Build Coastguard Worker }  // namespace angle
28*8975f5c5SAndroid Build Coastguard Worker 
29*8975f5c5SAndroid Build Coastguard Worker bool IsGLExtensionEnabled(const std::string &extName);
30*8975f5c5SAndroid Build Coastguard Worker 
31*8975f5c5SAndroid Build Coastguard Worker enum class ClientType
32*8975f5c5SAndroid Build Coastguard Worker {
33*8975f5c5SAndroid Build Coastguard Worker     // Client types used by the samples.  Add as needed.
34*8975f5c5SAndroid Build Coastguard Worker     ES1,
35*8975f5c5SAndroid Build Coastguard Worker     ES2,
36*8975f5c5SAndroid Build Coastguard Worker     ES3_0,
37*8975f5c5SAndroid Build Coastguard Worker     ES3_1,
38*8975f5c5SAndroid Build Coastguard Worker };
39*8975f5c5SAndroid Build Coastguard Worker 
40*8975f5c5SAndroid Build Coastguard Worker class SampleApplication
41*8975f5c5SAndroid Build Coastguard Worker {
42*8975f5c5SAndroid Build Coastguard Worker   public:
43*8975f5c5SAndroid Build Coastguard Worker     SampleApplication(std::string name,
44*8975f5c5SAndroid Build Coastguard Worker                       int argc,
45*8975f5c5SAndroid Build Coastguard Worker                       char **argv,
46*8975f5c5SAndroid Build Coastguard Worker                       ClientType clientType = ClientType::ES2,
47*8975f5c5SAndroid Build Coastguard Worker                       uint32_t width        = 1280,
48*8975f5c5SAndroid Build Coastguard Worker                       uint32_t height       = 720);
49*8975f5c5SAndroid Build Coastguard Worker     virtual ~SampleApplication();
50*8975f5c5SAndroid Build Coastguard Worker 
51*8975f5c5SAndroid Build Coastguard Worker     virtual bool initialize();
52*8975f5c5SAndroid Build Coastguard Worker     virtual void destroy();
53*8975f5c5SAndroid Build Coastguard Worker 
54*8975f5c5SAndroid Build Coastguard Worker     virtual void step(float dt, double totalTime);
55*8975f5c5SAndroid Build Coastguard Worker     virtual void draw();
56*8975f5c5SAndroid Build Coastguard Worker 
57*8975f5c5SAndroid Build Coastguard Worker     virtual void swap();
58*8975f5c5SAndroid Build Coastguard Worker 
59*8975f5c5SAndroid Build Coastguard Worker     virtual void onKeyUp(const Event::KeyEvent &keyEvent);
60*8975f5c5SAndroid Build Coastguard Worker     virtual void onKeyDown(const Event::KeyEvent &keyEvent);
61*8975f5c5SAndroid Build Coastguard Worker 
62*8975f5c5SAndroid Build Coastguard Worker     OSWindow *getWindow() const;
63*8975f5c5SAndroid Build Coastguard Worker     EGLConfig getConfig() const;
64*8975f5c5SAndroid Build Coastguard Worker     EGLDisplay getDisplay() const;
65*8975f5c5SAndroid Build Coastguard Worker     EGLSurface getSurface() const;
66*8975f5c5SAndroid Build Coastguard Worker     EGLContext getContext() const;
67*8975f5c5SAndroid Build Coastguard Worker 
68*8975f5c5SAndroid Build Coastguard Worker     int run();
69*8975f5c5SAndroid Build Coastguard Worker     void exit();
70*8975f5c5SAndroid Build Coastguard Worker 
71*8975f5c5SAndroid Build Coastguard Worker   private:
72*8975f5c5SAndroid Build Coastguard Worker     bool popEvent(Event *event);
73*8975f5c5SAndroid Build Coastguard Worker 
74*8975f5c5SAndroid Build Coastguard Worker     std::string mName;
75*8975f5c5SAndroid Build Coastguard Worker     uint32_t mWidth;
76*8975f5c5SAndroid Build Coastguard Worker     uint32_t mHeight;
77*8975f5c5SAndroid Build Coastguard Worker     bool mRunning;
78*8975f5c5SAndroid Build Coastguard Worker 
79*8975f5c5SAndroid Build Coastguard Worker     Timer mTimer;
80*8975f5c5SAndroid Build Coastguard Worker     uint32_t mFrameCount;
81*8975f5c5SAndroid Build Coastguard Worker     GLWindowBase *mGLWindow;
82*8975f5c5SAndroid Build Coastguard Worker     EGLWindow *mEGLWindow;
83*8975f5c5SAndroid Build Coastguard Worker     OSWindow *mOSWindow;
84*8975f5c5SAndroid Build Coastguard Worker     angle::GLESDriverType mDriverType;
85*8975f5c5SAndroid Build Coastguard Worker 
86*8975f5c5SAndroid Build Coastguard Worker     EGLPlatformParameters mPlatformParams;
87*8975f5c5SAndroid Build Coastguard Worker 
88*8975f5c5SAndroid Build Coastguard Worker     // Handle to the entry point binding library.
89*8975f5c5SAndroid Build Coastguard Worker     std::unique_ptr<angle::Library> mEntryPointsLib;
90*8975f5c5SAndroid Build Coastguard Worker };
91*8975f5c5SAndroid Build Coastguard Worker 
92*8975f5c5SAndroid Build Coastguard Worker #endif  // SAMPLE_UTIL_SAMPLE_APPLICATION_H
93