mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 05:41:12 +00:00
34616ad68b
On android video data is provided to webrender via EGL external images. Webrender currently relies on the extension GL_OES_EGL_image_external_essl3 to render these images. Unfortunately, however, there are a number of devices which support GLES 3, but do not support GL_OES_EGL_image_external_essl3. This means we that must use the older GL_OES_EGL_image_external (non-essl3) extension to render video on such devices. This requires shaders to be written in ESSL1 rather than ESSL3. Most of webrender's shaders use too many modern GLSL features to be compatible with ESSL1. For that reason, this patch implements ESSL1 compatible variants of just the composite and cs_scale shaders, as they are both relatively simple. In the happy path, videos are promoted to compositor surfaces and we simply use this new composite shader variant. In other cases, this patch makes it so that we use a render task to perform a copy of the video frame using the cs_scale shader, then the output of that render task can be rendered using the regular ESSL3 TEXTURE_2D variant of whatever shader is required. The extra copy is unfortunate, but rewriting every shader to be ESSL1 compatible is unrealistic. Differential Revision: https://phabricator.services.mozilla.com/D108908 |
||
---|---|---|
.. | ||
2d | ||
angle | ||
cairo | ||
config | ||
docs | ||
gl | ||
graphite2 | ||
harfbuzz | ||
ipc | ||
layers | ||
ots | ||
qcms | ||
sfntly | ||
skia | ||
src | ||
tests | ||
thebes | ||
vr | ||
webrender_bindings | ||
wgpu | ||
wgpu_bindings | ||
wr | ||
ycbcr | ||
moz.build |