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

Side by Side Diff: cc/resources/resource_provider.cc

Issue 266743003: Add flag to enable rendering of text using signed distance fields. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Minor formatting cleanup Created 6 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/resources/resource_provider.h" 5 #include "cc/resources/resource_provider.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 if (gr_context) { 459 if (gr_context) {
460 GrBackendTextureDesc desc; 460 GrBackendTextureDesc desc;
461 desc.fFlags = kRenderTarget_GrBackendTextureFlag; 461 desc.fFlags = kRenderTarget_GrBackendTextureFlag;
462 desc.fWidth = resource()->size.width(); 462 desc.fWidth = resource()->size.width();
463 desc.fHeight = resource()->size.height(); 463 desc.fHeight = resource()->size.height();
464 desc.fConfig = ToGrPixelConfig(resource()->format); 464 desc.fConfig = ToGrPixelConfig(resource()->format);
465 desc.fOrigin = kTopLeft_GrSurfaceOrigin; 465 desc.fOrigin = kTopLeft_GrSurfaceOrigin;
466 desc.fTextureHandle = resource()->gl_id; 466 desc.fTextureHandle = resource()->gl_id;
467 skia::RefPtr<GrTexture> gr_texture = 467 skia::RefPtr<GrTexture> gr_texture =
468 skia::AdoptRef(gr_context->wrapBackendTexture(desc)); 468 skia::AdoptRef(gr_context->wrapBackendTexture(desc));
469 surface = skia::AdoptRef( 469 SkSurface::TextRenderMode trm =
470 SkSurface::NewRenderTargetDirect(gr_texture->asRenderTarget())); 470 use_distance_field_text_ ? SkSurface::kDistanceField_TextRenderMode
471 : SkSurface::kStandard_TextRenderMode;
472 surface = skia::AdoptRef(SkSurface::NewRenderTargetDirect(
473 gr_texture->asRenderTarget(), trm));
471 } 474 }
472 break; 475 break;
473 } 476 }
474 case Bitmap: { 477 case Bitmap: {
475 DCHECK(resource()->pixels); 478 DCHECK(resource()->pixels);
476 DCHECK_EQ(RGBA_8888, resource()->format); 479 DCHECK_EQ(RGBA_8888, resource()->format);
477 SkImageInfo image_info = SkImageInfo::MakeN32Premul( 480 SkImageInfo image_info = SkImageInfo::MakeN32Premul(
478 resource()->size.width(), resource()->size.height()); 481 resource()->size.width(), resource()->size.height());
479 surface = skia::AdoptRef(SkSurface::NewRasterDirect( 482 surface = skia::AdoptRef(SkSurface::NewRasterDirect(
480 image_info, resource()->pixels, image_info.minRowBytes())); 483 image_info, resource()->pixels, image_info.minRowBytes()));
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 588
586 ResourceProvider::Child::Child() : marked_for_deletion(false) {} 589 ResourceProvider::Child::Child() : marked_for_deletion(false) {}
587 590
588 ResourceProvider::Child::~Child() {} 591 ResourceProvider::Child::~Child() {}
589 592
590 scoped_ptr<ResourceProvider> ResourceProvider::Create( 593 scoped_ptr<ResourceProvider> ResourceProvider::Create(
591 OutputSurface* output_surface, 594 OutputSurface* output_surface,
592 SharedBitmapManager* shared_bitmap_manager, 595 SharedBitmapManager* shared_bitmap_manager,
593 int highp_threshold_min, 596 int highp_threshold_min,
594 bool use_rgba_4444_texture_format, 597 bool use_rgba_4444_texture_format,
595 size_t id_allocation_chunk_size) { 598 size_t id_allocation_chunk_size,
599 bool use_distance_field_text) {
596 scoped_ptr<ResourceProvider> resource_provider( 600 scoped_ptr<ResourceProvider> resource_provider(
597 new ResourceProvider(output_surface, 601 new ResourceProvider(output_surface,
598 shared_bitmap_manager, 602 shared_bitmap_manager,
599 highp_threshold_min, 603 highp_threshold_min,
600 use_rgba_4444_texture_format, 604 use_rgba_4444_texture_format,
601 id_allocation_chunk_size)); 605 id_allocation_chunk_size,
606 use_distance_field_text));
602 607
603 if (resource_provider->ContextGL()) 608 if (resource_provider->ContextGL())
604 resource_provider->InitializeGL(); 609 resource_provider->InitializeGL();
605 else 610 else
606 resource_provider->InitializeSoftware(); 611 resource_provider->InitializeSoftware();
607 612
608 DCHECK_NE(InvalidType, resource_provider->default_resource_type()); 613 DCHECK_NE(InvalidType, resource_provider->default_resource_type());
609 return resource_provider.Pass(); 614 return resource_provider.Pass();
610 } 615 }
611 616
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after
1240 } 1245 }
1241 1246
1242 ResourceProvider::ScopedWriteLockSoftware::~ScopedWriteLockSoftware() { 1247 ResourceProvider::ScopedWriteLockSoftware::~ScopedWriteLockSoftware() {
1243 resource_provider_->UnlockForWrite(resource_id_); 1248 resource_provider_->UnlockForWrite(resource_id_);
1244 } 1249 }
1245 1250
1246 ResourceProvider::ResourceProvider(OutputSurface* output_surface, 1251 ResourceProvider::ResourceProvider(OutputSurface* output_surface,
1247 SharedBitmapManager* shared_bitmap_manager, 1252 SharedBitmapManager* shared_bitmap_manager,
1248 int highp_threshold_min, 1253 int highp_threshold_min,
1249 bool use_rgba_4444_texture_format, 1254 bool use_rgba_4444_texture_format,
1250 size_t id_allocation_chunk_size) 1255 size_t id_allocation_chunk_size,
1256 bool use_distance_field_text)
1251 : output_surface_(output_surface), 1257 : output_surface_(output_surface),
1252 shared_bitmap_manager_(shared_bitmap_manager), 1258 shared_bitmap_manager_(shared_bitmap_manager),
1253 lost_output_surface_(false), 1259 lost_output_surface_(false),
1254 highp_threshold_min_(highp_threshold_min), 1260 highp_threshold_min_(highp_threshold_min),
1255 next_id_(1), 1261 next_id_(1),
1256 next_child_(1), 1262 next_child_(1),
1257 default_resource_type_(InvalidType), 1263 default_resource_type_(InvalidType),
1258 use_texture_storage_ext_(false), 1264 use_texture_storage_ext_(false),
1259 use_texture_usage_hint_(false), 1265 use_texture_usage_hint_(false),
1260 use_compressed_texture_etc1_(false), 1266 use_compressed_texture_etc1_(false),
1261 max_texture_size_(0), 1267 max_texture_size_(0),
1262 best_texture_format_(RGBA_8888), 1268 best_texture_format_(RGBA_8888),
1263 use_rgba_4444_texture_format_(use_rgba_4444_texture_format), 1269 use_rgba_4444_texture_format_(use_rgba_4444_texture_format),
1264 id_allocation_chunk_size_(id_allocation_chunk_size), 1270 id_allocation_chunk_size_(id_allocation_chunk_size),
1265 use_sync_query_(false) { 1271 use_sync_query_(false),
1272 use_distance_field_text_(use_distance_field_text) {
1266 DCHECK(output_surface_->HasClient()); 1273 DCHECK(output_surface_->HasClient());
1267 DCHECK(id_allocation_chunk_size_); 1274 DCHECK(id_allocation_chunk_size_);
1268 } 1275 }
1269 1276
1270 void ResourceProvider::InitializeSoftware() { 1277 void ResourceProvider::InitializeSoftware() {
1271 DCHECK(thread_checker_.CalledOnValidThread()); 1278 DCHECK(thread_checker_.CalledOnValidThread());
1272 DCHECK_NE(Bitmap, default_resource_type_); 1279 DCHECK_NE(Bitmap, default_resource_type_);
1273 1280
1274 CleanUpGLIfNeeded(); 1281 CleanUpGLIfNeeded();
1275 1282
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
1751 } 1758 }
1752 1759
1753 SkCanvas* ResourceProvider::MapDirectRasterBuffer(ResourceId id) { 1760 SkCanvas* ResourceProvider::MapDirectRasterBuffer(ResourceId id) {
1754 // Resource needs to be locked for write since DirectRasterBuffer writes 1761 // Resource needs to be locked for write since DirectRasterBuffer writes
1755 // directly to it. 1762 // directly to it.
1756 LockForWrite(id); 1763 LockForWrite(id);
1757 Resource* resource = GetResource(id); 1764 Resource* resource = GetResource(id);
1758 if (!resource->direct_raster_buffer.get()) { 1765 if (!resource->direct_raster_buffer.get()) {
1759 resource->direct_raster_buffer.reset( 1766 resource->direct_raster_buffer.reset(
1760 new DirectRasterBuffer(resource, this)); 1767 new DirectRasterBuffer(resource, this));
1768 resource->direct_raster_buffer->SetUseDistanceFieldText(
1769 use_distance_field_text_);
1761 } 1770 }
1762 return resource->direct_raster_buffer->LockForWrite(); 1771 return resource->direct_raster_buffer->LockForWrite();
1763 } 1772 }
1764 1773
1765 void ResourceProvider::UnmapDirectRasterBuffer(ResourceId id) { 1774 void ResourceProvider::UnmapDirectRasterBuffer(ResourceId id) {
1766 Resource* resource = GetResource(id); 1775 Resource* resource = GetResource(id);
1767 DCHECK(resource->direct_raster_buffer.get()); 1776 DCHECK(resource->direct_raster_buffer.get());
1768 resource->direct_raster_buffer->UnlockForWrite(); 1777 resource->direct_raster_buffer->UnlockForWrite();
1769 UnlockForWrite(id); 1778 UnlockForWrite(id);
1770 } 1779 }
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after
2275 ContextProvider* context_provider = output_surface_->context_provider(); 2284 ContextProvider* context_provider = output_surface_->context_provider();
2276 return context_provider ? context_provider->ContextGL() : NULL; 2285 return context_provider ? context_provider->ContextGL() : NULL;
2277 } 2286 }
2278 2287
2279 class GrContext* ResourceProvider::GrContext() const { 2288 class GrContext* ResourceProvider::GrContext() const {
2280 ContextProvider* context_provider = output_surface_->context_provider(); 2289 ContextProvider* context_provider = output_surface_->context_provider();
2281 return context_provider ? context_provider->GrContext() : NULL; 2290 return context_provider ? context_provider->GrContext() : NULL;
2282 } 2291 }
2283 2292
2284 } // namespace cc 2293 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698