| Index: cc/resources/texture_uploader.cc
|
| diff --git a/cc/resources/texture_uploader.cc b/cc/resources/texture_uploader.cc
|
| index 601fa8fbff89de41c26075cf1be5d97dff61fdd3..3d0f68163c955969364e1abc519a1dd4a7304f1f 100644
|
| --- a/cc/resources/texture_uploader.cc
|
| +++ b/cc/resources/texture_uploader.cc
|
| @@ -146,7 +146,14 @@ void TextureUploader::Upload(const uint8* image,
|
| if (is_full_upload)
|
| BeginQuery();
|
|
|
| - UploadWithMapTexSubImage(image, image_rect, source_rect, dest_offset, format);
|
| + if (format == ETC1) {
|
| + // ETC1 does not support subimage uploads.
|
| + DCHECK(is_full_upload);
|
| + UploadWithTexImageETC1(image, size);
|
| + } else {
|
| + UploadWithMapTexSubImage(
|
| + image, image_rect, source_rect, dest_offset, format);
|
| + }
|
|
|
| if (is_full_upload)
|
| EndQuery();
|
| @@ -284,6 +291,22 @@ void TextureUploader::UploadWithMapTexSubImage(const uint8* image,
|
| gl_->UnmapTexSubImage2DCHROMIUM(pixel_dest);
|
| }
|
|
|
| +void TextureUploader::UploadWithTexImageETC1(const uint8* image,
|
| + const gfx::Size& size) {
|
| + TRACE_EVENT0("cc", "TextureUploader::UploadWithTexImageETC1");
|
| + DCHECK_EQ(0, size.width() % 4);
|
| + DCHECK_EQ(0, size.height() % 4);
|
| +
|
| + gl_->CompressedTexImage2D(GL_TEXTURE_2D,
|
| + 0,
|
| + GLInternalFormat(ETC1),
|
| + size.width(),
|
| + size.height(),
|
| + 0,
|
| + Resource::MemorySizeBytes(size, ETC1),
|
| + image);
|
| +}
|
| +
|
| void TextureUploader::ProcessQueries() {
|
| while (!pending_queries_.empty()) {
|
| if (pending_queries_.front()->IsPending())
|
|
|