| Index: cc/resources/resource_provider.cc
|
| diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc
|
| index fc86a436df84065a8edf53b3139cb8bb8c79da63..391f1f40acc677f967b28b0e4d153d513db92c17 100644
|
| --- a/cc/resources/resource_provider.cc
|
| +++ b/cc/resources/resource_provider.cc
|
| @@ -32,6 +32,7 @@
|
| #include "gpu/command_buffer/client/context_support.h"
|
| #include "gpu/command_buffer/client/gles2_interface.h"
|
| #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h"
|
| +#include "media/base/media_switches.h"
|
| #include "skia/ext/texture_handle.h"
|
| #include "third_party/khronos/GLES2/gl2.h"
|
| #include "third_party/khronos/GLES2/gl2ext.h"
|
| @@ -106,6 +107,7 @@ GLenum TextureToStorageFormat(viz::ResourceFormat format) {
|
| case viz::ETC1:
|
| case viz::RED_8:
|
| case viz::LUMINANCE_F16:
|
| + case viz::R16_EXT:
|
| NOTREACHED();
|
| break;
|
| }
|
| @@ -127,6 +129,7 @@ bool IsFormatSupportedForStorage(viz::ResourceFormat format, bool use_bgra) {
|
| case viz::ETC1:
|
| case viz::RED_8:
|
| case viz::LUMINANCE_F16:
|
| + case viz::R16_EXT:
|
| return false;
|
| }
|
| return false;
|
| @@ -354,9 +357,12 @@ ResourceProvider::Settings::Settings(
|
| yuv_resource_format = yuv_highbit_resource_format = viz::RGBA_8888;
|
| } else {
|
| yuv_resource_format = caps.texture_rg ? viz::RED_8 : viz::LUMINANCE_8;
|
| - yuv_highbit_resource_format = caps.texture_half_float_linear
|
| - ? viz::LUMINANCE_F16
|
| - : yuv_resource_format;
|
| + yuv_highbit_resource_format =
|
| + (base::FeatureList::IsEnabled(media::kUseR16Texture) &&
|
| + caps.texture_norm16)
|
| + ? viz::R16_EXT
|
| + : (caps.texture_half_float_linear ? viz::LUMINANCE_F16
|
| + : yuv_resource_format);
|
| }
|
|
|
| GLES2Interface* gl = compositor_context_provider->ContextGL();
|
| @@ -458,6 +464,8 @@ bool ResourceProvider::IsTextureFormatSupported(
|
| return caps.texture_format_etc1;
|
| case viz::RED_8:
|
| return caps.texture_rg;
|
| + case viz::R16_EXT:
|
| + return caps.texture_norm16;
|
| case viz::LUMINANCE_F16:
|
| case viz::RGBA_F16:
|
| return caps.texture_half_float_linear;
|
| @@ -491,6 +499,7 @@ bool ResourceProvider::IsRenderBufferFormatSupported(
|
| case viz::RED_8:
|
| case viz::ETC1:
|
| case viz::LUMINANCE_F16:
|
| + case viz::R16_EXT:
|
| // We don't currently render into these formats. If we need to render into
|
| // these eventually, we should expand this logic.
|
| return false;
|
|
|