mirror of
https://github.com/glfw/glfw
synced 2026-09-26 16:18:21 +03:00
Merge ae3078dd43 into 92dcf4ce74
This commit is contained in:
commit
024f9811bd
5 changed files with 32 additions and 1 deletions
|
|
@ -120,7 +120,7 @@ information on what to include when reporting a bug.
|
|||
|
||||
## Changelog since 3.5
|
||||
|
||||
None.
|
||||
- Added `GLFW_ANGLE_SURFACE_DIRECT_COMPOSITION` window hint for ANGLE on Windows (#2876)
|
||||
|
||||
|
||||
## Contact
|
||||
|
|
|
|||
|
|
@ -1307,6 +1307,19 @@ extern "C" {
|
|||
*
|
||||
* Platform selection [init hint](@ref GLFW_PLATFORM).
|
||||
*/
|
||||
|
||||
#define GLFW_ANGLE_SURFACE_DIRECT_COMPOSITION 0x00050004
|
||||
/*! @brief ANGLE DirectComposition surface hint.
|
||||
*
|
||||
* Specifies whether to use EGL_DIRECT_COMPOSITION_ANGLE for surface creation
|
||||
* when using ANGLE on Windows.
|
||||
*
|
||||
* Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This hint is ignored on
|
||||
* other platforms or context APIs.
|
||||
*
|
||||
* @ingroup window
|
||||
*/
|
||||
|
||||
#define GLFW_PLATFORM 0x00050003
|
||||
/*! @brief macOS specific init hint.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -562,6 +562,8 @@ GLFWbool _glfwInitEGL(void)
|
|||
extensionSupportedEGL("EGL_KHR_context_flush_control");
|
||||
_glfw.egl.EXT_present_opaque =
|
||||
extensionSupportedEGL("EGL_EXT_present_opaque");
|
||||
_glfw.egl.ANGLE_direct_composition =
|
||||
_glfwStringInExtensionString("EGL_ANGLE_direct_composition", extensions);
|
||||
|
||||
return GLFW_TRUE;
|
||||
}
|
||||
|
|
@ -744,6 +746,13 @@ GLFWbool _glfwCreateContextEGL(_GLFWwindow* window,
|
|||
SET_ATTRIB(EGL_HEIGHT, height);
|
||||
}
|
||||
|
||||
// ANGLE surface creation attributes
|
||||
if (ctxconfig->angleDirectComposition && _glfw.egl.ANGLE_direct_composition)
|
||||
{
|
||||
SET_ATTRIB(EGL_DIRECT_COMPOSITION_ANGLE, EGL_TRUE);
|
||||
}
|
||||
|
||||
|
||||
SET_ATTRIB(EGL_NONE, EGL_NONE);
|
||||
|
||||
native = _glfw.platform.getEGLNativeWindow(window);
|
||||
|
|
|
|||
|
|
@ -188,6 +188,9 @@ typedef void (APIENTRY * PFNGLFLUSHPROC)(void);
|
|||
#define EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE 0x3489
|
||||
#define EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE 0x348f
|
||||
#define EGL_PLATFORM_SURFACELESS_MESA 0x31dd
|
||||
#define EGL_DIRECT_COMPOSITION_ANGLE 0x33A5
|
||||
#define EGL_FALSE 0
|
||||
#define EGL_TRUE 1
|
||||
|
||||
typedef int EGLint;
|
||||
typedef unsigned int EGLBoolean;
|
||||
|
|
@ -449,6 +452,7 @@ struct _GLFWctxconfig
|
|||
int profile;
|
||||
int robustness;
|
||||
int release;
|
||||
bool angleDirectComposition;
|
||||
_GLFWwindow* share;
|
||||
struct {
|
||||
bool offline;
|
||||
|
|
@ -812,6 +816,7 @@ struct _GLFWlibrary
|
|||
bool KHR_gl_colorspace;
|
||||
bool KHR_get_all_proc_addresses;
|
||||
bool KHR_context_flush_control;
|
||||
bool ANGLE_direct_composition;
|
||||
bool EXT_client_extensions;
|
||||
bool EXT_platform_base;
|
||||
bool EXT_platform_x11;
|
||||
|
|
|
|||
|
|
@ -262,6 +262,7 @@ void glfwDefaultWindowHints(void)
|
|||
_glfw.hints.context.source = GLFW_NATIVE_CONTEXT_API;
|
||||
_glfw.hints.context.major = 1;
|
||||
_glfw.hints.context.minor = 0;
|
||||
_glfw.hints.context.angleDirectComposition = false;
|
||||
|
||||
// The default is a focused, visible, resizable window with decorations
|
||||
memset(&_glfw.hints.window, 0, sizeof(_glfw.hints.window));
|
||||
|
|
@ -397,6 +398,9 @@ GLFWAPI void glfwWindowHint(int hint, int value)
|
|||
case GLFW_MOUSE_PASSTHROUGH:
|
||||
_glfw.hints.window.mousePassthrough = value;
|
||||
return;
|
||||
case GLFW_ANGLE_SURFACE_DIRECT_COMPOSITION:
|
||||
_glfw.hints.context.angleDirectComposition = value;
|
||||
return;
|
||||
case GLFW_CLIENT_API:
|
||||
_glfw.hints.context.client = value;
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue