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

Unified Diff: cc/scheduler/texture_uploader.cc

Issue 21159007: cc: Adding support for RGBA_4444 tile textures (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Code reviews, fix unittests, add a flag to disable the feature Created 7 years, 3 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 920c38e669275d0992d6b5166a1683464aecaad4..c6c401b24f6a79e4525d4f24bd4e934b6011ea93 100644
--- a/cc/scheduler/texture_uploader.cc
+++ b/cc/scheduler/texture_uploader.cc
@@ -135,7 +135,7 @@ void TextureUploader::Upload(const uint8* image,
gfx::Rect image_rect,
gfx::Rect source_rect,
gfx::Vector2d dest_offset,
- GLenum format,
+ ResourceProvider::Format format,
gfx::Size size) {
CHECK(image_rect.Contains(source_rect));
@@ -148,7 +148,8 @@ void TextureUploader::Upload(const uint8* image,
UploadWithMapTexSubImage(
image, image_rect, source_rect, dest_offset, format);
} else {
- UploadWithTexSubImage(image, image_rect, source_rect, dest_offset, format);
+ UploadWithTexSubImage(
+ image, image_rect, source_rect, dest_offset, format);
}
if (is_full_upload)
@@ -174,11 +175,12 @@ void TextureUploader::ReleaseCachedQueries() {
available_queries_.clear();
}
-void TextureUploader::UploadWithTexSubImage(const uint8* image,
- gfx::Rect image_rect,
- gfx::Rect source_rect,
- gfx::Vector2d dest_offset,
- GLenum format) {
+void TextureUploader::UploadWithTexSubImage(
+ const uint8* image,
+ gfx::Rect image_rect,
+ gfx::Rect source_rect,
+ gfx::Vector2d dest_offset,
+ ResourceProvider::Format format) {
// Instrumentation to debug issue 156107
int source_rect_x = source_rect.x();
int source_rect_y = source_rect.y();
@@ -207,11 +209,12 @@ void TextureUploader::UploadWithTexSubImage(const uint8* image,
gfx::Vector2d offset(source_rect.origin() - image_rect.origin());
const uint8* pixel_source;
- unsigned int bytes_per_pixel = Resource::BytesPerPixel(format);
- // Use 4-byte row alignment (OpenGL default) for upload performance.
- // Assuming that GL_UNPACK_ALIGNMENT has not changed from default.
+ unsigned int bytes_per_pixel = ResourceProvider::BytesPerPixel(format);
+ DCHECK(format != ResourceProvider::RGBA_4444 ||
+ (source_rect.width() % 2) == 0);
unsigned int upload_image_stride =
- RoundUp(bytes_per_pixel * source_rect.width(), 4u);
+ RoundUp(bytes_per_pixel * source_rect.width(),
+ ResourceProvider::GetStride(format));
piman 2013/09/13 04:56:51 I don't understand the change here, to accomodate
kaanb 2013/09/13 19:57:39 Done.
if (upload_image_stride == image_rect.width() * bytes_per_pixel &&
!offset.x()) {
@@ -239,16 +242,17 @@ void TextureUploader::UploadWithTexSubImage(const uint8* image,
dest_offset.y(),
source_rect.width(),
source_rect.height(),
- format,
- GL_UNSIGNED_BYTE,
+ ResourceProvider::GetGLDataFormat(format),
+ ResourceProvider::GetGLDataType(format),
pixel_source);
}
-void TextureUploader::UploadWithMapTexSubImage(const uint8* image,
- gfx::Rect image_rect,
- gfx::Rect source_rect,
- gfx::Vector2d dest_offset,
- GLenum format) {
+void TextureUploader::UploadWithMapTexSubImage(
+ const uint8* image,
+ gfx::Rect image_rect,
+ gfx::Rect source_rect,
+ gfx::Vector2d dest_offset,
+ ResourceProvider::Format format) {
// Instrumentation to debug issue 156107
int source_rect_x = source_rect.x();
int source_rect_y = source_rect.y();
@@ -277,13 +281,13 @@ void TextureUploader::UploadWithMapTexSubImage(const uint8* image,
// Offset from image-rect to source-rect.
gfx::Vector2d offset(source_rect.origin() - image_rect.origin());
- unsigned int bytes_per_pixel = Resource::BytesPerPixel(format);
- // Use 4-byte row alignment (OpenGL default) for upload performance.
- // Assuming that GL_UNPACK_ALIGNMENT has not changed from default.
+ unsigned int bytes_per_pixel = ResourceProvider::BytesPerPixel(format);
enne (OOO) 2013/09/13 01:39:44 unsigned int => size_t, here and elsewhere.
kaanb 2013/09/13 03:43:56 Done.
+ DCHECK(format != ResourceProvider::RGBA_4444 ||
+ (source_rect.width() % 2) == 0);
unsigned int upload_image_stride =
- RoundUp(bytes_per_pixel * source_rect.width(), 4u);
+ RoundUp(bytes_per_pixel * source_rect.width(),
+ ResourceProvider::GetStride(format));
- // Upload tile data via a mapped transfer buffer
uint8* pixel_dest = static_cast<uint8*>(
context_->mapTexSubImage2DCHROMIUM(GL_TEXTURE_2D,
0,
@@ -291,8 +295,10 @@ void TextureUploader::UploadWithMapTexSubImage(const uint8* image,
dest_offset.y(),
source_rect.width(),
source_rect.height(),
- format,
- GL_UNSIGNED_BYTE,
+ ResourceProvider::GetGLDataFormat(
+ format),
+ ResourceProvider::GetGLDataType(
+ format),
GL_WRITE_ONLY));
if (!pixel_dest) {

Powered by Google App Engine
This is Rietveld 408576698