Index: cc/resources/video_resource_updater_unittest.cc |
diff --git a/cc/resources/video_resource_updater_unittest.cc b/cc/resources/video_resource_updater_unittest.cc |
index 4788e0ec77b5fc6610065fb3c49e7e96cb325818..e7c982f52487dcdb880ddc5a06b10933e346a7bf 100644 |
--- a/cc/resources/video_resource_updater_unittest.cc |
+++ b/cc/resources/video_resource_updater_unittest.cc |
@@ -311,6 +311,40 @@ TEST_F(VideoResourceUpdaterTestWithF16, HighBitFrame) { |
EXPECT_NEAR(resources2.offset, 0.5, 0.1); |
} |
+class VideoResourceUpdaterTestWithR16 : public VideoResourceUpdaterTest { |
+ public: |
+ VideoResourceUpdaterTestWithR16() : VideoResourceUpdaterTest() { |
+ context3d_->set_support_texture_norm16(true); |
+ } |
+}; |
+ |
+TEST_F(VideoResourceUpdaterTestWithR16, HighBitFrame) { |
+ bool use_stream_video_draw_quad = false; |
+ VideoResourceUpdater updater(context_provider_.get(), |
+ resource_provider3d_.get(), |
+ use_stream_video_draw_quad); |
+ updater.UseR16ForTesting(true); |
+ resource_provider3d_->SetYUVHighbitResourceFormatForTesting(viz::R16_EXT); |
+ scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame(); |
+ |
+ VideoFrameExternalResources resources = |
+ updater.CreateExternalResourcesFromVideoFrame(video_frame); |
+ EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type); |
+ |
+ // multiplier = (1 << shift) + 1.0 / (1 << (bits_per_channel - shift)) |
+ // where shift = 16 - bits_per_channel, and bits_per_channel = 10 |
+ EXPECT_NEAR(resources.multiplier, 64.0625, 0.1); |
+ EXPECT_NEAR(resources.offset, 0.0, 0.1); |
+ |
+ // Create the resource again, to test the path where the |
+ // resources are cached. |
+ VideoFrameExternalResources resources2 = |
+ updater.CreateExternalResourcesFromVideoFrame(video_frame); |
+ EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources2.type); |
+ EXPECT_NEAR(resources2.multiplier, 64.0625, 0.1); |
+ EXPECT_NEAR(resources2.offset, 0.0, 0.1); |
+} |
+ |
TEST_F(VideoResourceUpdaterTest, HighBitFrameSoftwareCompositor) { |
bool use_stream_video_draw_quad = false; |
VideoResourceUpdater updater(nullptr, resource_provider_software_.get(), |