Commit Graph

97 Commits

Author SHA1 Message Date
Camilla Löwy
56a4cb0a3a Add runtime platform selection
This adds compile-time support for multiple platforms and runtime
detection of them.  Window system related platform functions are now
called from shared code via the function pointer struct _GLFWplatform.

The timer, thread and module loading platform functions are still called
directly by name and the implementation chosen at link-time.  These
functions are the same for any backend on a given OS, including the Null
backend.

The platforms are now enabled via CMake dependent options following the
GLFW_BUILD_<platform> pattern instead of a mix of automagic and ad-hoc
option names.  There is no longer any option for the Null backend as it
is now always enabled.

Much of the struct stitching work in platform.h was based on an earlier
experimental branch for runtime platform selection by @ronchaine.

Every platform function related to windows, contexts, monitors, input,
event processing and Vulkan have been renamed so that multiple sets of
them can exist without colliding.  Calls to these are now routed through
the _glfw.platform struct member.  These changes makes up most of this
commit.

For Wayland and X11 the client library loading and display creation is
used to detect a running compositor/server.  The XDG_SESSION_TYPE
environment variable is ignored for now, as X11 is still by far the more
complete implementation.

Closes #1655
Closes #1958
2021-10-13 21:47:11 +02:00
Camilla Löwy
1d8d1ff3d0 Fix output for missing Vulkan surface extensions
When the Vulkan loader is present but there are no required surface
extensions, as will for example happen with the Null platform, glfwinfo
caused an error in glfwGetPhysicalDevicePresentationSupport and produced
confusing output.
2021-10-12 12:54:34 +02:00
Camilla Löwy
62074f3dea Update glad2 and switch to header-only version
This updates to a newer version of glad2 and switches to the header-only
variant.

This also (finally) switches to the newer glad2 loader signature that
allows us to pass in glfwGetInstanceProcAddress directly.
2021-08-26 16:03:40 +02:00
Camilla Löwy
330f7da746 Add Vulkan device presentation support to glfwinfo
The glfwinfo tool now reports the results of
glfwGetPhysicalDevicePresentationSupport for each physical device.
2021-04-22 22:37:13 +02:00
Camilla Löwy
0beadfdc66 Add window surface creation to glfwinfo
The glfwinfo tool now attempts Vulkan surface creation via
glfwCreateWindowSurface and reports the results.
2021-04-22 22:34:40 +02:00
Camilla Löwy
f90df24244 Add GLFW_X11_XCB_VULKAN_SURFACE flag to glfwinfo 2021-04-22 22:33:40 +02:00
Camilla Löwy
0dea8a4441 EGL: Add support for EGL_ANGLE_platform_angle
This adds basic support for selecting the platform type (rendering
backend) when running on ANGLE.

Related to #1380.
2020-06-29 00:02:22 +02:00
Camilla Löwy
e6a6a99813 Use stdbool more consistently in glfwinfo 2020-06-28 21:23:29 +02:00
Camilla Löwy
1cecb8beb0 Move glfwinfo argument processing before glfwInit
This will allow init hints to be controlled by command-line arguments.
2020-06-28 21:23:29 +02:00
Camilla Löwy
b420ca7404 Add GLFW_CONTEXT_DEBUG window hint alias
This adds GLFW_CONTEXT_DEBUG as a preferred alias for
the GLFW_OPENGL_DEBUG_CONTEXT window hint, as debug contexts are
defined for both OpenGL and OpenGL ES.

Related to #1720.
2020-06-28 19:27:48 +02:00
Camilla Löwy
6abad2efd2 Fix conflict with DEBUG macro defined by Bazel
The Bazel build system may define DEBUG when compiling on macOS, which
caused the glfwinfo test program to fail to build.

Fixes #1537.
2019-07-24 21:29:46 +02:00
Camilla Löwy
537ea4ccf1 Explicitly disable inclusion for test and examples
Thank you, Travis CI, for reminding me that one cannot disable a header
with inclusion guards if it doesn't exist.
2019-05-24 17:28:32 +02:00
Camilla Löwy
c415c71947 Clean up glfwinfo Vulkan version output 2019-05-19 21:10:29 +02:00
Camilla Löwy
144c98bcb3 Simplify glfwinfo Vulkan enumerations 2019-05-19 21:10:29 +02:00
Camilla Löwy
fa025d8f80 Convert glfwinfo to C99 2019-05-19 21:10:29 +02:00
Camilla Löwy
700d1f28d8 Add Vulkan 1.1 support to glfwinfo 2019-05-19 21:10:29 +02:00
Camilla Löwy
d7e30b1c74 Replace glad and the Vulkan SDK with glad2
This removes all dependencies from the GLFW test programs on the Vulkan
SDK.

