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 }; 29 30 enum class RCI_PROFILE { 31 ES = 0, 32 CORE, 33 COMPATIBILITY 34 }; 35 36 enum class RCI_CONTEXT_FLAG 37 { 38 NONE = 0, 39 ROBUST = (1<<0), //!< Robust context 40 DEBUG = (1<<1), //!< Debug context 41 FORWARD_COMPATIBLE = (1<<2), //!< Forward-compatible context 42 }; 43 44 enum class RCI_SURFACE_TYPE 45 { 46 NONE = 0, 47 WINDOW, 48 PIXMAP, 49 PBUFFER 50 }; 51 52 struct RCI_PIXEL_FORMAT 53 { 54 int32_t redBits; 55 int32_t greenBits; 56 int32_t blueBits; 57 int32_t alphaBits; 58 int32_t depthBits; 59 int32_t stencilBits; 60 int32_t numSamples; 61 }; 62 63 typedef void (*FunctionPointer)(); 64 65 class OhosContextI { 66 public: 67 static OhosContextI &GetInstance(); 68 69 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; 70 virtual bool InitNativeWindow() = 0; 71 virtual bool InitEglSurface() = 0; 72 virtual bool InitEglContext() = 0; 73 74 virtual void MakeCurrent() = 0; 75 virtual void SwapBuffer() = 0; 76 77 virtual int32_t GetAttrib(int32_t attrType) = 0; 78 79 virtual uint64_t CreateWindow(uint32_t x,uint32_t y,uint32_t width,uint32_t height) = 0; 80 virtual void *GetNativeWindow(uint64_t windowId) = 0; 81 virtual void DestoryWindow(uint64_t windowId) = 0; 82 83 virtual void *GetNativeWindowEx() = 0; 84 virtual void OhosWindowResize(int32_t w,int32_t h) = 0; 85 virtual void* EglGetConfig() = 0; 86 87 // interface_BEGIN 88 virtual uint32_t OH_bindAPI(uint32_t api) = 0; 89 virtual uint32_t OH_bindTexImage(void* dpy, void* surface, int32_t buffer) = 0; 90 virtual uint32_t OH_chooseConfig(void* dpy, const int32_t *attrib_list, void* *configs, int32_t config_size, int32_t *num_config) = 0; 91 virtual int32_t OH_clientWaitSync(void* dpy, void* sync, int32_t flags, uint64_t timeout) = 0; 92 virtual int32_t OH_clientWaitSyncKHR(void* dpy, void* sync, int32_t flags, uint64_t timeout) = 0; 93 virtual uint32_t OH_copyBuffers(void* dpy, void* surface, void* target) = 0; 94 virtual void* OH_createContext(void* dpy, void* config, void* share_context, const int32_t *attrib_list) = 0; 95 virtual void* OH_createImage(void* dpy, void* ctx, uint32_t target, void* buffer, const int *attrib_list) = 0; 96 virtual void* OH_createImageKHR(void* dpy, void* ctx, uint32_t target, void* buffer, const int32_t *attrib_list) = 0; 97 virtual void* OH_createPbufferFromClientBuffer(void* dpy, uint32_t buftype, void* buffer, void* config, const int32_t *attrib_list) = 0; 98 virtual void* OH_createPbufferSurface(void* dpy, void* config, const int32_t *attrib_list) = 0; 99 virtual void* OH_createPixmapSurface(void* dpy, void* config, void* pixmap, const int32_t *attrib_list) = 0; 100 virtual void* OH_createPlatformPixmapSurface(void* dpy, void* config, void *native_pixmap, const int *attrib_list) = 0; 101 virtual void* OH_createPlatformPixmapSurfaceEXT(void* dpy, void* config, void *native_pixmap, const int32_t *attrib_list) = 0; 102 virtual void* OH_createPlatformWindowSurface(void* dpy, void* config, void *native_window, const int *attrib_list) = 0; 103 virtual void* OH_createPlatformWindowSurfaceEXT(void* dpy, void* config, void *native_window, const int32_t *attrib_list) = 0; 104 virtual void* OH_createSync(void* dpy, uint32_t type, const int *attrib_list) = 0; 105 virtual void* OH_createSyncKHR(void* dpy, uint32_t type, const int32_t *attrib_list) = 0; 106 virtual void* OH_createWindowSurface(void* dpy, void* config, void* win, const int32_t *attrib_list) = 0; 107 virtual uint32_t OH_destroyContext(void* dpy, void* ctx) = 0; 108 virtual uint32_t OH_destroyImage(void* dpy, void* image) = 0; 109 virtual uint32_t OH_destroyImageKHR(void* dpy, void* image) = 0; 110 virtual uint32_t OH_destroySurface(void* dpy, void* surface) = 0; 111 virtual uint32_t OH_destroySync(void* dpy, void* sync) = 0; 112 virtual uint32_t OH_destroySyncKHR(void* dpy, void* sync) = 0; 113 virtual uint32_t OH_getConfigAttrib(void* dpy, void* config, int32_t attribute, int32_t *value) = 0; 114 virtual uint32_t OH_getConfigs(void* dpy, void* *configs, int32_t config_size, int32_t *num_config) = 0; 115 virtual void* OH_getCurrentContext() = 0; 116 virtual void* OH_getCurrentDisplay() = 0; 117 virtual void* OH_getCurrentSurface(int32_t readdraw) = 0; 118 virtual void* OH_getDisplay(void* display_id) = 0; 119 virtual int32_t OH_getError() = 0; 120 virtual void* OH_getPlatformDisplay(uint32_t platform, void *native_display, const int *attrib_list) = 0; 121 virtual void* OH_getPlatformDisplayEXT(uint32_t platform, void *native_display, const int32_t *attrib_list) = 0; 122 virtual FunctionPointer OH_getProcAddress(const char *procname) = 0; 123 virtual uint32_t OH_getSyncAttrib(void* dpy, void* sync, int32_t attribute, int *value) = 0; 124 virtual uint32_t OH_getSyncAttribKHR(void* dpy, void* sync, int32_t attribute, int32_t *value) = 0; 125 virtual uint32_t OH_initialize(void* dpy, int32_t *major, int32_t *minor) = 0; 126 virtual uint32_t OH_lockSurfaceKHR(void* dpy, void* surface, const int32_t *attrib_list) = 0; 127 virtual uint32_t OH_makeCurrent(void* dpy, void* draw, void* read, void* ctx) = 0; 128 virtual uint32_t OH_queryAPI() = 0; 129 virtual uint32_t OH_queryContext(void* dpy, void* ctx, int32_t attribute, int32_t *value) = 0; 130 virtual const char* OH_queryString(void* dpy, int32_t name) = 0; 131 virtual uint32_t OH_querySurface(void* dpy, void* surface, int32_t attribute, int32_t *value) = 0; 132 virtual uint32_t OH_releaseTexImage(void* dpy, void* surface, int32_t buffer) = 0; 133 virtual uint32_t OH_releaseThread() = 0; 134 virtual uint32_t OH_setDamageRegionKHR(void* dpy, void* surface, int32_t *rects, int32_t n_rects) = 0; 135 virtual uint32_t OH_signalSyncKHR(void* dpy, void* sync, uint32_t mode) = 0; 136 virtual uint32_t OH_surfaceAttrib(void* dpy, void* surface, int32_t attribute, int32_t value) = 0; 137 virtual uint32_t OH_swapBuffers(void* dpy, void* surface) = 0; 138 virtual uint32_t OH_swapBuffersWithDamageKHR(void* dpy, void* surface, int32_t *rects, int32_t n_rects) = 0; 139 virtual uint32_t OH_swapInterval(void* dpy, int32_t interval) = 0; 140 virtual uint32_t OH_terminate(void* dpy) = 0; 141 virtual uint32_t OH_unlockSurfaceKHR(void* dpy, void* surface) = 0; 142 virtual uint32_t OH_waitClient() = 0; 143 virtual uint32_t OH_waitGL() = 0; 144 virtual uint32_t OH_waitNative(int32_t engine) = 0; 145 virtual uint32_t OH_waitSync(void* dpy, void* sync, int32_t flags) = 0; 146 virtual int32_t OH_waitSyncKHR(void* dpy, void* sync, int32_t flags) = 0; 147 // interface_END 148 149 }; 150 151 } 152 153 #endif