diff options
Diffstat (limited to 'autogl.h')
-rw-r--r-- | autogl.h | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/autogl.h b/autogl.h deleted file mode 100644 index fc77fb0..0000000 --- a/autogl.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ANDROID_AUTO_GL_H_ -#define ANDROID_AUTO_GL_H_ - -#include <memory> -#define EGL_EGLEXT_PROTOTYPES -#define GL_GLEXT_PROTOTYPES - -#include <EGL/egl.h> -#include <EGL/eglext.h> -#include <GLES2/gl2.h> -#include <GLES2/gl2ext.h> - -// TODO(zachr): use hwc_drm_bo to turn buffer handles into textures -#ifndef EGL_NATIVE_HANDLE_ANDROID_NVX -#define EGL_NATIVE_HANDLE_ANDROID_NVX 0x322A -#endif - -namespace android { - -#define AUTO_GL_TYPE(name, type, zero, deleter) \ - struct name##Deleter { \ - typedef type pointer; \ - \ - void operator()(pointer p) const { \ - if (p != zero) { \ - deleter; \ - } \ - } \ - }; \ - typedef std::unique_ptr<type, name##Deleter> name; - -AUTO_GL_TYPE(AutoGLFramebuffer, GLuint, 0, glDeleteFramebuffers(1, &p)) -AUTO_GL_TYPE(AutoGLBuffer, GLuint, 0, glDeleteBuffers(1, &p)) -AUTO_GL_TYPE(AutoGLTexture, GLuint, 0, glDeleteTextures(1, &p)) -AUTO_GL_TYPE(AutoGLShader, GLint, 0, glDeleteShader(p)) -AUTO_GL_TYPE(AutoGLProgram, GLint, 0, glDeleteProgram(p)) - -struct AutoEGLDisplayImage { - AutoEGLDisplayImage() = default; - - AutoEGLDisplayImage(EGLDisplay display, EGLImageKHR image) - : display_(display), image_(image) { - } - - AutoEGLDisplayImage(const AutoEGLDisplayImage& rhs) = delete; - AutoEGLDisplayImage(AutoEGLDisplayImage&& rhs) { - display_ = rhs.display_; - image_ = rhs.image_; - rhs.display_ = EGL_NO_DISPLAY; - rhs.image_ = EGL_NO_IMAGE_KHR; - } - - ~AutoEGLDisplayImage() { - clear(); - } - - AutoEGLDisplayImage& operator=(const AutoEGLDisplayImage& rhs) = delete; - AutoEGLDisplayImage& operator=(AutoEGLDisplayImage&& rhs) { - clear(); - std::swap(display_, rhs.display_); - std::swap(image_, rhs.image_); - return *this; - } - - void reset(EGLDisplay display, EGLImageKHR image) { - clear(); - display_ = display; - image_ = image; - } - - void clear() { - if (image_ != EGL_NO_IMAGE_KHR) { - eglDestroyImageKHR(display_, image_); - display_ = EGL_NO_DISPLAY; - image_ = EGL_NO_IMAGE_KHR; - } - } - - EGLImageKHR image() const { - return image_; - } - - private: - EGLDisplay display_ = EGL_NO_DISPLAY; - EGLImageKHR image_ = EGL_NO_IMAGE_KHR; -}; - -struct AutoEGLImageAndGLTexture { - AutoEGLDisplayImage image; - AutoGLTexture texture; -}; -} - -#endif |