It also removes support for linking the GLFW shared library (dynamic
library, DLL) against the Vulkan loader static library.
2019-04-15 02:45:48 +02:00
Camilla Löwy
9e54b97cfa Add Cocoa graphics switching to glfwinfo 2019-03-27 15:59:36 +01:00
Camilla Löwy
ad9458a14c Clarify what glfwVulkanSupported means 2017-08-20 14:42:39 +02:00
Camilla Löwy
6d9a58bfef Add glfwInitHint
This allows setting hints that control how the library is initialized,
transforming more compile-time options into run-time ones.
2017-03-01 04:35:41 +01:00
Camilla Löwy
e9560ef021 Add GLFW_OSMESA_CONTEXT_API
This allows the creation of OpenGL contexts via OSMesa on existing
platforms.  It does not add a compile- or link-time dependency on
OSMesa.

Fixes #281.
2017-02-28 20:38:10 +01:00
Camilla Löwy
98bdd36231 Fix glfwVulkanSupported semantics 2017-02-07 21:28:50 +01:00
Camilla Löwy
f4d0c83181 Paperwork done 2016-11-30 14:00:41 +01:00
Camilla Berglund
2aee114950 Clarify glfwinfo output for no Vulkan extensions 2016-11-07 19:53:30 +01:00
Camilla Berglund
28889954ef Use glad booleans in glfwinfo 2016-09-26 14:55:55 +02:00
Camilla Berglund
d3e288cc4d Fix glfwinfo not accepting -c option 2016-08-01 23:13:11 +02:00
Camilla Berglund
3beb200c68 Remove unused variable 2016-07-31 13:48:11 +02:00
Camilla Berglund
757eea2779 Update email address 2016-06-01 21:25:20 +02:00
Camilla Berglund
ef80beab81 Add run-time context creation API selection
Fixes #145.
2016-05-04 17:00:07 +02:00
Camilla Berglund
3f25610d2f Fix uses of deprecated Vulkan symbol 2016-05-02 23:03:43 +02:00
Camilla Berglund
da44625970 Cleanup 2016-02-29 13:19:27 +01:00
Camilla Berglund
7669ade19c Make instance extension count unsigned
Fixes #714.
2016-02-22 10:44:43 +01:00
Camilla Berglund
f3f0eaa59e Add OpenGL error check to glfwinfo 2016-02-19 14:31:37 +01:00
Camilla Berglund
eabc64fb7d Disable unused prototypes 2016-02-17 08:06:38 +01:00
Camilla Berglund
9b75bffc88 Add basic Vulkan support
Added GLFW_INCLUDE_VULKAN.  Added glfwVulkanSupported,
glfwGetRequiredInstanceExtensions, glfwGetInstanceProcAddress,
glfwGetPhysicalDevicePresentationSupport and glfwCreateWindowSurface.
Added port of LunarG SDK tri example.
2016-02-16 14:58:58 +01:00
Camilla Berglund
c2efe87cff Improve glfwinfo extension listing 2016-02-15 08:34:44 +01:00
Camilla Berglund
1e452d5fca Remove work performed by glad 2016-02-15 08:22:32 +01:00
Camilla Berglund
048966bb44 Fix Win32 macro conflict 2015-10-28 03:28:02 +01:00
Camilla Berglund
7be8209d14 Add GLFW_CONTEXT_NO_ERROR window hint
This adds support for the GL_KHR_no_error extension.
2015-10-27 20:36:20 +01:00
Camilla Berglund
1b1ef31228 Make tests and examples use glad 2015-10-14 12:38:18 +02:00
Camilla Berglund
0eccf75f65 Replace GL booleans with public macros 2015-10-13 00:46:02 +02:00
Camilla Berglund
8a4e939a10 Fix glext.h regression in glfwinfo on OS X
The glfwinfo program uses symbols not provided by the glext.h header in
every development environment.

Closes #572.
2015-08-07 16:31:05 +02:00
Camilla Berglund
37e13361f5 Fixed last manual inclusion of glext.h. 2015-07-28 14:51:36 +02:00
Camilla Berglund
cf10e318d6 Formatting. 2015-07-01 14:58:43 +02:00
Camilla Berglund
4f0fc55385 Added version option to glfwinfo. 2015-07-01 14:48:20 +02:00
Camilla Berglund
23195693ed Added glfwinfo options for context and fb hints. 2015-07-01 14:45:48 +02:00
Camilla Berglund
a7fa41612c Fixed printing of GLFW version on usage and error. 2015-07-01 14:15:12 +02:00
Camilla Berglund
5f91ea34de Made glfwinfo options set hints directly. 2015-07-01 14:14:51 +02:00
Camilla Berglund
5abf7841f8 Improved glfwinfo tool.
Added long options to glfwinfo.  Cleaned up code.
2015-06-07 20:40:25 +02:00
Camilla Berglund
439417a22c Comment and string spell check pass. 2015-01-05 22:21:31 +01:00