1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 #include "RendererContext.h" 17 #include <stdio.h> 18 #include <stdlib.h> 19 20 RendererContext * RendererContext::create(EGLDisplay dpy, EGLConfig config, RendererContext *shareCtx, int version) 21 { 22 EGLContext ctx; 23 EGLContext shared = shareCtx == NULL ? EGL_NO_CONTEXT : shareCtx->eglContext(); 24 25 EGLint context_attributes[] = { EGL_CONTEXT_CLIENT_VERSION, 1, EGL_NONE }; 26 context_attributes[1] = version; 27 28 ctx = eglCreateContext(dpy, config, shared, context_attributes); 29 if (eglGetError() != EGL_SUCCESS) return NULL; 30 31 return new RendererContext(dpy, ctx, version); 32 } 33 34 int RendererContext::destroy() 35 { 36 if (count() <= 0) { 37 eglDestroyContext(m_dpy, m_ctx); 38 return 1; 39 } 40 return 0; 41 } 42 43 #ifdef PVR_WAR 44 void RendererContext::setActiveTexture(GLenum texture) 45 { 46 m_activeTexture = texture - GL_TEXTURE0; 47 } 48 49 void RendererContext::setTex2DBind(GLuint texture) 50 { 51 m_tex2DBind[m_activeTexture] = texture; 52 } 53 54 GLuint RendererContext::getTex2DBind() 55 { 56 return m_tex2DBind[m_activeTexture]; 57 } 58 59 void RendererContext::addPendingCropRect(const int *rect) 60 { 61 PendingCropRect *r = new PendingCropRect; 62 r->texture = m_tex2DBind[m_activeTexture]; 63 memcpy(r->rect, rect, 4*sizeof(int)); 64 m_pendingCropRects.insert(r); 65 } 66 #endif 67