• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
17 #ifndef RSD_GL_H
18 #define RSD_GL_H
19 
20 #include <rs_hal.h>
21 #include <EGL/egl.h>
22 
23 #define RSD_CALL_GL(x, ...) rsc->setWatchdogGL(#x, __LINE__, __FILE__); x(__VA_ARGS__); rsc->setWatchdogGL(NULL, 0, NULL)
24 
25 class RsdShaderCache;
26 class RsdVertexArrayState;
27 class RsdFrameBufferObj;
28 
29 typedef void (* InvokeFunc_t)(void);
30 typedef void (*WorkerCallback_t)(void *usr, uint32_t idx);
31 
32 typedef struct RsdGLRec {
33     struct {
34         EGLint numConfigs;
35         EGLint majorVersion;
36         EGLint minorVersion;
37         EGLConfig config;
38         EGLContext context;
39         EGLSurface surface;
40         EGLSurface surfaceDefault;
41         EGLDisplay display;
42     } egl;
43 
44     struct {
45         const uint8_t * vendor;
46         const uint8_t * renderer;
47         const uint8_t * version;
48         const uint8_t * extensions;
49 
50         uint32_t majorVersion;
51         uint32_t minorVersion;
52 
53         int32_t maxVaryingVectors;
54         int32_t maxTextureImageUnits;
55 
56         int32_t maxFragmentTextureImageUnits;
57         int32_t maxFragmentUniformVectors;
58 
59         int32_t maxVertexAttribs;
60         int32_t maxVertexUniformVectors;
61         int32_t maxVertexTextureUnits;
62 
63         bool OES_texture_npot;
64         bool GL_IMG_texture_npot;
65         bool GL_NV_texture_npot_2D_mipmap;
66         float EXT_texture_max_aniso;
67     } gl;
68 
69     ANativeWindow *wndSurface;
70     uint32_t width;
71     uint32_t height;
72     RsdShaderCache *shaderCache;
73     RsdVertexArrayState *vertexArrayState;
74     RsdFrameBufferObj *currentFrameBuffer;
75 } RsdGL;
76 
77 
78 bool rsdGLInit(const android::renderscript::Context *rsc);
79 void rsdGLShutdown(const android::renderscript::Context *rsc);
80 bool rsdGLSetSurface(const android::renderscript::Context *rsc,
81                      uint32_t w, uint32_t h, RsNativeWindow sur);
82 void rsdGLSwap(const android::renderscript::Context *rsc);
83 void rsdGLCheckError(const android::renderscript::Context *rsc,
84                      const char *msg, bool isFatal = false);
85 
86 #endif
87 
88