Chromium Code Reviews| 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()) |