• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 Huawei Device 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 #include "egl_core.h"
16 #include "egl_defs.h"
17 #include "../wrapper_log.h"
18 
19 #undef CALL_HOOK_API
20 #define CALL_HOOK_API(api, ...)                                         \
21     do {                                                                \
22         if (OHOS::EglCoreInit() && OHOS::CheckEglWrapperApi(#api)) {    \
23             OHOS::gWrapperHook.wrapper.api(__VA_ARGS__);                \
24         } else {                                                        \
25             WLOGE("%{public}s is invalid.", #api);                      \
26         }                                                               \
27     } while (0);                                                        \
28 }
29 
30 #undef CALL_HOOK_API_RET
31 #define CALL_HOOK_API_RET(api, ...)                                     \
32     do {                                                                \
33         if (OHOS::EglCoreInit() && OHOS::CheckEglWrapperApi(#api)) {    \
34             return OHOS::gWrapperHook.wrapper.api(__VA_ARGS__);         \
35         } else {                                                        \
36             WLOGE("%{public}s is invalid.", #api);                      \
37             return 0;                                                   \
38         }                                                               \
39     } while (0);                                                        \
40 }
41 
42 #undef HOOK_API_ENTRY
43 #define HOOK_API_ENTRY(r, api, ...) r api(__VA_ARGS__) {                \
44 
45 extern "C" {
46 #pragma GCC diagnostic ignored "-Wunused-parameter"
47 #include "../egl_hook_entries.in"
48 #pragma GCC diagnostic warning "-Wunused-parameter"
49 }
50 
51 namespace OHOS {
52 const std::map<std::string, EglWrapperFuncPointer> gExtensionMap = {
53     { "eglLockSurfaceKHR", (EglWrapperFuncPointer)&eglLockSurfaceKHR },
54     { "eglUnlockSurfaceKHR", (EglWrapperFuncPointer)&eglUnlockSurfaceKHR },
55 
56     // EGL_KHR_image, EGL_KHR_image_base
57     { "eglCreateImageKHR", (EglWrapperFuncPointer)&eglCreateImageKHR },
58     { "eglDestroyImageKHR", (EglWrapperFuncPointer)&eglDestroyImageKHR },
59 
60     // EGL_KHR_reusable_sync, EGL_KHR_fence_sync
61     { "eglCreateSyncKHR", (EglWrapperFuncPointer)&eglCreateSyncKHR },
62     { "eglDestroySyncKHR", (EglWrapperFuncPointer)&eglDestroySyncKHR },
63     { "eglClientWaitSyncKHR", (EglWrapperFuncPointer)&eglClientWaitSyncKHR },
64     { "eglSignalSyncKHR", (EglWrapperFuncPointer)&eglSignalSyncKHR },
65     { "eglGetSyncAttribKHR", (EglWrapperFuncPointer)&eglGetSyncAttribKHR },
66 
67     // EGL_KHR_wait_sync
68     { "eglWaitSyncKHR", (EglWrapperFuncPointer)&eglWaitSyncKHR },
69 
70     // EGL_KHR_swap_buffers_with_damage
71     { "eglSwapBuffersWithDamageKHR", (EglWrapperFuncPointer)&eglSwapBuffersWithDamageKHR },
72 
73     // EGL_KHR_partial_update
74     { "eglSetDamageRegionKHR", (EglWrapperFuncPointer)&eglSetDamageRegionKHR },
75 
76     { "eglCreateStreamKHR", (EglWrapperFuncPointer)&eglCreateStreamKHR },
77     { "eglDestroyStreamKHR", (EglWrapperFuncPointer)&eglDestroyStreamKHR },
78     { "eglStreamAttribKHR", (EglWrapperFuncPointer)&eglStreamAttribKHR },
79     { "eglQueryStreamKHR", (EglWrapperFuncPointer)&eglQueryStreamKHR },
80     { "eglQueryStreamu64KHR", (EglWrapperFuncPointer)&eglQueryStreamu64KHR },
81     { "eglQueryStreamTimeKHR", (EglWrapperFuncPointer)&eglQueryStreamTimeKHR },
82     { "eglCreateStreamProducerSurfaceKHR", (EglWrapperFuncPointer)&eglCreateStreamProducerSurfaceKHR },
83     { "eglStreamConsumerGLTextureExternalKHR", (EglWrapperFuncPointer)&eglStreamConsumerGLTextureExternalKHR },
84     { "eglStreamConsumerAcquireKHR", (EglWrapperFuncPointer)&eglStreamConsumerAcquireKHR },
85     { "eglStreamConsumerReleaseKHR", (EglWrapperFuncPointer)&eglStreamConsumerReleaseKHR },
86     { "eglGetStreamFileDescriptorKHR", (EglWrapperFuncPointer)&eglGetStreamFileDescriptorKHR },
87     { "eglCreateStreamFromFileDescriptorKHR", (EglWrapperFuncPointer)&eglCreateStreamFromFileDescriptorKHR },
88 };
89 }
90