132a6e48fSopenharmony_ci/* 232a6e48fSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 332a6e48fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 432a6e48fSopenharmony_ci * you may not use this file except in compliance with the License. 532a6e48fSopenharmony_ci * You may obtain a copy of the License at 632a6e48fSopenharmony_ci * 732a6e48fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 832a6e48fSopenharmony_ci * 932a6e48fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1032a6e48fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1132a6e48fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1232a6e48fSopenharmony_ci * See the License for the specific language governing permissions and 1332a6e48fSopenharmony_ci * limitations under the License. 1432a6e48fSopenharmony_ci */ 1532a6e48fSopenharmony_ci 1632a6e48fSopenharmony_ci#ifndef INTERFACES_INNERKITS_SURFACE_EGL_RENDER_SURFACE_H 1732a6e48fSopenharmony_ci#define INTERFACES_INNERKITS_SURFACE_EGL_RENDER_SURFACE_H 1832a6e48fSopenharmony_ci 1932a6e48fSopenharmony_ci#include <refbase.h> 2032a6e48fSopenharmony_ci 2132a6e48fSopenharmony_ci#include <EGL/egl.h> 2232a6e48fSopenharmony_ci#include <GLES2/gl2.h> 2332a6e48fSopenharmony_ci#include "ibuffer_producer.h" 2432a6e48fSopenharmony_ci#include "surface_type.h" 2532a6e48fSopenharmony_ci 2632a6e48fSopenharmony_cinamespace OHOS { 2732a6e48fSopenharmony_ciclass EglSurface : public RefBase { 2832a6e48fSopenharmony_cipublic: 2932a6e48fSopenharmony_ci static sptr<EglSurface> CreateEglSurfaceAsProducer(sptr<IBufferProducer>& producer); 3032a6e48fSopenharmony_ci virtual ~EglSurface() = default; 3132a6e48fSopenharmony_ci 3232a6e48fSopenharmony_ci virtual GSError InitContext(EGLContext context = EGL_NO_CONTEXT) = 0; 3332a6e48fSopenharmony_ci virtual EGLDisplay GetEglDisplay() const = 0; 3432a6e48fSopenharmony_ci virtual EGLContext GetEglContext() const = 0; 3532a6e48fSopenharmony_ci virtual EGLSurface GetEglSurface() const = 0; 3632a6e48fSopenharmony_ci virtual GLuint GetEglFbo() const = 0; 3732a6e48fSopenharmony_ci virtual GSError SwapBuffers() = 0; 3832a6e48fSopenharmony_ci virtual GSError SetWidthAndHeight(int32_t width, int32_t height) = 0; 3932a6e48fSopenharmony_ci 4032a6e48fSopenharmony_ciprotected: 4132a6e48fSopenharmony_ci EglSurface() = default; 4232a6e48fSopenharmony_ci}; 4332a6e48fSopenharmony_citypedef EglSurface EglRenderSurface; 4432a6e48fSopenharmony_ci} // namespace OHOS 4532a6e48fSopenharmony_ci 4632a6e48fSopenharmony_ci#endif // INTERFACES_INNERKITS_SURFACE_EGL_RENDER_SURFACE_H 47