Index: cc/output/renderer_pixeltest.cc |
diff --git a/cc/output/renderer_pixeltest.cc b/cc/output/renderer_pixeltest.cc |
index 70e89cc227d2fe16bfe27b7284ae40a6cd021612..6cd8144734d6768c2d45acd7152bfa1c2ca437a9 100644 |
--- a/cc/output/renderer_pixeltest.cc |
+++ b/cc/output/renderer_pixeltest.cc |
@@ -199,6 +199,7 @@ void CreateTestYUVVideoDrawQuad_FromVideoFrame( |
RenderPass* render_pass, |
VideoResourceUpdater* video_resource_updater, |
const gfx::Rect& rect, |
+ const gfx::Rect& visible_rect, |
ResourceProvider* resource_provider) { |
const bool with_alpha = (video_frame->format() == media::VideoFrame::YV12A); |
const YUVVideoDrawQuad::ColorSpace color_space = |
@@ -248,9 +249,9 @@ void CreateTestYUVVideoDrawQuad_FromVideoFrame( |
YUVVideoDrawQuad* yuv_quad = |
render_pass->CreateAndAppendDrawQuad<YUVVideoDrawQuad>(); |
- yuv_quad->SetNew(shared_state, rect, opaque_rect, rect, tex_coord_rect, |
- video_frame->coded_size(), y_resource, u_resource, |
- v_resource, a_resource, color_space); |
+ yuv_quad->SetNew(shared_state, rect, opaque_rect, visible_rect, |
+ tex_coord_rect, video_frame->coded_size(), y_resource, |
+ u_resource, v_resource, a_resource, color_space); |
} |
void CreateTestYUVVideoDrawQuad_Striped( |
@@ -261,6 +262,7 @@ void CreateTestYUVVideoDrawQuad_Striped( |
RenderPass* render_pass, |
VideoResourceUpdater* video_resource_updater, |
const gfx::Rect& rect, |
+ const gfx::Rect& visible_rect, |
ResourceProvider* resource_provider) { |
scoped_refptr<media::VideoFrame> video_frame = media::VideoFrame::CreateFrame( |
format, rect.size(), rect, rect.size(), base::TimeDelta()); |
@@ -292,7 +294,7 @@ void CreateTestYUVVideoDrawQuad_Striped( |
uint8 alpha_value = is_transparent ? 0 : 128; |
CreateTestYUVVideoDrawQuad_FromVideoFrame( |
shared_state, video_frame, alpha_value, tex_coord_rect, render_pass, |
- video_resource_updater, rect, resource_provider); |
+ video_resource_updater, rect, visible_rect, resource_provider); |
} |
// Creates a video frame of size background_size filled with yuv_background, |
@@ -305,6 +307,7 @@ void CreateTestYUVVideoDrawQuad_TwoColor( |
bool is_transparent, |
const gfx::RectF& tex_coord_rect, |
const gfx::Size& background_size, |
+ const gfx::Rect& visible_rect, |
uint8 y_background, |
uint8 u_background, |
uint8 v_background, |
@@ -356,7 +359,7 @@ void CreateTestYUVVideoDrawQuad_TwoColor( |
uint8 alpha_value = 255; |
CreateTestYUVVideoDrawQuad_FromVideoFrame( |
shared_state, video_frame, alpha_value, tex_coord_rect, render_pass, |
- video_resource_updater, rect, resource_provider); |
+ video_resource_updater, rect, visible_rect, resource_provider); |
} |
void CreateTestYUVVideoDrawQuad_Solid( |
@@ -370,6 +373,7 @@ void CreateTestYUVVideoDrawQuad_Solid( |
RenderPass* render_pass, |
VideoResourceUpdater* video_resource_updater, |
const gfx::Rect& rect, |
+ const gfx::Rect& visible_rect, |
ResourceProvider* resource_provider) { |
scoped_refptr<media::VideoFrame> video_frame = media::VideoFrame::CreateFrame( |
format, rect.size(), rect, rect.size(), base::TimeDelta()); |
@@ -389,7 +393,7 @@ void CreateTestYUVVideoDrawQuad_Solid( |
uint8 alpha_value = is_transparent ? 0 : 128; |
CreateTestYUVVideoDrawQuad_FromVideoFrame( |
shared_state, video_frame, alpha_value, tex_coord_rect, render_pass, |
- video_resource_updater, rect, resource_provider); |
+ video_resource_updater, rect, visible_rect, resource_provider); |
} |
typedef ::testing::Types<GLRenderer, |
@@ -821,15 +825,17 @@ TYPED_TEST(IntersectingQuadGLPixelTest, YUVVideoQuads) { |
CreateTestYUVVideoDrawQuad_TwoColor( |
this->front_quad_state_, media::VideoFrame::YV12J, false, |
- gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), this->quad_rect_.size(), 0, 128, 128, |
- inner_rect, 29, 255, 107, this->render_pass_.get(), |
- this->video_resource_updater_.get(), this->resource_provider_.get()); |
+ gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), this->quad_rect_.size(), |
+ this->quad_rect_, 0, 128, 128, inner_rect, 29, 255, 107, |
+ this->render_pass_.get(), this->video_resource_updater_.get(), |
+ this->resource_provider_.get()); |
CreateTestYUVVideoDrawQuad_TwoColor( |
this->back_quad_state_, media::VideoFrame::YV12J, false, |
- gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), this->quad_rect_.size(), 149, 43, 21, |
- inner_rect, 0, 128, 128, this->render_pass_.get(), |
- this->video_resource_updater2_.get(), this->resource_provider_.get()); |
+ gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), this->quad_rect_.size(), |
+ this->quad_rect_, 149, 43, 21, inner_rect, 0, 128, 128, |
+ this->render_pass_.get(), this->video_resource_updater2_.get(), |
+ this->resource_provider_.get()); |
SCOPED_TRACE("IntersectingVideoQuads"); |
this->template AppendBackgroundAndRunTest<YUVVideoDrawQuad>( |
@@ -932,9 +938,9 @@ class VideoGLRendererPixelTest : public GLRendererPixelTest { |
// the final image. Bleeding will appear on all four sides of the video |
// if the tex coords are not clamped. |
CreateTestYUVVideoDrawQuad_TwoColor( |
- shared_state, format, false, tex_coord_rect, background_size, 0, 0, 0, |
- green_rect, 149, 43, 21, pass.get(), video_resource_updater_.get(), |
- resource_provider_.get()); |
+ shared_state, format, false, tex_coord_rect, background_size, |
+ gfx::Rect(background_size), 0, 0, 0, green_rect, 149, 43, 21, |
+ pass.get(), video_resource_updater_.get(), resource_provider_.get()); |
pass_list->push_back(pass.Pass()); |
} |
@@ -959,7 +965,7 @@ TEST_F(VideoGLRendererPixelTest, SimpleYUVRect) { |
CreateTestYUVVideoDrawQuad_Striped(shared_state, media::VideoFrame::YV12, |
false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), |
pass.get(), video_resource_updater_.get(), |
- rect, resource_provider_.get()); |
+ rect, rect, resource_provider_.get()); |
RenderPassList pass_list; |
pass_list.push_back(pass.Pass()); |
@@ -970,6 +976,30 @@ TEST_F(VideoGLRendererPixelTest, SimpleYUVRect) { |
FuzzyPixelOffByOneComparator(true))); |
} |
+TEST_F(VideoGLRendererPixelTest, ClippedYUVRect) { |
+ gfx::Rect rect(this->device_viewport_size_); |
+ gfx::Rect visible_rect(this->device_viewport_size_.width() * 0.25, |
enne (OOO)
2015/03/16 23:16:55
Can you make this test more robust? Visible rect m
awoloszyn
2015/03/17 02:26:01
This test now has the visible_rect as the viewport
|
+ this->device_viewport_size_.height() * 0.25); |
+ |
+ RenderPassId id(1, 1); |
+ scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); |
+ |
+ SharedQuadState* shared_state = |
+ CreateTestSharedQuadState(gfx::Transform(), rect, pass.get()); |
+ |
+ CreateTestYUVVideoDrawQuad_Striped(shared_state, media::VideoFrame::YV12, |
+ false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), |
+ pass.get(), video_resource_updater_.get(), |
+ rect, visible_rect, |
+ resource_provider_.get()); |
+ RenderPassList pass_list; |
+ pass_list.push_back(pass.Pass()); |
+ |
+ EXPECT_TRUE(this->RunPixelTest( |
+ &pass_list, base::FilePath(FILE_PATH_LITERAL("yuv_stripes.png")), |
+ FuzzyPixelOffByOneComparator(true))); |
+} |
+ |
TEST_F(VideoGLRendererPixelTest, OffsetYUVRect) { |
gfx::Rect rect(this->device_viewport_size_); |
@@ -983,7 +1013,7 @@ TEST_F(VideoGLRendererPixelTest, OffsetYUVRect) { |
CreateTestYUVVideoDrawQuad_Striped( |
shared_state, media::VideoFrame::I420, false, |
gfx::RectF(0.125f, 0.25f, 0.75f, 0.5f), pass.get(), |
- video_resource_updater_.get(), rect, resource_provider_.get()); |
+ video_resource_updater_.get(), rect, rect, resource_provider_.get()); |
RenderPassList pass_list; |
pass_list.push_back(pass.Pass()); |
@@ -1007,7 +1037,7 @@ TEST_F(VideoGLRendererPixelTest, SimpleYUVRectBlack) { |
CreateTestYUVVideoDrawQuad_Solid( |
shared_state, media::VideoFrame::YV12, false, |
gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 15, 128, 128, pass.get(), |
- video_resource_updater_.get(), rect, resource_provider_.get()); |
+ video_resource_updater_.get(), rect, rect, resource_provider_.get()); |
RenderPassList pass_list; |
pass_list.push_back(pass.Pass()); |
@@ -1032,7 +1062,7 @@ TEST_F(VideoGLRendererPixelTest, SimpleYUVJRect) { |
CreateTestYUVVideoDrawQuad_Solid( |
shared_state, media::VideoFrame::YV12J, false, |
gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 149, 43, 21, pass.get(), |
- video_resource_updater_.get(), rect, resource_provider_.get()); |
+ video_resource_updater_.get(), rect, rect, resource_provider_.get()); |
RenderPassList pass_list; |
pass_list.push_back(pass.Pass()); |
@@ -1073,7 +1103,7 @@ TEST_F(VideoGLRendererPixelTest, SimpleYUVJRectGrey) { |
CreateTestYUVVideoDrawQuad_Solid( |
shared_state, media::VideoFrame::YV12J, false, |
gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 15, 128, 128, pass.get(), |
- video_resource_updater_.get(), rect, resource_provider_.get()); |
+ video_resource_updater_.get(), rect, rect, resource_provider_.get()); |
RenderPassList pass_list; |
pass_list.push_back(pass.Pass()); |
@@ -1096,7 +1126,7 @@ TEST_F(VideoGLRendererPixelTest, SimpleYUVARect) { |
CreateTestYUVVideoDrawQuad_Striped(shared_state, media::VideoFrame::YV12A, |
false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), |
pass.get(), video_resource_updater_.get(), |
- rect, resource_provider_.get()); |
+ rect, rect, resource_provider_.get()); |
SolidColorDrawQuad* color_quad = |
pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
@@ -1123,7 +1153,7 @@ TEST_F(VideoGLRendererPixelTest, FullyTransparentYUVARect) { |
CreateTestYUVVideoDrawQuad_Striped(shared_state, media::VideoFrame::YV12A, |
true, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), |
pass.get(), video_resource_updater_.get(), |
- rect, resource_provider_.get()); |
+ rect, rect, resource_provider_.get()); |
SolidColorDrawQuad* color_quad = |
pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |