summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authore.hakkinen@samsung.com <e.hakkinen@samsung.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-13 11:27:32 +0000
committere.hakkinen@samsung.com <e.hakkinen@samsung.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-13 11:28:35 +0000
commit63c6624b516b83d16a35e392b8185e43a4da344e (patch)
treea54160e9e79f058555c5ecdb8b43d736e933ba38
parentaa77269a36070dec1e748e21b4b4ef7506633a93 (diff)
downloadchromium_src-63c6624b516b83d16a35e392b8185e43a4da344e.zip
chromium_src-63c6624b516b83d16a35e392b8185e43a4da344e.tar.gz
chromium_src-63c6624b516b83d16a35e392b8185e43a4da344e.tar.bz2
Fix interchange of red and blue content when using rgba_4444_textures
Content is swizzled when texture format has different component order than expected format by platform. RGBA_4444 implies to use 4444 bits and does not affect component order. So, no need to swizzle contents. BUG=399634 Review URL: https://codereview.chromium.org/460563003 Cr-Commit-Position: refs/heads/master@{#289266} git-svn-id: svn://svn.chromium.org/chrome/trunk/src@289266 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--AUTHORS3
-rw-r--r--cc/output/renderer_pixeltest.cc42
-rw-r--r--cc/resources/platform_color.h2
-rw-r--r--cc/test/data/blue.pngbin0 -> 590 bytes
4 files changed, 45 insertions, 2 deletions
diff --git a/AUTHORS b/AUTHORS
index f8e36ea..a2c593c 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -109,7 +109,7 @@ Dongwoo Joshua Im <dw.im@samsung.com>
Douglas F. Turner <doug.turner@gmail.com>
Eduardo Lima (Etrunko) <eduardo.lima@intel.com>
Edward Crossman <tedoc2000@gmail.com>
-Eero Häkkinen <e.hakkinen@partner.samsung.com>
+Eero Häkkinen <e.hakkinen@samsung.com>
Egor Starkov <egor.starkov@samsung.com>
Ehsan Akhgari <ehsan.akhgari@gmail.com>
Elan Ruusamäe <elan.ruusamae@gmail.com>
@@ -366,6 +366,7 @@ Sam McDonald <sam@sammcd.com>
Sanjoy Pal <ncj674@motorola.com>
Sanjoy Pal <sanjoy.pal@samsung.com>
Sanne Wouda <sanne.wouda@gmail.com>
+Sarath Singapati <s.singapati@samsung.com>
Sathish Kuppuswamy <sathish.kuppuswamy@intel.com>
Satoshi Matsuzaki <satoshi.matsuzaki@gmail.com>
Sayan Nayak <sayan.nayak@samsung.com>
diff --git a/cc/output/renderer_pixeltest.cc b/cc/output/renderer_pixeltest.cc
index cd1acde..d4885d3 100644
--- a/cc/output/renderer_pixeltest.cc
+++ b/cc/output/renderer_pixeltest.cc
@@ -2108,6 +2108,48 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) {
ExactPixelComparator(true)));
}
+TEST_F(GLRendererPixelTest, PictureDrawQuadTexture4444) {
+ gfx::Size pile_tile_size(1000, 1000);
+ gfx::Rect viewport(this->device_viewport_size_);
+ ResourceFormat texture_format = RGBA_4444;
+
+ RenderPass::Id id(1, 1);
+ gfx::Transform transform_to_root;
+ scoped_ptr<RenderPass> pass =
+ CreateTestRenderPass(id, viewport, transform_to_root);
+
+ // One viewport-filling blue quad
+ scoped_refptr<FakePicturePileImpl> blue_pile =
+ FakePicturePileImpl::CreateFilledPile(pile_tile_size, viewport.size());
+ SkPaint blue_paint;
+ blue_paint.setColor(SK_ColorBLUE);
+ blue_pile->add_draw_rect_with_paint(viewport, blue_paint);
+ blue_pile->RerecordPile();
+
+ gfx::Transform blue_content_to_target_transform;
+ SharedQuadState* blue_shared_state = CreateTestSharedQuadState(
+ blue_content_to_target_transform, viewport, pass.get());
+
+ PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
+ blue_quad->SetNew(blue_shared_state,
+ viewport,
+ gfx::Rect(),
+ viewport,
+ gfx::RectF(0.f, 0.f, 1.f, 1.f),
+ viewport.size(),
+ texture_format,
+ viewport,
+ 1.f,
+ PicturePileImpl::CreateFromOther(blue_pile));
+
+ RenderPassList pass_list;
+ pass_list.push_back(pass.Pass());
+
+ EXPECT_TRUE(this->RunPixelTest(&pass_list,
+ base::FilePath(FILE_PATH_LITERAL("blue.png")),
+ ExactPixelComparator(true)));
+}
+
TYPED_TEST(RendererPixelTest, WrapModeRepeat) {
gfx::Rect rect(this->device_viewport_size_);
diff --git a/cc/resources/platform_color.h b/cc/resources/platform_color.h
index ecdf7c1..4945dcc 100644
--- a/cc/resources/platform_color.h
+++ b/cc/resources/platform_color.h
@@ -44,7 +44,7 @@ class PlatformColor {
case SOURCE_FORMAT_RGBA8:
return format == RGBA_8888 || format == RGBA_4444;
case SOURCE_FORMAT_BGRA8:
- return format == BGRA_8888;
+ return format == BGRA_8888 || format == RGBA_4444;
}
NOTREACHED();
return false;
diff --git a/cc/test/data/blue.png b/cc/test/data/blue.png
new file mode 100644
index 0000000..48a2680
--- /dev/null
+++ b/cc/test/data/blue.png
Binary files differ