aboutsummaryrefslogtreecommitdiffhomepage
path: root/video/out/opengl/context_angle.c
Commit message (Collapse)AuthorAge
* win32: build with -DINITGUIDGravatar James Ross-Gowan2016-09-28
| | | | | | | | | | | | We always want to use __declspec(selectany) to declare GUIDs, but manually including <initguid.h> in every file that used GUIDs was error-prone. Since all <initguid.h> does is define INITGUID and include <guiddef.h>, we can remove all references to <initguid.h> and just compile with -DINITGUID to get the same effect. Also, this partially reverts 622bcb0 by re-adding libuuid.a to the build, since apparently some GUIDs (such as GUID_NULL) are not declared in the source file, even when INITGUID is set.
* vo_opengl: angle: new opengl flag to control DirectCompositionGravatar Avi Halachmi (:avih)2016-08-25
| | | | | On some systems DirectComposition might behave poorly. Add an opengl suboption flag 'dcomposition' (default=yes) which can disable it.
* vo_opengl: angle: use WARP if there are no hw adaptersGravatar James Ross-Gowan2016-07-12
| | | | | | | | | | | | | | | This should get mpv working on Windows 7 machines without hardware accelerated graphics adapters. It already worked on Windows 8 and up because those systems would silently fall back to WARP if there was no graphics hardware installed. The normal MPGL_CAP_SW flag is not set, so unlike other opengl backends, this will choose a software adapter even if opengl:sw is not specified. The reason for this is, unlike on Linux, where vo_xv and vo_x11 can be used, mpv on Windows does not have any VO to fall back on when hardware acceleration isn't available, so if software adapters are rejected, the user won't see any video output when using the default settings. WARP seems to perform quite well, so it should be used in this case.
* vo_opengl: angle: try D3D9 when D3D11 fails eglInitializeGravatar James Ross-Gowan2016-07-11
| | | | | This will happen when D3D11 is present on the machine but the supported feature level is too low.
* vo_opengl: angle: update the swapchain on resizeGravatar James Ross-Gowan2016-07-04
| | | | | | | | | | | | | This uses eglPostSubBufferNV to trigger ANGLE to check the window size and update the size of the swapchain to match, which is recommended here: https://groups.google.com/d/msg/angleproject/RvyVkjRCQGU/gfKfT64IAgAJ With the D3D11 backend, using eglPostSubBufferNV with a 0-sized update region will even skip the Present() call, meaning it won't block for a vsync period. Hopefully ANGLE will have a less hacky way of doing this in future. See the relevant ANGLE issue: http://anglebug.com/1438 Fixes #3301
* vo_opengl: angle: prevent DXGI hooking Alt+EnterGravatar James Ross-Gowan2016-06-07
| | | | | | | | | | When ANGLE is using D3D11 and not running in DirectComposition mode, DXGI will hook the video window's message loop and override Alt+Enter to trigger a transition to exclusive fullscreen mode (which doesn't even work with mpv's renderer for some reason.) This behaviour can be disabled by getting a pointer to the IDXGIFactory associated with the D3D11 device and calling MakeWindowAssociation with the appropriate flags.
* vo_opengl: angle: enable DirectCompositionGravatar James Ross-Gowan2016-05-29
| | | | | | This avoids a copy of the video image and lowers vsync jitter. Since there are now two options to add to the window_attribs list, it has been made dynamic.
* vo_opengl: angle: log extension stringGravatar wm42016-05-13
|
* vo_opengl: angle: dynamically load ANGLEGravatar wm42016-05-11
| | | | | | | | | | | | ANGLE is _really_ annoying to build. (Requires special toolchain and a recent MSVC version.) This results in various issues with people having trouble to build mpv against ANGLE (apparently linking it against a prebuilt binary doesn't count, or using binaries from potentially untrusted sources is not wanted). Dynamically loading ANGLE is going to be a huge convenience. This commit implements this, with special focus on keeping it source compatible to a normal build with ANGLE linked at build-time.
* vo_opengl: add an angle-es2 backendGravatar wm42016-05-10
| | | | | | It forces es2 mode on ANGLE. Only useful for testing. Since the normal "angle" backend already falls back to es2 if es3 does not work, this new backend always exit when autoprobing it.
* vo_opengl: angle: avoid fullscreen FBO copy for flippingGravatar wm42016-05-05
| | | | | | | In order to honor the differences between OpenGL and Direct3D coordinate systems, ANGLE uses a full FBO copy merely to flip the final frame vertically. This can be avoided with the EGL_ANGLE_surface_orientation extension.
* vo_opengl: angle: call eglTerminate()Gravatar wm42016-05-05
| | | | | | | | | | | | I hope that this does what we expect it does: destroy the EGLDisplay specific to our HDC. (Some implementations will terminate all EGL contexts in the whole process.) eglReleaseThread() merely calls eglMakeCurrent(0, 0, 0, 0), which is not enough. This commit also fixes the problem fixed with the previous commit, but I think both changes are needed to make our API usage clean.
* Change GPL/LGPL dual-licensed files to LGPLGravatar wm42016-01-19
| | | | | | | | | | | Do this to make the license situation less confusing. This change should be of no consequence, since LGPL is compatible with GPL anyway, and making it LGPL-only does not restrict the use with GPL code. Additionally, the wording implies that this is allowed, and that we can just remove the GPL part.
* vo_opengl: prefix per-backend source files with context_Gravatar wm42015-12-19