Fix CopyTexture to support GL_LUMINANCE/ALPHA/LUMINANCE_ALPHA

A few WebGL tests were failing on Linux/NVIDIA/passthrough because the
luminance workaround doesn't handle the case where the destination
texture is a luminance texture. For now, fallback to CPU readback in
this case.

Bug: chromium:773861
Change-Id: I1b85edccc2e257a5fa19cd496d86443ba96e07ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1695922
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
This commit is contained in:
Jonah Ryan-Davis 2019-07-10 12:58:52 -04:00 коммит произвёл Commit Bot
Родитель fba3e64e80
Коммит 8db211bc8d
1 изменённых файлов: 5 добавлений и 1 удалений

Просмотреть файл

@ -815,7 +815,11 @@ angle::Result TextureGL::copySubTextureHelper(const gl::Context *context,
// Check if the destination is renderable and copy on the GPU
const LevelInfoGL &destLevelInfo = getLevelInfo(target, level);
if (!destSRGB &&
// todo(jonahr): http://crbug.com/773861
// Behavior for now is to fallback to CPU readback implementation if the destination texture
// is a luminance format. The correct solution is to handle both source and destination in the
// luma workaround.
if (!destSRGB && !destLevelInfo.lumaWorkaround.enabled &&
nativegl::SupportsNativeRendering(functions, getType(), destLevelInfo.nativeInternalFormat))
{
bool copySucceeded = false;