Blender  V3.3
GHOST_ContextEGL.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2013 Blender Foundation. All rights reserved. */
3 
8 #pragma once
9 
10 #include "GHOST_Context.h"
11 #include "GHOST_System.h"
12 
13 #include <GL/eglew.h>
14 
15 #ifndef GHOST_OPENGL_EGL_CONTEXT_FLAGS
16 # define GHOST_OPENGL_EGL_CONTEXT_FLAGS 0
17 #endif
18 
19 #ifndef GHOST_OPENGL_EGL_RESET_NOTIFICATION_STRATEGY
20 # define GHOST_OPENGL_EGL_RESET_NOTIFICATION_STRATEGY 0
21 #endif
22 
24  /* XR code needs low level graphics data to send to OpenXR. */
26 
27  public:
31  GHOST_ContextEGL(const GHOST_System *const system,
32  bool stereoVisual,
33  EGLNativeWindowType nativeWindow,
34  EGLNativeDisplayType nativeDisplay,
35  EGLint contextProfileMask,
36  EGLint contextMajorVersion,
37  EGLint contextMinorVersion,
38  EGLint contextFlags,
39  EGLint contextResetNotificationStrategy,
40  EGLenum api);
41 
46 
52 
58 
64 
70 
77 
83  GHOST_TSuccess setSwapInterval(int interval);
84 
90  GHOST_TSuccess getSwapInterval(int &intervalOut);
91 
92  EGLDisplay getDisplay() const;
93 
94  EGLConfig getConfig() const;
95 
96  EGLContext getContext() const;
97 
98  private:
99  bool initContextEGLEW();
100 
101  const GHOST_System *const m_system;
102 
103  EGLNativeDisplayType m_nativeDisplay;
104  EGLNativeWindowType m_nativeWindow;
105 
106  const EGLint m_contextProfileMask;
107  const EGLint m_contextMajorVersion;
108  const EGLint m_contextMinorVersion;
109  const EGLint m_contextFlags;
110  const EGLint m_contextResetNotificationStrategy;
111 
112  const EGLenum m_api;
113 
114  EGLContext m_context;
115  EGLSurface m_surface;
116  EGLDisplay m_display;
117  EGLConfig m_config;
118 
119  EGLint m_swap_interval;
120 
121  EGLContext &m_sharedContext;
122  EGLint &m_sharedCount;
123 
124  static EGLContext s_gl_sharedContext;
125  static EGLint s_gl_sharedCount;
126 
127  static EGLContext s_gles_sharedContext;
128  static EGLint s_gles_sharedCount;
129 
130  static EGLContext s_vg_sharedContext;
131  static EGLint s_vg_sharedCount;
132 
133 #ifdef WITH_GL_ANGLE
134  static HMODULE s_d3dcompiler;
135 #endif
136 };
GHOST_TSuccess
Definition: GHOST_Types.h:74
GHOST_TSuccess releaseDrawingContext()
GHOST_TSuccess activateDrawingContext()
GHOST_TSuccess getSwapInterval(int &intervalOut)
GHOST_TSuccess initializeDrawingContext()
GHOST_TSuccess setSwapInterval(int interval)
EGLConfig getConfig() const
GHOST_ContextEGL(const GHOST_System *const system, bool stereoVisual, EGLNativeWindowType nativeWindow, EGLNativeDisplayType nativeDisplay, EGLint contextProfileMask, EGLint contextMajorVersion, EGLint contextMinorVersion, EGLint contextFlags, EGLint contextResetNotificationStrategy, EGLenum api)
EGLDisplay getDisplay() const
GHOST_TSuccess releaseNativeHandles()
EGLContext getContext() const
GHOST_TSuccess swapBuffers()