diff options
author | wm4 <wm4@nowhere> | 2017-08-10 17:48:33 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2017-08-10 21:24:31 +0200 |
commit | c6fafbffaca16959dfa2b4bf1eb97861ad66b5ef (patch) | |
tree | decef889171128c27f3a8cb2fcfb552f1b7297be /video/out/opengl/ra_gl.h | |
parent | b2fb3f1340ed7ceb9b3fc8ba4ddec107e3a41a13 (diff) | |
download | mpv-c6fafbffaca16959dfa2b4bf1eb97861ad66b5ef.tar.bz2 mpv-c6fafbffaca16959dfa2b4bf1eb97861ad66b5ef.tar.xz |
vo_opengl: separate hwdec context and mapping, port it to use ra
This does two separate rather intrusive things:
1. Make the hwdec context (which does initialization, provides the
device to the decoder, and other basic state) and frame mapping
(getting textures from a mp_image) separate. This is more
flexible, and you could map multiple images at once. It will
help removing some hwdec special-casing from video.c.
2. Switch all hwdec API use to ra. Of course all code is still
GL specific, but in theory it would be possible to support other
backends. The most important change is that the hwdec interop
returns ra objects, instead of anything GL specific. This removes
the last dependency on GL-specific header files from video.c.
I'm mixing these separate changes because both requires essentially
rewriting all the glue code, so better do them at once. For the same
reason, this change isn't done incrementally.
hwdec_ios.m is untested, since I can't test it. Apart from superficial
mistakes, this also requires dealing with Apple's texture format
fuckups: they force you to use GL_LUMINANCE[_ALPHA] instead of GL_RED
and GL_RG. We also need to report the correct format via ra_tex to
the renderer, which is done by find_la_variant(). It's unknown whether
this works correctly.
hwdec_rpi.c as well as vo_rpi.c are still broken. (I need to pull my
RPI out of a dusty pile of devices and cables, so, later.)
Diffstat (limited to 'video/out/opengl/ra_gl.h')
-rw-r--r-- | video/out/opengl/ra_gl.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/video/out/opengl/ra_gl.h b/video/out/opengl/ra_gl.h index 3b6202cbfb..8707b423dd 100644 --- a/video/out/opengl/ra_gl.h +++ b/video/out/opengl/ra_gl.h @@ -40,10 +40,14 @@ struct ra_renderpass_gl { }; struct ra *ra_create_gl(GL *gl, struct mp_log *log); -struct ra_tex *ra_create_wrapped_texture(struct ra *ra, GLuint gl_texture, - GLenum gl_target, GLint gl_iformat, - GLenum gl_format, GLenum gl_type, - int w, int h); +struct ra_tex *ra_create_wrapped_tex(struct ra *ra, + const struct ra_tex_params *params, + GLuint gl_texture); struct ra_tex *ra_create_wrapped_fb(struct ra *ra, GLuint gl_fbo, int w, int h); GL *ra_gl_get(struct ra *ra); void ra_gl_set_debug(struct ra *ra, bool enable); +void ra_gl_get_format(const struct ra_format *fmt, GLint *out_internal_format, + GLenum *out_format, GLenum *out_type); +void ra_gl_get_raw_tex(struct ra *ra, struct ra_tex *tex, + GLuint *out_texture, GLenum *out_target); +bool ra_is_gl(struct ra *ra); |