xref: /aosp_15_r20/frameworks/rs/driver/rsdGL.h (revision e1eccf28f96817838ad6867f7f39d2351ec11f56)
1*e1eccf28SAndroid Build Coastguard Worker /*
2*e1eccf28SAndroid Build Coastguard Worker  * Copyright (C) 2011 The Android Open Source Project
3*e1eccf28SAndroid Build Coastguard Worker  *
4*e1eccf28SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*e1eccf28SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*e1eccf28SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*e1eccf28SAndroid Build Coastguard Worker  *
8*e1eccf28SAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*e1eccf28SAndroid Build Coastguard Worker  *
10*e1eccf28SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*e1eccf28SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*e1eccf28SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*e1eccf28SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*e1eccf28SAndroid Build Coastguard Worker  * limitations under the License.
15*e1eccf28SAndroid Build Coastguard Worker  */
16*e1eccf28SAndroid Build Coastguard Worker 
17*e1eccf28SAndroid Build Coastguard Worker #ifndef RSD_GL_H
18*e1eccf28SAndroid Build Coastguard Worker #define RSD_GL_H
19*e1eccf28SAndroid Build Coastguard Worker 
20*e1eccf28SAndroid Build Coastguard Worker #include <rs_hal.h>
21*e1eccf28SAndroid Build Coastguard Worker #include <EGL/egl.h>
22*e1eccf28SAndroid Build Coastguard Worker 
23*e1eccf28SAndroid Build Coastguard Worker #define RSD_CALL_GL(x, ...) rsc->setWatchdogGL(#x, __LINE__, __FILE__); x(__VA_ARGS__); rsc->setWatchdogGL(nullptr, 0, nullptr)
24*e1eccf28SAndroid Build Coastguard Worker 
25*e1eccf28SAndroid Build Coastguard Worker class RsdShaderCache;
26*e1eccf28SAndroid Build Coastguard Worker class RsdVertexArrayState;
27*e1eccf28SAndroid Build Coastguard Worker class RsdFrameBufferObj;
28*e1eccf28SAndroid Build Coastguard Worker 
29*e1eccf28SAndroid Build Coastguard Worker typedef struct RsdGLRec {
30*e1eccf28SAndroid Build Coastguard Worker     struct {
31*e1eccf28SAndroid Build Coastguard Worker         EGLint numConfigs;
32*e1eccf28SAndroid Build Coastguard Worker         EGLint majorVersion;
33*e1eccf28SAndroid Build Coastguard Worker         EGLint minorVersion;
34*e1eccf28SAndroid Build Coastguard Worker         EGLConfig config;
35*e1eccf28SAndroid Build Coastguard Worker         EGLContext context;
36*e1eccf28SAndroid Build Coastguard Worker         EGLSurface surface;
37*e1eccf28SAndroid Build Coastguard Worker         EGLSurface surfaceDefault;
38*e1eccf28SAndroid Build Coastguard Worker         EGLDisplay display;
39*e1eccf28SAndroid Build Coastguard Worker     } egl;
40*e1eccf28SAndroid Build Coastguard Worker 
41*e1eccf28SAndroid Build Coastguard Worker     struct {
42*e1eccf28SAndroid Build Coastguard Worker         const uint8_t * vendor;
43*e1eccf28SAndroid Build Coastguard Worker         const uint8_t * renderer;
44*e1eccf28SAndroid Build Coastguard Worker         const uint8_t * version;
45*e1eccf28SAndroid Build Coastguard Worker         const uint8_t * extensions;
46*e1eccf28SAndroid Build Coastguard Worker 
47*e1eccf28SAndroid Build Coastguard Worker         uint32_t majorVersion;
48*e1eccf28SAndroid Build Coastguard Worker         uint32_t minorVersion;
49*e1eccf28SAndroid Build Coastguard Worker 
50*e1eccf28SAndroid Build Coastguard Worker         int32_t maxVaryingVectors;
51*e1eccf28SAndroid Build Coastguard Worker         int32_t maxTextureImageUnits;
52*e1eccf28SAndroid Build Coastguard Worker 
53*e1eccf28SAndroid Build Coastguard Worker         int32_t maxFragmentTextureImageUnits;
54*e1eccf28SAndroid Build Coastguard Worker         int32_t maxFragmentUniformVectors;
55*e1eccf28SAndroid Build Coastguard Worker 
56*e1eccf28SAndroid Build Coastguard Worker         int32_t maxVertexAttribs;
57*e1eccf28SAndroid Build Coastguard Worker         int32_t maxVertexUniformVectors;
58*e1eccf28SAndroid Build Coastguard Worker         int32_t maxVertexTextureUnits;
59*e1eccf28SAndroid Build Coastguard Worker 
60*e1eccf28SAndroid Build Coastguard Worker         bool OES_texture_npot;
61*e1eccf28SAndroid Build Coastguard Worker         bool IMG_texture_npot;
62*e1eccf28SAndroid Build Coastguard Worker         bool NV_texture_npot_2D_mipmap;
63*e1eccf28SAndroid Build Coastguard Worker         float EXT_texture_max_aniso;
64*e1eccf28SAndroid Build Coastguard Worker     } gl;
65*e1eccf28SAndroid Build Coastguard Worker 
66*e1eccf28SAndroid Build Coastguard Worker     ANativeWindow *wndSurface;
67*e1eccf28SAndroid Build Coastguard Worker     ANativeWindow *currentWndSurface;
68*e1eccf28SAndroid Build Coastguard Worker 
69*e1eccf28SAndroid Build Coastguard Worker     RsdShaderCache *shaderCache;
70*e1eccf28SAndroid Build Coastguard Worker     RsdVertexArrayState *vertexArrayState;
71*e1eccf28SAndroid Build Coastguard Worker     RsdFrameBufferObj *currentFrameBuffer;
72*e1eccf28SAndroid Build Coastguard Worker } RsdGL;
73*e1eccf28SAndroid Build Coastguard Worker 
74*e1eccf28SAndroid Build Coastguard Worker bool rsdGLSetInternalSurface(const android::renderscript::Context *rsc,
75*e1eccf28SAndroid Build Coastguard Worker                              RsNativeWindow sur);
76*e1eccf28SAndroid Build Coastguard Worker int32_t rsdGLInit(const android::renderscript::Context *rsc);
77*e1eccf28SAndroid Build Coastguard Worker void rsdGLShutdown(const android::renderscript::Context *rsc);
78*e1eccf28SAndroid Build Coastguard Worker bool rsdGLSetSurface(const android::renderscript::Context *rsc,
79*e1eccf28SAndroid Build Coastguard Worker                      uint32_t w, uint32_t h, RsNativeWindow sur);
80*e1eccf28SAndroid Build Coastguard Worker void rsdGLSwap(const android::renderscript::Context *rsc);
81*e1eccf28SAndroid Build Coastguard Worker void rsdGLCheckError(const android::renderscript::Context *rsc,
82*e1eccf28SAndroid Build Coastguard Worker                      const char *msg, bool isFatal = false);
83*e1eccf28SAndroid Build Coastguard Worker void rsdGLSetPriority(const android::renderscript::Context *rsc,
84*e1eccf28SAndroid Build Coastguard Worker                       int32_t priority);
85*e1eccf28SAndroid Build Coastguard Worker void rsdGLClearColor(const android::renderscript::Context *rsc,
86*e1eccf28SAndroid Build Coastguard Worker                      float r, float g, float b, float a);
87*e1eccf28SAndroid Build Coastguard Worker void rsdGLClearDepth(const android::renderscript::Context *rsc, float v);
88*e1eccf28SAndroid Build Coastguard Worker void rsdGLFinish(const android::renderscript::Context *rsc);
89*e1eccf28SAndroid Build Coastguard Worker void rsdGLDrawQuadTexCoords(const android::renderscript::Context *rsc,
90*e1eccf28SAndroid Build Coastguard Worker                             float x1, float y1, float z1, float u1, float v1,
91*e1eccf28SAndroid Build Coastguard Worker                             float x2, float y2, float z2, float u2, float v2,
92*e1eccf28SAndroid Build Coastguard Worker                             float x3, float y3, float z3, float u3, float v3,
93*e1eccf28SAndroid Build Coastguard Worker                             float x4, float y4, float z4, float u4, float v4);
94*e1eccf28SAndroid Build Coastguard Worker 
95*e1eccf28SAndroid Build Coastguard Worker #endif
96