diff options
Diffstat (limited to 'cc')
-rw-r--r-- | cc/delegated_renderer_layer_impl_unittest.cc | 2 | ||||
-rw-r--r-- | cc/draw_quad_unittest.cc | 43 | ||||
-rw-r--r-- | cc/gl_renderer.cc | 4 | ||||
-rw-r--r-- | cc/layer_tree_host_impl_unittest.cc | 2 | ||||
-rw-r--r-- | cc/render_pass_draw_quad.cc | 26 | ||||
-rw-r--r-- | cc/render_pass_draw_quad.h | 16 | ||||
-rw-r--r-- | cc/render_surface_impl.cc | 19 | ||||
-rw-r--r-- | cc/software_renderer.cc | 8 | ||||
-rw-r--r-- | cc/test/render_pass_test_common.cc | 5 |
9 files changed, 43 insertions, 82 deletions
diff --git a/cc/delegated_renderer_layer_impl_unittest.cc b/cc/delegated_renderer_layer_impl_unittest.cc index 49e877d..9106831 100644 --- a/cc/delegated_renderer_layer_impl_unittest.cc +++ b/cc/delegated_renderer_layer_impl_unittest.cc @@ -81,7 +81,7 @@ static void addRenderPassQuad(TestRenderPass* toPass, TestRenderPass* contributi SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadState::Create()); sharedState->SetAll(gfx::Transform(), outputRect, outputRect, outputRect, false, 1); scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); - quad->SetNew(sharedState, outputRect, contributingPass->id, false, 0, outputRect, 0, 0, 0, 0); + quad->SetNew(sharedState, outputRect, contributingPass->id, false, 0, outputRect, gfx::RectF()); quadSink.append(quad.PassAs<DrawQuad>(), data); } diff --git a/cc/draw_quad_unittest.cc b/cc/draw_quad_unittest.cc index ecd978d..985f190 100644 --- a/cc/draw_quad_unittest.cc +++ b/cc/draw_quad_unittest.cc @@ -156,6 +156,18 @@ void compareDrawQuad(DrawQuad* quad, DrawQuad* copy, SharedQuadState* copyShared quadAll->SetAll(sharedState.get(), quadRect, quadOpaqueRect, quadVisibleRect, needsBlending, a, b, c, d, e); } \ SETUP_AND_COPY_QUAD_ALL(Type, quadAll); +#define CREATE_QUAD_5_NEW_1(Type, a, b, c, d, e, copyA) \ + scoped_ptr<Type> quadNew(Type::Create()); \ + { QUAD_DATA \ + quadNew->SetNew(sharedState.get(), quadRect, a, b, c, d, e); } \ + SETUP_AND_COPY_QUAD_NEW_1(Type, quadNew, copyA); + +#define CREATE_QUAD_5_ALL_1(Type, a, b, c, d, e, copyA) \ + scoped_ptr<Type> quadAll(Type::Create()); \ + { QUAD_DATA \ + quadAll->SetAll(sharedState.get(), quadRect, quadOpaqueRect, quadVisibleRect, needsBlending, a, b, c, d, e); } \ + SETUP_AND_COPY_QUAD_ALL_1(Type, quadAll, copyA); + #define CREATE_QUAD_6_NEW(Type, a, b, c, d, e, f) \ scoped_ptr<Type> quadNew(Type::Create()); \ { QUAD_DATA \ @@ -192,18 +204,6 @@ void compareDrawQuad(DrawQuad* quad, DrawQuad* copy, SharedQuadState* copyShared quadAll->SetAll(sharedState.get(), quadRect, quadOpaqueRect, quadVisibleRect, needsBlending, a, b, c, d, e, f, g, h); } \ SETUP_AND_COPY_QUAD_ALL(Type, quadAll); -#define CREATE_QUAD_8_NEW_1(Type, a, b, c, d, e, f, g, h, copyA) \ - scoped_ptr<Type> quadNew(Type::Create()); \ - { QUAD_DATA \ - quadNew->SetNew(sharedState.get(), quadRect, a, b, c, d, e, f, g, h); } \ - SETUP_AND_COPY_QUAD_NEW_1(Type, quadNew, copyA); - -#define CREATE_QUAD_8_ALL_1(Type, a, b, c, d, e, f, g, h, copyA) \ - scoped_ptr<Type> quadAll(Type::Create()); \ - { QUAD_DATA \ - quadAll->SetAll(sharedState.get(), quadRect, quadOpaqueRect, quadVisibleRect, needsBlending, a, b, c, d, e, f, g, h); } \ - SETUP_AND_COPY_QUAD_ALL_1(Type, quadAll, copyA); - #define CREATE_QUAD_9_NEW(Type, a, b, c, d, e, f, g, h, i) \ scoped_ptr<Type> quadNew(Type::Create()); \ { QUAD_DATA \ @@ -275,35 +275,26 @@ TEST(DrawQuadTest, copyRenderPassDrawQuad) bool isReplica = true; ResourceProvider::ResourceId maskResourceId = 78; gfx::Rect contentsChangedSinceLastFrame(42, 11, 74, 24); - float maskTexCoordScaleX = 33; - float maskTexCoordScaleY = 19; - float maskTexCoordOffsetX = -45; - float maskTexCoordOffsetY = -21; + gfx::RectF maskUVRect(-45, -21, 33, 19); RenderPass::Id copiedRenderPassId(235, 11); CREATE_SHARED_STATE(); - CREATE_QUAD_8_NEW_1(RenderPassDrawQuad, renderPassId, isReplica, maskResourceId, contentsChangedSinceLastFrame, maskTexCoordScaleX, maskTexCoordScaleY, maskTexCoordOffsetX, maskTexCoordOffsetY, copiedRenderPassId); + CREATE_QUAD_5_NEW_1(RenderPassDrawQuad, renderPassId, isReplica, maskResourceId, contentsChangedSinceLastFrame, maskUVRect, copiedRenderPassId); EXPECT_EQ(DrawQuad::RENDER_PASS, copyQuad->material); EXPECT_EQ(copiedRenderPassId, copyQuad->render_pass_id); EXPECT_EQ(isReplica, copyQuad->is_replica); EXPECT_EQ(maskResourceId, copyQuad->mask_resource_id); EXPECT_RECT_EQ(contentsChangedSinceLastFrame, copyQuad->contents_changed_since_last_frame); - EXPECT_EQ(maskTexCoordScaleX, copyQuad->mask_tex_coord_scale_x); - EXPECT_EQ(maskTexCoordScaleY, copyQuad->mask_tex_coord_scale_y); - EXPECT_EQ(maskTexCoordOffsetX, copyQuad->mask_tex_coord_offset_x); - EXPECT_EQ(maskTexCoordOffsetY, copyQuad->mask_tex_coord_offset_y); + EXPECT_EQ(maskUVRect.ToString(), copyQuad->mask_uv_rect.ToString()); - CREATE_QUAD_8_ALL_1(RenderPassDrawQuad, renderPassId, isReplica, maskResourceId, contentsChangedSinceLastFrame, maskTexCoordScaleX, maskTexCoordScaleY, maskTexCoordOffsetX, maskTexCoordOffsetY, copiedRenderPassId); + CREATE_QUAD_5_ALL_1(RenderPassDrawQuad, renderPassId, isReplica, maskResourceId, contentsChangedSinceLastFrame, maskUVRect, copiedRenderPassId); EXPECT_EQ(DrawQuad::RENDER_PASS, copyQuad->material); EXPECT_EQ(copiedRenderPassId, copyQuad->render_pass_id); EXPECT_EQ(isReplica, copyQuad->is_replica); EXPECT_EQ(maskResourceId, copyQuad->mask_resource_id); EXPECT_RECT_EQ(contentsChangedSinceLastFrame, copyQuad->contents_changed_since_last_frame); - EXPECT_EQ(maskTexCoordScaleX, copyQuad->mask_tex_coord_scale_x); - EXPECT_EQ(maskTexCoordScaleY, copyQuad->mask_tex_coord_scale_y); - EXPECT_EQ(maskTexCoordOffsetX, copyQuad->mask_tex_coord_offset_x); - EXPECT_EQ(maskTexCoordOffsetY, copyQuad->mask_tex_coord_offset_y); + EXPECT_EQ(maskUVRect.ToString(), copyQuad->mask_uv_rect.ToString()); } TEST(DrawQuadTest, copySolidColorDrawQuad) diff --git a/cc/gl_renderer.cc b/cc/gl_renderer.cc index a40dd3a..384e443 100644 --- a/cc/gl_renderer.cc +++ b/cc/gl_renderer.cc @@ -628,8 +628,8 @@ void GLRenderer::drawRenderPassQuad(DrawingFrame& frame, const RenderPassDrawQua DCHECK(shaderMaskTexCoordOffsetLocation != 1); GLC(context(), context()->activeTexture(GL_TEXTURE1)); GLC(context(), context()->uniform1i(shaderMaskSamplerLocation, 1)); - GLC(context(), context()->uniform2f(shaderMaskTexCoordScaleLocation, quad->mask_tex_coord_scale_x, quad->mask_tex_coord_scale_y)); - GLC(context(), context()->uniform2f(shaderMaskTexCoordOffsetLocation, quad->mask_tex_coord_offset_x, quad->mask_tex_coord_offset_y)); + GLC(context(), context()->uniform2f(shaderMaskTexCoordOffsetLocation, quad->mask_uv_rect.x(), quad->mask_uv_rect.y())); + GLC(context(), context()->uniform2f(shaderMaskTexCoordScaleLocation, quad->mask_uv_rect.width(), quad->mask_uv_rect.height())); m_resourceProvider->bindForSampling(quad->mask_resource_id, GL_TEXTURE_2D, GL_LINEAR); GLC(context(), context()->activeTexture(GL_TEXTURE0)); } diff --git a/cc/layer_tree_host_impl_unittest.cc b/cc/layer_tree_host_impl_unittest.cc index 622a623..e40608c 100644 --- a/cc/layer_tree_host_impl_unittest.cc +++ b/cc/layer_tree_host_impl_unittest.cc @@ -4319,7 +4319,7 @@ static void configureRenderPassTestData(const char* testScript, RenderPassRemova gfx::Rect quadRect = gfx::Rect(0, 0, 1, 1); gfx::Rect contentsChangedRect = contentsChanged ? quadRect : gfx::Rect(); scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); - quad->SetNew(testData.sharedQuadState.get(), quadRect, newRenderPassId, isReplica, 1, contentsChangedRect, 1, 1, 0, 0); + quad->SetNew(testData.sharedQuadState.get(), quadRect, newRenderPassId, isReplica, 1, contentsChangedRect, gfx::RectF(0, 0, 1, 1)); renderPass->AppendQuad(quad.PassAs<DrawQuad>()); } } diff --git a/cc/render_pass_draw_quad.cc b/cc/render_pass_draw_quad.cc index 5f3df08..f0ae447 100644 --- a/cc/render_pass_draw_quad.cc +++ b/cc/render_pass_draw_quad.cc @@ -9,11 +9,7 @@ namespace cc { RenderPassDrawQuad::RenderPassDrawQuad() : render_pass_id(RenderPass::Id(-1, -1)), is_replica(false), - mask_resource_id(-1), - mask_tex_coord_scale_x(0), - mask_tex_coord_scale_y(0), - mask_tex_coord_offset_x(0), - mask_tex_coord_offset_y(0) { + mask_resource_id(-1) { } scoped_ptr<RenderPassDrawQuad> RenderPassDrawQuad::Create() { @@ -35,10 +31,7 @@ void RenderPassDrawQuad::SetNew(const SharedQuadState* shared_quad_state, bool is_replica, ResourceProvider::ResourceId mask_resource_id, gfx::Rect contents_changed_since_last_frame, - float mask_tex_coord_scale_x, - float mask_tex_coord_scale_y, - float mask_tex_coord_offset_x, - float mask_tex_coord_offset_y) { + gfx::RectF mask_uv_rect) { DCHECK(render_pass_id.layer_id > 0); DCHECK(render_pass_id.index >= 0); @@ -51,10 +44,7 @@ void RenderPassDrawQuad::SetNew(const SharedQuadState* shared_quad_state, this->is_replica = is_replica; this->mask_resource_id = mask_resource_id; this->contents_changed_since_last_frame = contents_changed_since_last_frame; - this->mask_tex_coord_scale_x = mask_tex_coord_scale_x; - this->mask_tex_coord_scale_y = mask_tex_coord_scale_y; - this->mask_tex_coord_offset_x = mask_tex_coord_offset_x; - this->mask_tex_coord_offset_y = mask_tex_coord_offset_y; + this->mask_uv_rect = mask_uv_rect; } void RenderPassDrawQuad::SetAll(const SharedQuadState* shared_quad_state, @@ -66,10 +56,7 @@ void RenderPassDrawQuad::SetAll(const SharedQuadState* shared_quad_state, bool is_replica, ResourceProvider::ResourceId mask_resource_id, gfx::Rect contents_changed_since_last_frame, - float mask_tex_coord_scale_x, - float mask_tex_coord_scale_y, - float mask_tex_coord_offset_x, - float mask_tex_coord_offset_y) { + gfx::RectF mask_uv_rect) { DCHECK(render_pass_id.layer_id > 0); DCHECK(render_pass_id.index >= 0); @@ -79,10 +66,7 @@ void RenderPassDrawQuad::SetAll(const SharedQuadState* shared_quad_state, this->is_replica = is_replica; this->mask_resource_id = mask_resource_id; this->contents_changed_since_last_frame = contents_changed_since_last_frame; - this->mask_tex_coord_scale_x = mask_tex_coord_scale_x; - this->mask_tex_coord_scale_y = mask_tex_coord_scale_y; - this->mask_tex_coord_offset_x = mask_tex_coord_offset_x; - this->mask_tex_coord_offset_y = mask_tex_coord_offset_y; + this->mask_uv_rect = mask_uv_rect; } const RenderPassDrawQuad* RenderPassDrawQuad::MaterialCast( diff --git a/cc/render_pass_draw_quad.h b/cc/render_pass_draw_quad.h index b4c7c75..629eab9 100644 --- a/cc/render_pass_draw_quad.h +++ b/cc/render_pass_draw_quad.h @@ -24,10 +24,7 @@ class CC_EXPORT RenderPassDrawQuad : public DrawQuad { bool is_replica, ResourceProvider::ResourceId mask_resource_id, gfx::Rect contents_changed_since_last_frame, - float mask_tex_coord_scale_x, - float mask_tex_coord_scale_y, - float mask_tex_coord_offset_x, - float mask_tex_coord_offset_y); + gfx::RectF mask_uv_rect); void SetAll(const SharedQuadState* shared_quad_state, gfx::Rect rect, @@ -38,10 +35,7 @@ class CC_EXPORT RenderPassDrawQuad : public DrawQuad { bool is_replica, ResourceProvider::ResourceId mask_resource_id, gfx::Rect contents_changed_since_last_frame, - float mask_tex_coord_scale_x, - float mask_tex_coord_scale_y, - float mask_tex_coord_offset_x, - float mask_tex_coord_offset_y); + gfx::RectF mask_uv_rect); scoped_ptr<RenderPassDrawQuad> Copy( const SharedQuadState* copied_shared_quad_state, @@ -51,11 +45,7 @@ class CC_EXPORT RenderPassDrawQuad : public DrawQuad { bool is_replica; ResourceProvider::ResourceId mask_resource_id; gfx::Rect contents_changed_since_last_frame; - // TODO(danakj): Make these a tex_coord_rect like TileDrawQuad. - float mask_tex_coord_scale_x; - float mask_tex_coord_scale_y; - float mask_tex_coord_offset_x; - float mask_tex_coord_offset_y; + gfx::RectF mask_uv_rect; static const RenderPassDrawQuad* MaterialCast(const DrawQuad*); private: diff --git a/cc/render_surface_impl.cc b/cc/render_surface_impl.cc index d8d25b6..d721539 100644 --- a/cc/render_surface_impl.cc +++ b/cc/render_surface_impl.cc @@ -225,23 +225,22 @@ void RenderSurfaceImpl::appendQuads(QuadSink& quadSink, AppendQuadsData& appendQ maskLayer = 0; } - float maskTexCoordScaleX = 1; - float maskTexCoordScaleY = 1; - float maskTexCoordOffsetX = 0; - float maskTexCoordOffsetY = 0; + gfx::RectF maskUVRect(0.0f, 0.0f, 1.0f, 1.0f); if (maskLayer) { - maskTexCoordScaleX = contentRect().width() / maskLayer->contentsScaleX() / maskLayer->bounds().width(); - maskTexCoordScaleY = contentRect().height() / maskLayer->contentsScaleY() / maskLayer->bounds().height(); - maskTexCoordOffsetX = static_cast<float>(contentRect().x()) / contentRect().width() * maskTexCoordScaleX; - maskTexCoordOffsetY = static_cast<float>(contentRect().y()) / contentRect().height() * maskTexCoordScaleY; + float scaleX = contentRect().width() / maskLayer->contentsScaleX() / maskLayer->bounds().width(); + float scaleY = contentRect().height() / maskLayer->contentsScaleY() / maskLayer->bounds().height(); + + maskUVRect = gfx::RectF(static_cast<float>(contentRect().x()) / contentRect().width() * scaleX, + static_cast<float>(contentRect().y()) / contentRect().height() * scaleY, + scaleX, + scaleY); } ResourceProvider::ResourceId maskResourceId = maskLayer ? maskLayer->contentsResourceId() : 0; gfx::Rect contentsChangedSinceLastFrame = contentsChanged() ? m_contentRect : gfx::Rect(); scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); - quad->SetNew(sharedQuadState, contentRect(), renderPassId, forReplica, maskResourceId, contentsChangedSinceLastFrame, - maskTexCoordScaleX, maskTexCoordScaleY, maskTexCoordOffsetX, maskTexCoordOffsetY); + quad->SetNew(sharedQuadState, contentRect(), renderPassId, forReplica, maskResourceId, contentsChangedSinceLastFrame, maskUVRect); quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData); } diff --git a/cc/software_renderer.cc b/cc/software_renderer.cc index 87b6fbf..9ebd780 100644 --- a/cc/software_renderer.cc +++ b/cc/software_renderer.cc @@ -321,10 +321,10 @@ void SoftwareRenderer::drawRenderPassQuad(const DrawingFrame& frame, const Rende const SkBitmap* mask = maskLock.skBitmap(); SkRect maskRect = SkRect::MakeXYWH( - quad->mask_tex_coord_offset_x * mask->width(), - quad->mask_tex_coord_offset_y * mask->height(), - quad->mask_tex_coord_scale_x * mask->width(), - quad->mask_tex_coord_scale_y * mask->height()); + quad->mask_uv_rect.x() * mask->width(), + quad->mask_uv_rect.y() * mask->height(), + quad->mask_uv_rect.width() * mask->width(), + quad->mask_uv_rect.height() * mask->height()); SkMatrix maskMat; maskMat.setRectToRect(maskRect, destRect, SkMatrix::kFill_ScaleToFit); diff --git a/cc/test/render_pass_test_common.cc b/cc/test/render_pass_test_common.cc index 1672039..882a86a 100644 --- a/cc/test/render_pass_test_common.cc +++ b/cc/test/render_pass_test_common.cc @@ -67,10 +67,7 @@ void TestRenderPass::AppendOneOfEveryQuadType(cc::ResourceProvider* resourceProv false, 0, rect, - 0, - 0, - 0, - 0); + gfx::RectF()); AppendQuad(render_pass_quad.PassAs<DrawQuad>()); scoped_ptr<cc::SolidColorDrawQuad> solid_color_quad = |