parent
243db302bf
commit
4e1d7e9266
10
README.md
10
README.md
@ -11,8 +11,9 @@ application development. It provides a simple, platform-independent API for
|
||||
creating windows, contexts and surfaces, reading input, handling events, etc.
|
||||
|
||||
GLFW natively supports Windows, macOS and Linux and other Unix-like systems.
|
||||
Experimental implementations for the Wayland protocol and the Mir display server
|
||||
are available but not yet officially supported.
|
||||
Experimental implementations for the Wayland protocol, the Mir display server
|
||||
and direct rendering via EGLDevice are available but not yet officially
|
||||
supported.
|
||||
|
||||
GLFW is licensed under the [zlib/libpng
|
||||
license](http://www.glfw.org/license.html).
|
||||
@ -91,6 +92,9 @@ GLFW itself depends only on the headers and libraries for your window system.
|
||||
The (experimental) Wayland backend also depends on the `extra-cmake-modules`
|
||||
package, which is used to generated Wayland protocol headers.
|
||||
|
||||
The (experimental) EGLDevice backend also depends on the `libdrm-dev`
|
||||
development package.
|
||||
|
||||
The examples and test programs depend on a number of tiny libraries. These are
|
||||
located in the `deps/` directory.
|
||||
|
||||
@ -208,6 +212,7 @@ information on what to include when reporting a bug.
|
||||
- [X11] Bugfix: Incremental reading of selections was not supported (#275)
|
||||
- [X11] Bugfix: Selection I/O reported but did not support `COMPOUND_TEXT`
|
||||
- [X11] Bugfix: Latin-1 text read from selections was not converted to UTF-8
|
||||
- [Linux] Added experimental support for direct rendering via EGLDevice (#786)
|
||||
- [Linux] Moved to evdev for joystick input (#906,#1005)
|
||||
- [Linux] Bugfix: Event processing did not detect joystick disconnection (#932)
|
||||
- [Linux] Bugfix: The joystick device path could be truncated (#1025)
|
||||
@ -282,6 +287,7 @@ skills.
|
||||
- David Carlier
|
||||
- Arturo Castro
|
||||
- Chi-kwan Chan
|
||||
- Kamal Chandra
|
||||
- Ian Clarkson
|
||||
- Michał Cichoń
|
||||
- Lambert Clara
|
||||
|
@ -257,6 +257,7 @@ ramps and clipboard. The options are:
|
||||
- @b _GLFW_WAYLAND to use the Wayland API (experimental and incomplete)
|
||||
- @b _GLFW_MIR to use the Mir API (experimental and incomplete)
|
||||
- @b _GLFW_OSMESA to use the OSMesa API (headless and non-interactive)
|
||||
- @b _GLFW_EGLDEVICE to use the EGLDevice API (experimental and incomplete)
|
||||
|
||||
If you are building GLFW as a shared library / dynamic library / DLL then you
|
||||
must also define @b _GLFW_BUILD_DLL. Otherwise, you must not define it.
|
||||
|
@ -1,5 +1,5 @@
|
||||
//========================================================================
|
||||
// GLFW 3.2 EGLDevice - www.glfw.org
|
||||
// GLFW 3.3 EGLDevice - www.glfw.org
|
||||
//------------------------------------------------------------------------
|
||||
// Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
|
||||
//
|
||||
@ -28,44 +28,44 @@
|
||||
|
||||
#include <linux/limits.h>
|
||||
|
||||
static GLFWbool initializeExtensions()
|
||||
static GLFWbool initializeExtensions(void)
|
||||
{
|
||||
_glfw.egldevice.eglQueryDevicesEXT =
|
||||
_glfw.egldevice.QueryDevicesEXT =
|
||||
(PFNEGLQUERYDEVICESEXTPROC)
|
||||
_glfw.egl.GetProcAddress("eglQueryDevicesEXT");
|
||||
_glfw.egldevice.eglQueryDeviceStringEXT =
|
||||
eglGetProcAddress("eglQueryDevicesEXT");
|
||||
_glfw.egldevice.QueryDeviceStringEXT =
|
||||
(PFNEGLQUERYDEVICESTRINGEXTPROC)
|
||||
_glfw.egl.GetProcAddress("eglQueryDeviceStringEXT");
|
||||
_glfw.egldevice.eglGetPlatformDisplayEXT =
|
||||
eglGetProcAddress("eglQueryDeviceStringEXT");
|
||||
_glfw.egldevice.GetPlatformDisplayEXT =
|
||||
(PFNEGLGETPLATFORMDISPLAYEXTPROC)
|
||||
_glfw.egl.GetProcAddress("eglGetPlatformDisplayEXT");
|
||||
_glfw.egldevice.eglGetOutputLayersEXT =
|
||||
eglGetProcAddress("eglGetPlatformDisplayEXT");
|
||||
_glfw.egldevice.GetOutputLayersEXT =
|
||||
(PFNEGLGETOUTPUTLAYERSEXTPROC)
|
||||
_glfw.egl.GetProcAddress("eglGetOutputLayersEXT");
|
||||
_glfw.egldevice.eglCreateStreamKHR =
|
||||
eglGetProcAddress("eglGetOutputLayersEXT");
|
||||
_glfw.egldevice.CreateStreamKHR =
|
||||
(PFNEGLCREATESTREAMKHRPROC)
|
||||
_glfw.egl.GetProcAddress("eglCreateStreamKHR");
|
||||
_glfw.egldevice.eglDestroyStreamKHR =
|
||||
eglGetProcAddress("eglCreateStreamKHR");
|
||||
_glfw.egldevice.DestroyStreamKHR =
|
||||
(PFNEGLDESTROYSTREAMKHRPROC)
|
||||
_glfw.egl.GetProcAddress("eglDestroyStreamKHR");
|
||||
_glfw.egldevice.eglStreamConsumerOutputEXT =
|
||||
eglGetProcAddress("eglDestroyStreamKHR");
|
||||
_glfw.egldevice.StreamConsumerOutputEXT =
|
||||
(PFNEGLSTREAMCONSUMEROUTPUTEXTPROC)
|
||||
_glfw.egl.GetProcAddress("eglStreamConsumerOutputEXT");
|
||||
_glfw.egldevice.eglCreateStreamProducerSurfaceKHR =
|
||||
eglGetProcAddress("eglStreamConsumerOutputEXT");
|
||||
_glfw.egldevice.CreateStreamProducerSurfaceKHR =
|
||||
(PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC)
|
||||
_glfw.egl.GetProcAddress("eglCreateStreamProducerSurfaceKHR");
|
||||
eglGetProcAddress("eglCreateStreamProducerSurfaceKHR");
|
||||
|
||||
if(!_glfw.egldevice.eglQueryDevicesEXT ||
|
||||
!_glfw.egldevice.eglQueryDeviceStringEXT ||
|
||||
!_glfw.egldevice.eglGetPlatformDisplayEXT ||
|
||||
!_glfw.egldevice.eglGetOutputLayersEXT ||
|
||||
!_glfw.egldevice.eglCreateStreamKHR ||
|
||||
!_glfw.egldevice.eglDestroyStreamKHR ||
|
||||
!_glfw.egldevice.eglStreamConsumerOutputEXT ||
|
||||
!_glfw.egldevice.eglCreateStreamProducerSurfaceKHR)
|
||||
if(!_glfw.egldevice.QueryDevicesEXT ||
|
||||
!_glfw.egldevice.QueryDeviceStringEXT ||
|
||||
!_glfw.egldevice.GetPlatformDisplayEXT ||
|
||||
!_glfw.egldevice.GetOutputLayersEXT ||
|
||||
!_glfw.egldevice.CreateStreamKHR ||
|
||||
!_glfw.egldevice.DestroyStreamKHR ||
|
||||
!_glfw.egldevice.StreamConsumerOutputEXT ||
|
||||
!_glfw.egldevice.CreateStreamProducerSurfaceKHR)
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: Missing required function(s)");
|
||||
"EGLDevice: Failed to find required EGL extension functions");
|
||||
return GLFW_FALSE;
|
||||
}
|
||||
return GLFW_TRUE;
|
||||
@ -90,7 +90,7 @@ static EGLDeviceEXT getEGLDevice(void)
|
||||
"EGLDevice: EGL_EXT_device base extensions not found");
|
||||
}
|
||||
|
||||
if (!_glfw.egldevice.eglQueryDevicesEXT(0, NULL, &num_devs))
|
||||
if (!eglQueryDevicesEXT(0, NULL, &num_devs))
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: Falied to query EGLDevice");
|
||||
@ -98,7 +98,7 @@ static EGLDeviceEXT getEGLDevice(void)
|
||||
if (num_devs < 1)
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: No Devices Found");
|
||||
"EGLDevice: No devices found");
|
||||
}
|
||||
|
||||
egl_devs = calloc(sizeof(EGLDeviceEXT), num_devs);
|
||||
@ -109,7 +109,7 @@ static EGLDeviceEXT getEGLDevice(void)
|
||||
}
|
||||
|
||||
// Select suitable device
|
||||
if (!_glfw.egldevice.eglQueryDevicesEXT(num_devs, egl_devs, &num_devs))
|
||||
if (!eglQueryDevicesEXT(num_devs, egl_devs, &num_devs))
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: Failed to query EGL devices");
|
||||
@ -119,8 +119,7 @@ static EGLDeviceEXT getEGLDevice(void)
|
||||
{
|
||||
const char* deviceExtensionString;
|
||||
|
||||
deviceExtensionString =
|
||||
_glfw.egldevice.eglQueryDeviceStringEXT(egl_devs[i], EGL_EXTENSIONS);
|
||||
deviceExtensionString = eglQueryDeviceStringEXT(egl_devs[i], EGL_EXTENSIONS);
|
||||
if (_glfwStringInExtensionString("EGL_EXT_device_drm",
|
||||
deviceExtensionString))
|
||||
{
|
||||
@ -134,8 +133,7 @@ static EGLDeviceEXT getEGLDevice(void)
|
||||
if (eglDevice == EGL_NO_DEVICE_EXT)
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: Missing required extension:"
|
||||
" EGL_EXT_device_drm");
|
||||
"EGLDevice: Missing required extension EGL_EXT_device_drm");
|
||||
}
|
||||
return eglDevice;
|
||||
}
|
||||
@ -145,8 +143,7 @@ static int getDRMFd(EGLDeviceEXT eglDevice)
|
||||
int drm_fd;
|
||||
const char* drmName;
|
||||
|
||||
drmName = _glfw.egldevice.eglQueryDeviceStringEXT(eglDevice,
|
||||
EGL_DRM_DEVICE_FILE_EXT);
|
||||
drmName = eglQueryDeviceStringEXT(eglDevice, EGL_DRM_DEVICE_FILE_EXT);
|
||||
if (!drmName || (strnlen(drmName, PATH_MAX) == 0))
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
@ -173,8 +170,7 @@ static GLFWbool initEGLDisplay(EGLDeviceEXT egl_dev, int drm_fd)
|
||||
EGL_NONE
|
||||
};
|
||||
|
||||
_glfw.egl.display =
|
||||
_glfw.egldevice.eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT,
|
||||
_glfw.egl.display = eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT,
|
||||
(void*)egl_dev,
|
||||
displayAttribs);
|
||||
if (_glfw.egl.display == EGL_NO_DISPLAY)
|
||||
@ -196,8 +192,7 @@ static GLFWbool initEGLDisplay(EGLDeviceEXT egl_dev, int drm_fd)
|
||||
displayExtensionString))
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: Missing required extension:"
|
||||
" EGL_EXT_output_base");
|
||||
"EGLDevice: Missing required extension EGL_EXT_output_base");
|
||||
return GLFW_FALSE;
|
||||
}
|
||||
|
||||
@ -205,8 +200,7 @@ static GLFWbool initEGLDisplay(EGLDeviceEXT egl_dev, int drm_fd)
|
||||
displayExtensionString))
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: Missing required extension:"
|
||||
" EGL_EXT_output_drm");
|
||||
"EGLDevice: Missing required extension EGL_EXT_output_drm");
|
||||
return GLFW_FALSE;
|
||||
}
|
||||
|
||||
@ -214,8 +208,7 @@ static GLFWbool initEGLDisplay(EGLDeviceEXT egl_dev, int drm_fd)
|
||||
displayExtensionString))
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: Missing required extension:"
|
||||
" EGL_KHR_stream");
|
||||
"EGLDevice: Missing required extension EGL_KHR_stream");
|
||||
return GLFW_FALSE;
|
||||
}
|
||||
|
||||
@ -223,16 +216,14 @@ static GLFWbool initEGLDisplay(EGLDeviceEXT egl_dev, int drm_fd)
|
||||
displayExtensionString))
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: Missing required extension:"
|
||||
" EGL_KHR_stream_producer_eglsurface");
|
||||
"EGLDevice: Missing required extension EGL_KHR_stream_producer_eglsurface");
|
||||
return GLFW_FALSE;
|
||||
}
|
||||
if (!_glfwStringInExtensionString("EGL_EXT_stream_consumer_egloutput",
|
||||
displayExtensionString))
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: Missing required extension:"
|
||||
" EGL_EXT_stream_consumer_egloutput");
|
||||
"EGLDevice: Missing required extension EGL_EXT_stream_consumer_egloutput");
|
||||
return GLFW_FALSE;
|
||||
}
|
||||
|
||||
@ -290,3 +281,4 @@ const char* _glfwPlatformGetVersionString(void)
|
||||
#endif
|
||||
;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
//========================================================================
|
||||
// GLFW 3.2 EGLDevice - www.glfw.org
|
||||
// GLFW 3.3 EGLDevice - www.glfw.org
|
||||
//------------------------------------------------------------------------
|
||||
// Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
|
||||
//
|
||||
@ -58,8 +58,7 @@ static GLFWbool pickConnector(_GLFWmonitor* monitor, int drm_fd, drmModeRes* res
|
||||
drmModeGetEncoder(drm_fd, monitor->egldevice.encId);
|
||||
if (!enc_info) {
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: Unable to query DRM-KMS"
|
||||
" information for connector index %d", i);
|
||||
"EGLDevice: Unable to query DRM-KMS information for connector index %d", i);
|
||||
}
|
||||
|
||||
// Select the modesize
|
||||
@ -163,3 +162,4 @@ void _glfwPlatformSetGammaRamp(_GLFWmonitor* monitor, const GLFWgammaramp* ramp)
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: _glfwPlatformSetGammaRamp not implemented");
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
//========================================================================
|
||||
// GLFW 3.2 EGLDevice - www.glfw.org
|
||||
// GLFW 3.3 EGLDevice - www.glfw.org
|
||||
//------------------------------------------------------------------------
|
||||
// Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
|
||||
//
|
||||
@ -24,9 +24,6 @@
|
||||
//
|
||||
//========================================================================
|
||||
|
||||
#ifndef _glfw3_egldevice_h_
|
||||
#define _glfw3_egldevice_h_
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/time.h>
|
||||
@ -77,6 +74,16 @@ typedef EGLBoolean (EGLAPIENTRY * PFNEGLSTREAMCONSUMEROUTPUTEXTPROC)(EGLDisplay,
|
||||
typedef EGLSurface (EGLAPIENTRY * PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC)(EGLDisplay,EGLConfig,EGLStreamKHR,const EGLint*);
|
||||
typedef EGLBoolean (EGLAPIENTRY * PFNEGLSTREAMATTRIBKHRPROC)(EGLDisplay,EGLStreamKHR,EGLenum,EGLint);
|
||||
typedef EGLBoolean (EGLAPIENTRY * PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC)(EGLDisplay,EGLStreamKHR,const EGLAttrib*);
|
||||
#define eglQueryDevicesEXT _glfw.egldevice.QueryDevicesEXT
|
||||
#define eglQueryDeviceStringEXT _glfw.egldevice.QueryDeviceStringEXT
|
||||
#define eglGetPlatformDisplayEXT _glfw.egldevice.GetPlatformDisplayEXT
|
||||
#define eglGetOutputLayersEXT _glfw.egldevice.GetOutputLayersEXT
|
||||
#define eglCreateStreamKHR _glfw.egldevice.CreateStreamKHR
|
||||
#define eglDestroyStreamKHR _glfw.egldevice.DestroyStreamKHR
|
||||
#define eglStreamConsumerOutputEXT _glfw.egldevice.StreamConsumerOutputEXT
|
||||
#define eglCreateStreamProducerSurfaceKHR _glfw.egldevice.CreateStreamProducerSurfaceKHR
|
||||
#define eglStreamAttribKHR _glfw.egldevice.StreamAttribKHR
|
||||
#define eglStreamConsumerAcquireAttribKHR _glfw.egldevice.StreamConsumerAcquireAttribKHR
|
||||
|
||||
#define _glfw_dlopen(name) dlopen(name, RTLD_LAZY | RTLD_LOCAL)
|
||||
#define _glfw_dlclose(handle) dlclose(handle)
|
||||
@ -85,17 +92,17 @@ typedef EGLBoolean (EGLAPIENTRY * PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC)(EGLD
|
||||
#define _GLFW_EGL_NATIVE_DISPLAY EGL_DEFAULT_DISPLAY
|
||||
#define _GLFW_EGL_NATIVE_WINDOW ((EGLNativeWindowType)window->egldevice.handle)
|
||||
|
||||
#define _GLFW_PLATFORM_WINDOW_STATE _GLFWwindowEgldevice egldevice
|
||||
#define _GLFW_PLATFORM_LIBRARY_WINDOW_STATE _GLFWlibraryEgldevice egldevice
|
||||
#define _GLFW_PLATFORM_MONITOR_STATE _GLFWmonitorEgldevice egldevice
|
||||
#define _GLFW_PLATFORM_CURSOR_STATE _GLFWcursorEgldevice egldevice
|
||||
#define _GLFW_PLATFORM_WINDOW_STATE _GLFWwindowEGLDevice egldevice
|
||||
#define _GLFW_PLATFORM_LIBRARY_WINDOW_STATE _GLFWlibraryEGLDevice egldevice
|
||||
#define _GLFW_PLATFORM_MONITOR_STATE _GLFWmonitorEGLDevice egldevice
|
||||
#define _GLFW_PLATFORM_CURSOR_STATE _GLFWcursorEGLDevice egldevice
|
||||
|
||||
#define _GLFW_PLATFORM_CONTEXT_STATE
|
||||
#define _GLFW_PLATFORM_LIBRARY_CONTEXT_STATE
|
||||
|
||||
// EGLDEVICE-specific per-window data
|
||||
// EGLDevice-specific per-window data
|
||||
//
|
||||
typedef struct _GLFWwindowEgldevice
|
||||
typedef struct _GLFWwindowEGLDevice
|
||||
{
|
||||
int xsurfsize, ysurfsize;
|
||||
int xoffset, yoffset;
|
||||
@ -106,38 +113,39 @@ typedef struct _GLFWwindowEgldevice
|
||||
EGLDisplay handle;
|
||||
EGLOutputLayerEXT eglLayer;
|
||||
EGLStreamKHR eglStream;
|
||||
} _GLFWwindowEgldevice;
|
||||
} _GLFWwindowEGLDevice;
|
||||
|
||||
// EGLDEVICE-specific global data
|
||||
// EGLDevice-specific global data
|
||||
//
|
||||
typedef struct _GLFWlibraryEgldevice
|
||||
typedef struct _GLFWlibraryEGLDevice
|
||||
{
|
||||
int drmFd;
|
||||
|
||||
PFNEGLQUERYDEVICESEXTPROC eglQueryDevicesEXT;
|
||||
PFNEGLQUERYDEVICESTRINGEXTPROC eglQueryDeviceStringEXT;
|
||||
PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT;
|
||||
PFNEGLGETOUTPUTLAYERSEXTPROC eglGetOutputLayersEXT;
|
||||
PFNEGLCREATESTREAMKHRPROC eglCreateStreamKHR;
|
||||
PFNEGLDESTROYSTREAMKHRPROC eglDestroyStreamKHR;
|
||||
PFNEGLSTREAMCONSUMEROUTPUTEXTPROC eglStreamConsumerOutputEXT;
|
||||
PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC eglCreateStreamProducerSurfaceKHR;
|
||||
PFNEGLSTREAMATTRIBKHRPROC eglStreamAttribKHR;
|
||||
PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC eglStreamConsumerAcquireAttribKHR;
|
||||
} _GLFWlibraryEgldevice;
|
||||
PFNEGLQUERYDEVICESEXTPROC QueryDevicesEXT;
|
||||
PFNEGLQUERYDEVICESTRINGEXTPROC QueryDeviceStringEXT;
|
||||
PFNEGLGETPLATFORMDISPLAYEXTPROC GetPlatformDisplayEXT;
|
||||
PFNEGLGETOUTPUTLAYERSEXTPROC GetOutputLayersEXT;
|
||||
PFNEGLCREATESTREAMKHRPROC CreateStreamKHR;
|
||||
PFNEGLDESTROYSTREAMKHRPROC DestroyStreamKHR;
|
||||
PFNEGLSTREAMCONSUMEROUTPUTEXTPROC StreamConsumerOutputEXT;
|
||||
PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC CreateStreamProducerSurfaceKHR;
|
||||
PFNEGLSTREAMATTRIBKHRPROC StreamAttribKHR;
|
||||
PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC StreamConsumerAcquireAttribKHR;
|
||||
} _GLFWlibraryEGLDevice;
|
||||
|
||||
// EGLDEVICE-specific per-monitor data
|
||||
// EGLDevice-specific per-monitor data
|
||||
//
|
||||
typedef struct _GLFWmonitorEgldevice {
|
||||
typedef struct _GLFWmonitorEGLDevice
|
||||
{
|
||||
int crtcIndex;
|
||||
uint32_t connId, encId, crtcId;
|
||||
} _GLFWmonitorEgldevice;
|
||||
} _GLFWmonitorEGLDevice;
|
||||
|
||||
// EGLDEVICE-specific per-cursor data
|
||||
// EGLDevice-specific per-cursor data
|
||||
//
|
||||
typedef struct _GLFWcursorEgldevice {
|
||||
} _GLFWcursorEgldevice;
|
||||
typedef struct _GLFWcursorEGLDevice
|
||||
{
|
||||
} _GLFWcursorEGLDevice;
|
||||
|
||||
void _glfwPollMonitorsEGLDevice(void);
|
||||
|
||||
#endif // _glfw3_egldevice_platform_h_
|
||||
|
@ -1,5 +1,5 @@
|
||||
//========================================================================
|
||||
// GLFW 3.2 EGLDevice - www.glfw.org
|
||||
// GLFW 3.3 EGLDevice - www.glfw.org
|
||||
//------------------------------------------------------------------------
|
||||
// Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
|
||||
//
|
||||
@ -57,9 +57,9 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
||||
layerAttribs[0] = EGL_DRM_CRTC_EXT;
|
||||
layerAttribs[1] = (EGLAttrib)monitor->egldevice.crtcId;
|
||||
|
||||
if (!_glfw.egldevice.eglGetOutputLayersEXT(_glfw.egl.display, layerAttribs,
|
||||
&window->egldevice.eglLayer,
|
||||
1, &n) || !n)
|
||||
if (!eglGetOutputLayersEXT(_glfw.egl.display, layerAttribs,
|
||||
&window->egldevice.eglLayer,
|
||||
1, &n) || !n)
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: Unable to obtain EGLOutputLayer");
|
||||
@ -68,7 +68,7 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
||||
|
||||
// Create a stream and connect to the output
|
||||
window->egldevice.eglStream =
|
||||
_glfw.egldevice.eglCreateStreamKHR(_glfw.egl.display, streamAttribs);
|
||||
eglCreateStreamKHR(_glfw.egl.display, streamAttribs);
|
||||
if (window->egldevice.eglStream == EGL_NO_STREAM_KHR)
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
@ -76,9 +76,9 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
||||
eglGetError());
|
||||
return GLFW_FALSE;
|
||||
}
|
||||
if (!_glfw.egldevice.eglStreamConsumerOutputEXT(_glfw.egl.display,
|
||||
window->egldevice.eglStream,
|
||||
window->egldevice.eglLayer))
|
||||
if (!eglStreamConsumerOutputEXT(_glfw.egl.display,
|
||||
window->egldevice.eglStream,
|
||||
window->egldevice.eglLayer))
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: Unable to connect stream (error 0x%x)",
|
||||
@ -90,15 +90,14 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
||||
surfaceAttribs[1] = window->egldevice.xsurfsize;
|
||||
surfaceAttribs[3] = window->egldevice.ysurfsize;
|
||||
window->context.egl.surface =
|
||||
_glfw.egldevice.eglCreateStreamProducerSurfaceKHR(_glfw.egl.display,
|
||||
window->context.egl.config,
|
||||
window->egldevice.eglStream,
|
||||
surfaceAttribs);
|
||||
eglCreateStreamProducerSurfaceKHR(_glfw.egl.display,
|
||||
window->context.egl.config,
|
||||
window->egldevice.eglStream,
|
||||
surfaceAttribs);
|
||||
if (window->context.egl.surface == EGL_NO_SURFACE)
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: Unable to create rendering"
|
||||
" surface (error 0x%x)", eglGetError());
|
||||
"EGLDevice: Unable to create rendering surface (error 0x%x)", eglGetError());
|
||||
return GLFW_FALSE;
|
||||
}
|
||||
|
||||
@ -111,10 +110,7 @@ void _glfwPlatformDestroyWindow(_GLFWwindow* window)
|
||||
window->context.destroy(window);
|
||||
|
||||
if (window->egldevice.eglStream != EGL_NO_STREAM_KHR)
|
||||
{
|
||||
_glfw.egldevice.eglDestroyStreamKHR(_glfw.egl.display,
|
||||
window->egldevice.eglStream);
|
||||
}
|
||||
eglDestroyStreamKHR(_glfw.egl.display, window->egldevice.eglStream);
|
||||
}
|
||||
|
||||
void _glfwPlatformSetWindowTitle(_GLFWwindow* window, const char* title)
|
||||
@ -307,7 +303,7 @@ int _glfwPlatformWindowMaximized(_GLFWwindow* window)
|
||||
|
||||
void _glfwPlatformPollEvents(void)
|
||||
{
|
||||
return;
|
||||
_glfwDetectJoystickConnectionLinux();
|
||||
}
|
||||
|
||||
void _glfwPlatformWaitEvents(void)
|
||||
@ -419,7 +415,7 @@ int _glfwPlatformGetPhysicalDevicePresentationSupport(VkInstance instance,
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: _glfwPlatformGetPhysicalDevicePresentationSupport not supported");
|
||||
return 0;
|
||||
return GLFW_FALSE;
|
||||
}
|
||||
|
||||
VkResult _glfwPlatformCreateWindowSurface(VkInstance instance,
|
||||
@ -429,5 +425,6 @@ VkResult _glfwPlatformCreateWindowSurface(VkInstance instance,
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"EGLDevice: _glfwPlatformCreateWindowSurface not supported");
|
||||
return (VkResult)NULL;
|
||||
return VK_ERROR_INITIALIZATION_FAILED;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user