Index: cc/resources/resource_provider.cc |
diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc |
index 3ce8d6361ee257e22c49c7b9203656a9e8b29dba..97bc5e9c5ce211f804a215c185d67a09435d7613 100644 |
--- a/cc/resources/resource_provider.cc |
+++ b/cc/resources/resource_provider.cc |
@@ -466,8 +466,11 @@ skia::RefPtr<SkSurface> ResourceProvider::DirectRasterBuffer::CreateSurface() { |
desc.fTextureHandle = resource()->gl_id; |
skia::RefPtr<GrTexture> gr_texture = |
skia::AdoptRef(gr_context->wrapBackendTexture(desc)); |
- surface = skia::AdoptRef( |
- SkSurface::NewRenderTargetDirect(gr_texture->asRenderTarget())); |
+ SkSurface::TextRenderMode trm = |
+ use_distance_field_text_ ? SkSurface::kDistanceField_TextRenderMode |
+ : SkSurface::kStandard_TextRenderMode; |
+ surface = skia::AdoptRef(SkSurface::NewRenderTargetDirect( |
+ gr_texture->asRenderTarget(), trm)); |
} |
break; |
} |
@@ -592,13 +595,15 @@ scoped_ptr<ResourceProvider> ResourceProvider::Create( |
SharedBitmapManager* shared_bitmap_manager, |
int highp_threshold_min, |
bool use_rgba_4444_texture_format, |
- size_t id_allocation_chunk_size) { |
+ size_t id_allocation_chunk_size, |
+ bool use_distance_field_text) { |
scoped_ptr<ResourceProvider> resource_provider( |
new ResourceProvider(output_surface, |
shared_bitmap_manager, |
highp_threshold_min, |
use_rgba_4444_texture_format, |
- id_allocation_chunk_size)); |
+ id_allocation_chunk_size, |
+ use_distance_field_text)); |
if (resource_provider->ContextGL()) |
resource_provider->InitializeGL(); |
@@ -1247,7 +1252,8 @@ ResourceProvider::ResourceProvider(OutputSurface* output_surface, |
SharedBitmapManager* shared_bitmap_manager, |
int highp_threshold_min, |
bool use_rgba_4444_texture_format, |
- size_t id_allocation_chunk_size) |
+ size_t id_allocation_chunk_size, |
+ bool use_distance_field_text) |
: output_surface_(output_surface), |
shared_bitmap_manager_(shared_bitmap_manager), |
lost_output_surface_(false), |
@@ -1262,7 +1268,8 @@ ResourceProvider::ResourceProvider(OutputSurface* output_surface, |
best_texture_format_(RGBA_8888), |
use_rgba_4444_texture_format_(use_rgba_4444_texture_format), |
id_allocation_chunk_size_(id_allocation_chunk_size), |
- use_sync_query_(false) { |
+ use_sync_query_(false), |
+ use_distance_field_text_(use_distance_field_text) { |
DCHECK(output_surface_->HasClient()); |
DCHECK(id_allocation_chunk_size_); |
} |
@@ -1758,6 +1765,8 @@ SkCanvas* ResourceProvider::MapDirectRasterBuffer(ResourceId id) { |
if (!resource->direct_raster_buffer.get()) { |
resource->direct_raster_buffer.reset( |
new DirectRasterBuffer(resource, this)); |
+ resource->direct_raster_buffer->SetUseDistanceFieldText( |
+ use_distance_field_text_); |
} |
return resource->direct_raster_buffer->LockForWrite(); |
} |