mirror of
https://github.com/mpv-player/mpv
synced 2025-01-05 06:30:06 +00:00
vo_opengl: disable some unavailable features under ES
There are probably many more which I overlooked.
This commit is contained in:
parent
f64665e7e9
commit
de3e26bc84
@ -802,6 +802,8 @@ void glClearTex(GL *gl, GLenum target, GLenum format, GLenum type,
|
||||
void glDownloadTex(GL *gl, GLenum target, GLenum format, GLenum type,
|
||||
void *dataptr, int stride)
|
||||
{
|
||||
if (!gl->GetTexImage)
|
||||
abort();
|
||||
// this is not always correct, but should work for MPlayer
|
||||
glAdjustAlignment(gl, stride);
|
||||
gl->PixelStorei(GL_PACK_ROW_LENGTH, stride / glFmt2bpp(format, type));
|
||||
@ -810,12 +812,13 @@ void glDownloadTex(GL *gl, GLenum target, GLenum format, GLenum type,
|
||||
|
||||
mp_image_t *glGetWindowScreenshot(GL *gl)
|
||||
{
|
||||
if (gl->es)
|
||||
return NULL; // ES can't read from front buffer
|
||||
GLint vp[4]; //x, y, w, h
|
||||
gl->GetIntegerv(GL_VIEWPORT, vp);
|
||||
mp_image_t *image = mp_image_alloc(IMGFMT_RGB24, vp[2], vp[3]);
|
||||
if (!image)
|
||||
return NULL;
|
||||
gl->BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
|
||||
gl->PixelStorei(GL_PACK_ALIGNMENT, 1);
|
||||
gl->PixelStorei(GL_PACK_ROW_LENGTH, 0);
|
||||
gl->ReadBuffer(GL_FRONT);
|
||||
|
@ -1933,7 +1933,7 @@ struct mp_image *gl_video_download_image(struct gl_video *p)
|
||||
|
||||
struct video_image *vimg = &p->image;
|
||||
|
||||
if (!p->have_image)
|
||||
if (!p->have_image || !gl->GetTexImage)
|
||||
return NULL;
|
||||
|
||||
if (p->hwdec_active && p->hwdec->driver->download_image) {
|
||||
@ -2060,7 +2060,6 @@ static bool test_fbo(struct gl_video *p, GLenum format)
|
||||
GL *gl = p->gl;
|
||||
bool success = false;
|
||||
struct fbotex fbo = {0};
|
||||
gl->BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
|
||||
gl->PixelStorei(GL_PACK_ALIGNMENT, 1);
|
||||
gl->PixelStorei(GL_PACK_ROW_LENGTH, 0);
|
||||
if (fbotex_init(p, &fbo, 16, 16, format)) {
|
||||
@ -2145,6 +2144,10 @@ static void check_gl_features(struct gl_video *p)
|
||||
p->opts.scale_sep = false;
|
||||
p->opts.indirect = false;
|
||||
}
|
||||
if (gl->es && p->opts.pbo) {
|
||||
p->opts.pbo = 0;
|
||||
disabled[n_disabled++] = "PBOs (GLES unsupported)";
|
||||
}
|
||||
|
||||
if (n_disabled) {
|
||||
MP_ERR(p, "Some OpenGL extensions not detected, disabling: ");
|
||||
|
Loading…
Reference in New Issue
Block a user