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