• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 Shenzhen Kaihong Digital Industry Development Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef _ROSEN_CONTEXT_H_
17 #define _ROSEN_CONTEXT_H_
18 
19 #include<stdint.h>
20 
21 namespace OHOS {
22 
23 enum class RCI_GLES_VERSION {
24     V20 = 20,
25     V30 = 30,
26     V31 = 31,
27     V32 = 32,
28     V42 = 42
29 };
30 
31 enum class RCI_PROFILE {
32     ES = 0,
33     CORE,
34     COMPATIBILITY
35 };
36 
37 enum class RCI_CONTEXT_FLAG
38 {
39     NONE                = 0,
40 	ROBUST				= (1<<0),	//!< Robust context
41 	DEBUG				= (1<<1),	//!< Debug context
42 	FORWARD_COMPATIBLE	= (1<<2),	//!< Forward-compatible context
43 };
44 
45 enum class RCI_SURFACE_TYPE
46 {
47     NONE = 0,
48     WINDOW,
49     PIXMAP,
50     PBUFFER
51 };
52 
53 struct RCI_PIXEL_FORMAT
54 {
55 	int32_t redBits;
56 	int32_t greenBits;
57 	int32_t blueBits;
58 	int32_t alphaBits;
59 	int32_t depthBits;
60 	int32_t stencilBits;
61 	int32_t numSamples;
62 };
63 
64 typedef void (*FunctionPointer)();
65 
66 class OhosContextI {
67 public:
68     static void SetInstance(void *instance);
69     static OhosContextI &GetInstance();
70 
71     virtual bool SetConfig(int32_t w,int32_t h,RCI_GLES_VERSION ver,RCI_PIXEL_FORMAT pf,RCI_SURFACE_TYPE st,RCI_PROFILE tp,RCI_CONTEXT_FLAG flags) = 0;
72     virtual bool InitNativeWindow() = 0;
73     virtual bool InitEglSurface() = 0;
74     virtual bool InitEglContext() = 0;
75 
76     virtual void MakeCurrent() = 0;
77     virtual void SwapBuffer() = 0;
78 
79     virtual int32_t GetAttrib(int32_t attrType) = 0;
80 
81     virtual uint64_t CreateWindow(uint32_t x,uint32_t y,uint32_t width,uint32_t height) = 0;
82     virtual void *GetNativeWindow(uint64_t windowId) = 0;
83     virtual void DestoryWindow(uint64_t windowId) = 0;
84 
85     virtual void *GetNativeWindowEx() = 0;
86     virtual void OhosWindowResize(int32_t w,int32_t h) = 0;
87     virtual void* EglGetConfig() = 0;
88 
89 // interface_BEGIN
90     virtual uint32_t OH_bindAPI(uint32_t api) = 0;
91     virtual uint32_t OH_bindTexImage(void* dpy, void* surface, int32_t buffer) = 0;
92     virtual uint32_t OH_chooseConfig(void* dpy, const int32_t *attrib_list, void* *configs, int32_t config_size, int32_t *num_config) = 0;
93     virtual int32_t OH_clientWaitSync(void* dpy, void* sync, int32_t flags, uint64_t timeout) = 0;
94     virtual int32_t OH_clientWaitSyncKHR(void* dpy, void* sync, int32_t flags, uint64_t timeout) = 0;
95     virtual uint32_t OH_copyBuffers(void* dpy, void* surface, void* target) = 0;
96     virtual void* OH_createContext(void* dpy, void* config, void* share_context, const int32_t *attrib_list) = 0;
97     virtual void* OH_createImage(void* dpy, void* ctx, uint32_t target, void* buffer, const int *attrib_list) = 0;
98     virtual void* OH_createImageKHR(void* dpy, void* ctx, uint32_t target, void* buffer, const int32_t *attrib_list) = 0;
99     virtual void* OH_createPbufferFromClientBuffer(void* dpy, uint32_t buftype, void* buffer, void* config, const int32_t *attrib_list) = 0;
100     virtual void* OH_createPbufferSurface(void* dpy, void* config, const int32_t *attrib_list) = 0;
101     virtual void* OH_createPixmapSurface(void* dpy, void* config, void* pixmap, const int32_t *attrib_list) = 0;
102     virtual void* OH_createPlatformPixmapSurface(void* dpy, void* config, void *native_pixmap, const int *attrib_list) = 0;
103     virtual void* OH_createPlatformPixmapSurfaceEXT(void* dpy, void* config, void *native_pixmap, const int32_t *attrib_list) = 0;
104     virtual void* OH_createPlatformWindowSurface(void* dpy, void* config, void *native_window, const int *attrib_list) = 0;
105     virtual void* OH_createPlatformWindowSurfaceEXT(void* dpy, void* config, void *native_window, const int32_t *attrib_list) = 0;
106     virtual void* OH_createSync(void* dpy, uint32_t type, const int *attrib_list) = 0;
107     virtual void* OH_createSyncKHR(void* dpy, uint32_t type, const int32_t *attrib_list) = 0;
108     virtual void* OH_createWindowSurface(void* dpy, void* config, void* win, const int32_t *attrib_list) = 0;
109     virtual uint32_t OH_destroyContext(void* dpy, void* ctx) = 0;
110     virtual uint32_t OH_destroyImage(void* dpy, void* image) = 0;
111     virtual uint32_t OH_destroyImageKHR(void* dpy, void* image) = 0;
112     virtual uint32_t OH_destroySurface(void* dpy, void* surface) = 0;
113     virtual uint32_t OH_destroySync(void* dpy, void* sync) = 0;
114     virtual uint32_t OH_destroySyncKHR(void* dpy, void* sync) = 0;
115     virtual uint32_t OH_getConfigAttrib(void* dpy, void* config, int32_t attribute, int32_t *value) = 0;
116     virtual uint32_t OH_getConfigs(void* dpy, void* *configs, int32_t config_size, int32_t *num_config) = 0;
117     virtual void* OH_getCurrentContext() = 0;
118     virtual void* OH_getCurrentDisplay() = 0;
119     virtual void* OH_getCurrentSurface(int32_t readdraw) = 0;
120     virtual void* OH_getDisplay(void* display_id) = 0;
121     virtual int32_t OH_getError() = 0;
122     virtual void* OH_getPlatformDisplay(uint32_t platform, void *native_display, const int *attrib_list) = 0;
123     virtual void* OH_getPlatformDisplayEXT(uint32_t platform, void *native_display, const int32_t *attrib_list) = 0;
124     virtual FunctionPointer OH_getProcAddress(const char *procname) = 0;
125     virtual uint32_t OH_getSyncAttrib(void* dpy, void* sync, int32_t attribute, int *value) = 0;
126     virtual uint32_t OH_getSyncAttribKHR(void* dpy, void* sync, int32_t attribute, int32_t *value) = 0;
127     virtual uint32_t OH_initialize(void* dpy, int32_t *major, int32_t *minor) = 0;
128     virtual uint32_t OH_lockSurfaceKHR(void* dpy, void* surface, const int32_t *attrib_list) = 0;
129     virtual uint32_t OH_makeCurrent(void* dpy, void* draw, void* read, void* ctx) = 0;
130     virtual uint32_t OH_queryAPI() = 0;
131     virtual uint32_t OH_queryContext(void* dpy, void* ctx, int32_t attribute, int32_t *value) = 0;
132     virtual const char* OH_queryString(void* dpy, int32_t name) = 0;
133     virtual uint32_t OH_querySurface(void* dpy, void* surface, int32_t attribute, int32_t *value) = 0;
134     virtual uint32_t OH_releaseTexImage(void* dpy, void* surface, int32_t buffer) = 0;
135     virtual uint32_t OH_releaseThread() = 0;
136     virtual uint32_t OH_setDamageRegionKHR(void* dpy, void* surface, int32_t *rects, int32_t n_rects) = 0;
137     virtual uint32_t OH_signalSyncKHR(void* dpy, void* sync, uint32_t mode) = 0;
138     virtual uint32_t OH_surfaceAttrib(void* dpy, void* surface, int32_t attribute, int32_t value) = 0;
139     virtual uint32_t OH_swapBuffers(void* dpy, void* surface) = 0;
140     virtual uint32_t OH_swapBuffersWithDamageKHR(void* dpy, void* surface, int32_t *rects, int32_t n_rects) = 0;
141     virtual uint32_t OH_swapInterval(void* dpy, int32_t interval) = 0;
142     virtual uint32_t OH_terminate(void* dpy) = 0;
143     virtual uint32_t OH_unlockSurfaceKHR(void* dpy, void* surface) = 0;
144     virtual uint32_t OH_waitClient() = 0;
145     virtual uint32_t OH_waitGL() = 0;
146     virtual uint32_t OH_waitNative(int32_t engine) = 0;
147     virtual uint32_t OH_waitSync(void* dpy, void* sync, int32_t flags) = 0;
148     virtual int32_t OH_waitSyncKHR(void* dpy, void* sync, int32_t flags) = 0;
149 // interface_END
150 
151 };
152 
153 }
154 
155 #endif