rsdGL.h revision 407cae950325682a56fe5373dd218a666da901ef
1803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams/* 2803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * Copyright (C) 2011 The Android Open Source Project 3803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * 4803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * you may not use this file except in compliance with the License. 6803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * You may obtain a copy of the License at 7803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * 8803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * 10803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * Unless required by applicable law or agreed to in writing, software 11803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * See the License for the specific language governing permissions and 14803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * limitations under the License. 15803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams */ 16803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 17803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams#ifndef RSD_GL_H 18803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams#define RSD_GL_H 19803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 20803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams#include <rs_hal.h> 21803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 224a36b45c72b91045db49c54d33fd7a05fc5a7a3dAlex Sakhartchoukclass RsdShaderCache; 234a36b45c72b91045db49c54d33fd7a05fc5a7a3dAlex Sakhartchoukclass RsdVertexArrayState; 24803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 25803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Samstypedef void (* InvokeFunc_t)(void); 26803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Samstypedef void (*WorkerCallback_t)(void *usr, uint32_t idx); 27803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 28803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Samstypedef struct RsdGLRec { 29803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams struct { 30803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams EGLint numConfigs; 31803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams EGLint majorVersion; 32803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams EGLint minorVersion; 33803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams EGLConfig config; 34803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams EGLContext context; 35803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams EGLSurface surface; 36803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams EGLSurface surfaceDefault; 37803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams EGLDisplay display; 38803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams } egl; 39803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 40803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams struct { 41803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams const uint8_t * vendor; 42803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams const uint8_t * renderer; 43803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams const uint8_t * version; 44803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams const uint8_t * extensions; 45803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 46803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams uint32_t majorVersion; 47803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams uint32_t minorVersion; 48803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 49803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams int32_t maxVaryingVectors; 50803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams int32_t maxTextureImageUnits; 51803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 52803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams int32_t maxFragmentTextureImageUnits; 53803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams int32_t maxFragmentUniformVectors; 54803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 55803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams int32_t maxVertexAttribs; 56803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams int32_t maxVertexUniformVectors; 57803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams int32_t maxVertexTextureUnits; 58803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 59803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams bool OES_texture_npot; 60803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams bool GL_IMG_texture_npot; 61803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams bool GL_NV_texture_npot_2D_mipmap; 62803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams float EXT_texture_max_aniso; 63803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams } gl; 64803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 65803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams ANativeWindow *wndSurface; 66803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams uint32_t width; 67803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams uint32_t height; 684a36b45c72b91045db49c54d33fd7a05fc5a7a3dAlex Sakhartchouk RsdShaderCache *shaderCache; 694a36b45c72b91045db49c54d33fd7a05fc5a7a3dAlex Sakhartchouk RsdVertexArrayState *vertexArrayState; 70803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams} RsdGL; 71803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 72803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 73803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 74803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Samsbool rsdGLInit(const android::renderscript::Context *rsc); 75803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Samsvoid rsdGLShutdown(const android::renderscript::Context *rsc); 76803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Samsbool rsdGLSetSurface(const android::renderscript::Context *rsc, 77803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams uint32_t w, uint32_t h, ANativeWindow *sur); 78803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Samsvoid rsdGLSwap(const android::renderscript::Context *rsc); 79407cae950325682a56fe5373dd218a666da901efAlex Sakhartchoukvoid rsdGLCheckError(const android::renderscript::Context *rsc, 80407cae950325682a56fe5373dd218a666da901efAlex Sakhartchouk const char *msg, bool isFatal = false); 81803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 82803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams#endif 83803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 84