mirror of
https://github.com/mpv-player/mpv
synced 2024-12-26 00:42:57 +00:00
vo_gpu: remove mali-fbdev
Useless at this point, I don't even know if it still works, or how to test it.
This commit is contained in:
parent
ba31c15c72
commit
83d7123dc3
@ -5176,8 +5176,6 @@ The following video options are currently all specific to ``--vo=gpu`` and
|
||||
X11/EGL
|
||||
android
|
||||
Android/EGL. Requires ``--wid`` be set to an ``android.view.Surface``.
|
||||
mali-fbdev
|
||||
Direct fbdev/EGL support on some ARM/MALI devices.
|
||||
vdpauglx
|
||||
Use vdpau presentation with GLX as backing. Experimental use only.
|
||||
Using this will have no advantage (other than additional bugs or
|
||||
|
@ -44,7 +44,6 @@ extern const struct ra_ctx_fns ra_ctx_angle;
|
||||
extern const struct ra_ctx_fns ra_ctx_dxgl;
|
||||
extern const struct ra_ctx_fns ra_ctx_rpi;
|
||||
extern const struct ra_ctx_fns ra_ctx_android;
|
||||
extern const struct ra_ctx_fns ra_ctx_mali_fbdev;
|
||||
extern const struct ra_ctx_fns ra_ctx_vdpauglx;
|
||||
|
||||
/* Vulkan */
|
||||
@ -91,9 +90,6 @@ static const struct ra_ctx_fns *contexts[] = {
|
||||
#if HAVE_EGL_DRM
|
||||
&ra_ctx_drm_egl,
|
||||
#endif
|
||||
#if HAVE_MALI_FBDEV
|
||||
&ra_ctx_mali_fbdev,
|
||||
#endif
|
||||
#if HAVE_VDPAU_GL_X11
|
||||
&ra_ctx_vdpauglx,
|
||||
#endif
|
||||
|
@ -1,158 +0,0 @@
|
||||
/*
|
||||
* This file is part of mpv.
|
||||
*
|
||||
* mpv is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* mpv is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with mpv. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <stddef.h>
|
||||
#include <assert.h>
|
||||
#include <unistd.h>
|
||||
#include <dlfcn.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#include <linux/fb.h>
|
||||
#include <EGL/fbdev_window.h>
|
||||
|
||||
#include "common/common.h"
|
||||
#include "context.h"
|
||||
#include "egl_helpers.h"
|
||||
|
||||
static bool get_fbdev_size(int *w, int *h)
|
||||
{
|
||||
int fd = open("/dev/fb0", O_RDWR | O_CLOEXEC);
|
||||
if (fd < 0)
|
||||
return false;
|
||||
|
||||
struct fb_var_screeninfo info = {0};
|
||||
bool ok = !ioctl(fd, FBIOGET_VSCREENINFO, &info);
|
||||
if (ok) {
|
||||
*w = info.xres;
|
||||
*h = info.yres;
|
||||
}
|
||||
|
||||
close(fd);
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
struct priv {
|
||||
struct GL gl;
|
||||
EGLDisplay egl_display;
|
||||
EGLConfig egl_config;
|
||||
EGLContext egl_context;
|
||||
EGLSurface egl_surface;
|
||||
struct fbdev_window egl_window;
|
||||
int w, h;
|
||||
};
|
||||
|
||||
static void mali_uninit(struct ra_ctx *ctx)
|
||||
{
|
||||
struct priv *p = ctx->priv;
|
||||
ra_gl_ctx_uninit(ctx);
|
||||
|
||||
if (p->egl_surface) {
|
||||
eglMakeCurrent(p->egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE,
|
||||
EGL_NO_CONTEXT);
|
||||
eglDestroySurface(p->egl_display, p->egl_surface);
|
||||
}
|
||||
if (p->egl_context)
|
||||
eglDestroyContext(p->egl_display, p->egl_context);
|
||||
eglReleaseThread();
|
||||
}
|
||||
|
||||
static void mali_swap_buffers(struct ra_ctx *ctx)
|
||||
{
|
||||
struct priv *p = ctx->priv;
|
||||
eglSwapBuffers(p->egl_display, p->egl_surface);
|
||||
}
|
||||
|
||||
static bool mali_init(struct ra_ctx *ctx)
|
||||
{
|
||||
struct priv *p = ctx->priv = talloc_zero(ctx, struct priv);
|
||||
|
||||
if (!get_fbdev_size(&p->w, &p->h)) {
|
||||
MP_FATAL(ctx, "Could not get fbdev size.\n");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
p->egl_display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||
if (!eglInitialize(p->egl_display, NULL, NULL)) {
|
||||
MP_FATAL(ctx, "EGL failed to initialize.\n");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
EGLConfig config;
|
||||
if (!mpegl_create_context(ctx, p->egl_display, &p->egl_context, &config))
|
||||
goto fail;
|
||||
|
||||
p->egl_window = (struct fbdev_window){
|
||||
.width = p->w,
|
||||
.height = p->h,
|
||||
};
|
||||
|
||||
p->egl_surface = eglCreateWindowSurface(p->egl_display, config,
|
||||
(EGLNativeWindowType)&p->egl_window, NULL);
|
||||
|
||||
if (p->egl_surface == EGL_NO_SURFACE) {
|
||||
MP_FATAL(ctx, "Could not create EGL surface!\n");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (!eglMakeCurrent(p->egl_display, p->egl_surface, p->egl_surface,
|
||||
p->egl_context))
|
||||
{
|
||||
MP_FATAL(ctx, "Failed to set context!\n");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
mpegl_load_functions(&p->gl, ctx->log);
|
||||
|
||||
struct ra_gl_ctx_params params = {
|
||||
.swap_buffers = mali_swap_buffers,
|
||||
};
|
||||
|
||||
if (!ra_gl_ctx_init(ctx, &p->gl, params))
|
||||
goto fail;
|
||||
|
||||
return true;
|
||||
|
||||
fail:
|
||||
mali_uninit(ctx);
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool mali_reconfig(struct ra_ctx *ctx)
|
||||
{
|
||||
struct priv *p = ctx->priv;
|
||||
ctx->vo->dwidth = p->w;
|
||||
ctx->vo->dheight = p->h;
|
||||
ra_gl_ctx_resize(ctx->swapchain, p->w, p->h, 0);
|
||||
}
|
||||
|
||||
static int mali_control(struct ra_ctx *ctx, int *events, int request, void *arg)
|
||||
{
|
||||
return VO_NOTIMPL;
|
||||
}
|
||||
|
||||
const struct ra_ctx_fns ra_ctx_mali_fbdev = {
|
||||
.type = "opengl",
|
||||
.name = "mali-fbdev",
|
||||
.reconfig = mali_reconfig,
|
||||
.control = mali_control,
|
||||
.init = mali_init,
|
||||
.uninit = mali_uninit,
|
||||
};
|
13
wscript
13
wscript
@ -793,20 +793,11 @@ video_output_features = [
|
||||
'desc': 'OpenGL without platform-specific code (e.g. for libmpv)',
|
||||
'deps': 'libmpv-shared || libmpv-static',
|
||||
'func': check_true,
|
||||
}, {
|
||||
'name': '--mali-fbdev',
|
||||
'desc': 'MALI via Linux fbdev',
|
||||
'deps': 'libdl',
|
||||
'func': compose_checks(
|
||||
check_cc(lib="EGL"),
|
||||
check_statement('EGL/fbdev_window.h', 'struct fbdev_window test'),
|
||||
check_statement('linux/fb.h', 'struct fb_var_screeninfo test'),
|
||||
),
|
||||
}, {
|
||||
'name': '--gl',
|
||||
'desc': 'OpenGL context support',
|
||||
'deps': 'gl-cocoa || gl-x11 || egl-x11 || egl-drm || '
|
||||
+ 'gl-win32 || gl-wayland || rpi || mali-fbdev || '
|
||||
+ 'gl-win32 || gl-wayland || rpi || '
|
||||
+ 'plain-gl',
|
||||
'func': check_true,
|
||||
'req': True,
|
||||
@ -830,7 +821,7 @@ video_output_features = [
|
||||
}, {
|
||||
'name': 'egl-helpers',
|
||||
'desc': 'EGL helper functions',
|
||||
'deps': 'egl-x11 || mali-fbdev || rpi || gl-wayland || egl-drm || ' +
|
||||
'deps': 'egl-x11 || rpi || gl-wayland || egl-drm || ' +
|
||||
'egl-angle-win32 || egl-android',
|
||||
'func': check_true
|
||||
}
|
||||
|
@ -450,7 +450,6 @@ def build(ctx):
|
||||
( "video/out/opengl/context_drm_egl.c", "egl-drm" ),
|
||||
( "video/out/opengl/context_dxinterop.c","gl-dxinterop" ),
|
||||
( "video/out/opengl/context_glx.c", "gl-x11" ),
|
||||
( "video/out/opengl/context_mali_fbdev.c","mali-fbdev" ),
|
||||
( "video/out/opengl/context_rpi.c", "rpi" ),
|
||||
( "video/out/opengl/context_vdpau.c", "vdpau-gl-x11" ),
|
||||
( "video/out/opengl/context_wayland.c", "gl-wayland" ),
|
||||
|
Loading…
Reference in New Issue
Block a user