Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(370)

Unified Diff: cc/scheduler/texture_uploader.cc

Issue 27973002: cc: Adding ETC1 support to UIResourceBitmap and ResourceProvider (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed latest comments, rebased Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/scheduler/texture_uploader.cc
diff --git a/cc/scheduler/texture_uploader.cc b/cc/scheduler/texture_uploader.cc
index cebc98689118949bb9081a33b215552133db0aa4..3257dfb6857066d466f286975a07a9a0079fab18 100644
--- a/cc/scheduler/texture_uploader.cc
+++ b/cc/scheduler/texture_uploader.cc
@@ -186,6 +186,12 @@ void TextureUploader::UploadWithTexSubImage(const uint8* image,
return;
DCHECK(image);
+ if (format == ETC1) {
+ UploadWithTexSubImageETC1(
+ image, image_rect, source_rect, dest_offset, format);
+ return;
+ }
+
// Offset from image-rect to source-rect.
gfx::Vector2d offset(source_rect.origin() - image_rect.origin());
@@ -239,6 +245,8 @@ void TextureUploader::UploadWithMapTexSubImage(const uint8* image,
if (source_rect.IsEmpty())
return;
DCHECK(image);
+ // Compressed textures have no implementation of mapTexSubImage.
+ DCHECK_NE(ETC1, format);
// Offset from image-rect to source-rect.
gfx::Vector2d offset(source_rect.origin() - image_rect.origin());
@@ -285,6 +293,32 @@ void TextureUploader::UploadWithMapTexSubImage(const uint8* image,
context_->unmapTexSubImage2DCHROMIUM(pixel_dest);
}
+void TextureUploader::UploadWithTexSubImageETC1(const uint8* image,
no sievers 2013/10/23 22:49:59 nit: UploadWithTexImageETC1 I also suggest callin
powei 2013/10/23 23:25:58 Done.
+ gfx::Rect image_rect,
+ gfx::Rect source_rect,
+ gfx::Vector2d dest_offset,
+ ResourceFormat format) {
+ TRACE_EVENT0("cc", "TextureUploader::UploadWithTexSubImageETC1");
+ // ETC1 does not support subimage uploads yet.
no sievers 2013/10/23 22:49:59 nit: remove the 'yet'.
powei 2013/10/23 23:25:58 Done.
+ DCHECK(image_rect == source_rect);
+ DCHECK_EQ(0, dest_offset.x());
+ DCHECK_EQ(0, dest_offset.y());
+
+ gfx::Size size = source_rect.size();
+ DCHECK_EQ(0, size.width() % 4);
+ DCHECK_EQ(0, size.height() % 4);
+
+ context_->compressedTexImage2D(
+ GL_TEXTURE_2D,
+ 0,
+ GLInternalFormat(format),
+ size.width(),
+ size.height(),
+ 0,
+ Resource::MemorySizeBytes(size, format),
+ image);
+}
+
void TextureUploader::ProcessQueries() {
while (!pending_queries_.empty()) {
if (pending_queries_.front()->IsPending())

Powered by Google App Engine
This is Rietveld 408576698