xref: /aosp_15_r20/external/mesa3d/src/gfxstream/guest/android/ANativeWindowAndroid.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright 2023 Google LLC
3*61046927SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
4*61046927SAndroid Build Coastguard Worker  */
5*61046927SAndroid Build Coastguard Worker 
6*61046927SAndroid Build Coastguard Worker #pragma once
7*61046927SAndroid Build Coastguard Worker 
8*61046927SAndroid Build Coastguard Worker #include <EGL/egl.h>
9*61046927SAndroid Build Coastguard Worker #include <EGL/eglext.h>
10*61046927SAndroid Build Coastguard Worker 
11*61046927SAndroid Build Coastguard Worker #include "gfxstream/guest/ANativeWindow.h"
12*61046927SAndroid Build Coastguard Worker 
13*61046927SAndroid Build Coastguard Worker namespace gfxstream {
14*61046927SAndroid Build Coastguard Worker 
15*61046927SAndroid Build Coastguard Worker class ANativeWindowHelperAndroid : public ANativeWindowHelper {
16*61046927SAndroid Build Coastguard Worker    public:
17*61046927SAndroid Build Coastguard Worker     ANativeWindowHelperAndroid() = default;
18*61046927SAndroid Build Coastguard Worker 
19*61046927SAndroid Build Coastguard Worker     bool isValid(EGLNativeWindowType window);
20*61046927SAndroid Build Coastguard Worker     bool isValid(EGLClientBuffer buffer);
21*61046927SAndroid Build Coastguard Worker 
22*61046927SAndroid Build Coastguard Worker     void acquire(EGLNativeWindowType window);
23*61046927SAndroid Build Coastguard Worker     void release(EGLNativeWindowType window);
24*61046927SAndroid Build Coastguard Worker 
25*61046927SAndroid Build Coastguard Worker     void acquire(EGLClientBuffer buffer);
26*61046927SAndroid Build Coastguard Worker     void release(EGLClientBuffer buffer);
27*61046927SAndroid Build Coastguard Worker 
28*61046927SAndroid Build Coastguard Worker     int getConsumerUsage(EGLNativeWindowType window, int* usage);
29*61046927SAndroid Build Coastguard Worker     void setUsage(EGLNativeWindowType window, int usage);
30*61046927SAndroid Build Coastguard Worker 
31*61046927SAndroid Build Coastguard Worker     int getWidth(EGLNativeWindowType window);
32*61046927SAndroid Build Coastguard Worker     int getHeight(EGLNativeWindowType window);
33*61046927SAndroid Build Coastguard Worker 
34*61046927SAndroid Build Coastguard Worker     int getWidth(EGLClientBuffer buffer);
35*61046927SAndroid Build Coastguard Worker     int getHeight(EGLClientBuffer buffer);
36*61046927SAndroid Build Coastguard Worker 
37*61046927SAndroid Build Coastguard Worker     int getFormat(EGLClientBuffer buffer, Gralloc* helper);
38*61046927SAndroid Build Coastguard Worker 
39*61046927SAndroid Build Coastguard Worker     void setSwapInterval(EGLNativeWindowType window, int interval);
40*61046927SAndroid Build Coastguard Worker 
41*61046927SAndroid Build Coastguard Worker     int queueBuffer(EGLNativeWindowType window, EGLClientBuffer buffer, int fence);
42*61046927SAndroid Build Coastguard Worker     int dequeueBuffer(EGLNativeWindowType window, EGLClientBuffer* buffer, int* fence);
43*61046927SAndroid Build Coastguard Worker     int cancelBuffer(EGLNativeWindowType window, EGLClientBuffer buffer);
44*61046927SAndroid Build Coastguard Worker 
45*61046927SAndroid Build Coastguard Worker     int getHostHandle(EGLClientBuffer buffer, Gralloc* helper);
46*61046927SAndroid Build Coastguard Worker };
47*61046927SAndroid Build Coastguard Worker 
48*61046927SAndroid Build Coastguard Worker }  // namespace gfxstream
49