Combine mask texture parameters into single gfx::RectF
This folds the 4 floats together into a single parameter to be slightly easier to manage, but doesn't change the logic. BUG= Review URL: https://chromiumcodereview.appspot.com/11543013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@172825 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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>());
|
||||
}
|
||||
}
|
||||
|
@ -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(
|
||||
|
@ -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:
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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 =
|
||||
|
@ -153,10 +153,7 @@ IPC_STRUCT_TRAITS_BEGIN(cc::RenderPassDrawQuad)
|
||||
IPC_STRUCT_TRAITS_MEMBER(is_replica)
|
||||
IPC_STRUCT_TRAITS_MEMBER(mask_resource_id)
|
||||
IPC_STRUCT_TRAITS_MEMBER(contents_changed_since_last_frame)
|
||||
IPC_STRUCT_TRAITS_MEMBER(mask_tex_coord_scale_x)
|
||||
IPC_STRUCT_TRAITS_MEMBER(mask_tex_coord_scale_y)
|
||||
IPC_STRUCT_TRAITS_MEMBER(mask_tex_coord_offset_x)
|
||||
IPC_STRUCT_TRAITS_MEMBER(mask_tex_coord_offset_y)
|
||||
IPC_STRUCT_TRAITS_MEMBER(mask_uv_rect)
|
||||
IPC_STRUCT_TRAITS_END()
|
||||
|
||||
IPC_STRUCT_TRAITS_BEGIN(cc::SolidColorDrawQuad)
|
||||
|
@ -129,10 +129,7 @@ class CCMessagesTest : public testing::Test {
|
||||
EXPECT_EQ(a->mask_resource_id, b->mask_resource_id);
|
||||
EXPECT_EQ(a->contents_changed_since_last_frame,
|
||||
b->contents_changed_since_last_frame);
|
||||
EXPECT_EQ(a->mask_tex_coord_scale_x, b->mask_tex_coord_scale_x);
|
||||
EXPECT_EQ(a->mask_tex_coord_scale_y, b->mask_tex_coord_scale_y);
|
||||
EXPECT_EQ(a->mask_tex_coord_offset_x, b->mask_tex_coord_offset_x);
|
||||
EXPECT_EQ(a->mask_tex_coord_offset_y, b->mask_tex_coord_offset_y);
|
||||
EXPECT_EQ(a->mask_uv_rect.ToString(), b->mask_uv_rect.ToString());
|
||||
}
|
||||
|
||||
void Compare(const SolidColorDrawQuad* a, const SolidColorDrawQuad* b) {
|
||||
@ -202,7 +199,6 @@ TEST_F(CCMessagesTest, AllQuads) {
|
||||
float arbitrary_float1 = 0.7f;
|
||||
float arbitrary_float2 = 0.3f;
|
||||
float arbitrary_float3 = 0.9f;
|
||||
float arbitrary_float4 = 0.1f;
|
||||
bool arbitrary_bool1 = true;
|
||||
bool arbitrary_bool2 = false;
|
||||
int arbitrary_int = 5;
|
||||
@ -294,10 +290,7 @@ TEST_F(CCMessagesTest, AllQuads) {
|
||||
arbitrary_bool2,
|
||||
arbitrary_resourceid,
|
||||
arbitrary_rect1,
|
||||
arbitrary_float1,
|
||||
arbitrary_float2,
|
||||
arbitrary_float3,
|
||||
arbitrary_float4);
|
||||
arbitrary_rectf1);
|
||||
scoped_ptr<RenderPassDrawQuad> renderpass_cmp = renderpass_in->Copy(
|
||||
renderpass_in->shared_quad_state, renderpass_in->render_pass_id);
|
||||
|
||||
|
Reference in New Issue
Block a user