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