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

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

Issue 634083002: gpu: Compositor management of GpuMemoryBuffer instances. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cc-pre-chromium-image-refactor
Patch Set: more build fixes Created 6 years, 2 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
« no previous file with comments | « cc/resources/resource_provider.h ('k') | cc/resources/resource_provider_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
11 #include "base/debug/trace_event.h" 11 #include "base/debug/trace_event.h"
12 #include "base/stl_util.h" 12 #include "base/stl_util.h"
13 #include "base/strings/string_split.h" 13 #include "base/strings/string_split.h"
14 #include "base/strings/string_util.h" 14 #include "base/strings/string_util.h"
15 #include "cc/base/util.h" 15 #include "cc/base/util.h"
16 #include "cc/output/gl_renderer.h" // For the GLC() macro. 16 #include "cc/output/gl_renderer.h" // For the GLC() macro.
17 #include "cc/resources/gpu_memory_buffer_manager.h"
17 #include "cc/resources/platform_color.h" 18 #include "cc/resources/platform_color.h"
18 #include "cc/resources/returned_resource.h" 19 #include "cc/resources/returned_resource.h"
19 #include "cc/resources/shared_bitmap_manager.h" 20 #include "cc/resources/shared_bitmap_manager.h"
20 #include "cc/resources/texture_uploader.h" 21 #include "cc/resources/texture_uploader.h"
21 #include "cc/resources/transferable_resource.h" 22 #include "cc/resources/transferable_resource.h"
22 #include "gpu/GLES2/gl2extchromium.h" 23 #include "gpu/GLES2/gl2extchromium.h"
23 #include "gpu/command_buffer/client/gles2_interface.h" 24 #include "gpu/command_buffer/client/gles2_interface.h"
24 #include "third_party/khronos/GLES2/gl2.h" 25 #include "third_party/khronos/GLES2/gl2.h"
25 #include "third_party/khronos/GLES2/gl2ext.h" 26 #include "third_party/khronos/GLES2/gl2ext.h"
26 #include "third_party/skia/include/core/SkSurface.h" 27 #include "third_party/skia/include/core/SkSurface.h"
27 #include "third_party/skia/include/gpu/GrContext.h" 28 #include "third_party/skia/include/gpu/GrContext.h"
28 #include "ui/gfx/frame_time.h" 29 #include "ui/gfx/frame_time.h"
30 #include "ui/gfx/gpu_memory_buffer.h"
29 #include "ui/gfx/rect.h" 31 #include "ui/gfx/rect.h"
30 #include "ui/gfx/vector2d.h" 32 #include "ui/gfx/vector2d.h"
31 33
32 using gpu::gles2::GLES2Interface; 34 using gpu::gles2::GLES2Interface;
33 35
34 namespace cc { 36 namespace cc {
35 37
36 class IdAllocator { 38 class IdAllocator {
37 public: 39 public:
38 virtual ~IdAllocator() {} 40 virtual ~IdAllocator() {}
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 return kBGRA_8888_GrPixelConfig; 106 return kBGRA_8888_GrPixelConfig;
105 case RGBA_4444: 107 case RGBA_4444:
106 return kRGBA_4444_GrPixelConfig; 108 return kRGBA_4444_GrPixelConfig;
107 default: 109 default:
108 break; 110 break;
109 } 111 }
110 DCHECK(false) << "Unsupported resource format."; 112 DCHECK(false) << "Unsupported resource format.";
111 return kSkia8888_GrPixelConfig; 113 return kSkia8888_GrPixelConfig;
112 } 114 }
113 115
116 gfx::GpuMemoryBuffer::Format ToGpuMemoryBufferFormat(ResourceFormat format) {
117 switch (format) {
118 case RGBA_8888:
119 return gfx::GpuMemoryBuffer::Format::RGBA_8888;
120 case BGRA_8888:
121 return gfx::GpuMemoryBuffer::Format::BGRA_8888;
122 case RGBA_4444:
123 case ALPHA_8:
124 case LUMINANCE_8:
125 case RGB_565:
126 case ETC1:
127 break;
128 }
129 NOTREACHED();
130 return gfx::GpuMemoryBuffer::Format::RGBA_8888;
131 }
132
114 class ScopedSetActiveTexture { 133 class ScopedSetActiveTexture {
115 public: 134 public:
116 ScopedSetActiveTexture(GLES2Interface* gl, GLenum unit) 135 ScopedSetActiveTexture(GLES2Interface* gl, GLenum unit)
117 : gl_(gl), unit_(unit) { 136 : gl_(gl), unit_(unit) {
118 DCHECK_EQ(GL_TEXTURE0, ResourceProvider::GetActiveTextureUnit(gl_)); 137 DCHECK_EQ(GL_TEXTURE0, ResourceProvider::GetActiveTextureUnit(gl_));
119 138
120 if (unit_ != GL_TEXTURE0) 139 if (unit_ != GL_TEXTURE0)
121 GLC(gl_, gl_->ActiveTexture(unit_)); 140 GLC(gl_, gl_->ActiveTexture(unit_));
122 } 141 }
123 142
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 target(0), 251 target(0),
233 original_filter(0), 252 original_filter(0),
234 filter(0), 253 filter(0),
235 image_id(0), 254 image_id(0),
236 bound_image_id(0), 255 bound_image_id(0),
237 texture_pool(0), 256 texture_pool(0),
238 wrap_mode(0), 257 wrap_mode(0),
239 hint(TextureHintImmutable), 258 hint(TextureHintImmutable),
240 type(InvalidType), 259 type(InvalidType),
241 format(RGBA_8888), 260 format(RGBA_8888),
242 shared_bitmap(NULL) { 261 shared_bitmap(NULL),
262 gpu_memory_buffer(NULL) {
243 } 263 }
244 264
245 ResourceProvider::Resource::~Resource() {} 265 ResourceProvider::Resource::~Resource() {}
246 266
247 ResourceProvider::Resource::Resource(GLuint texture_id, 267 ResourceProvider::Resource::Resource(GLuint texture_id,
248 const gfx::Size& size, 268 const gfx::Size& size,
249 Origin origin, 269 Origin origin,
250 GLenum target, 270 GLenum target,
251 GLenum filter, 271 GLenum filter,
252 GLenum texture_pool, 272 GLenum texture_pool,
(...skipping 25 matching lines...) Expand all
278 target(target), 298 target(target),
279 original_filter(filter), 299 original_filter(filter),
280 filter(filter), 300 filter(filter),
281 image_id(0), 301 image_id(0),
282 bound_image_id(0), 302 bound_image_id(0),
283 texture_pool(texture_pool), 303 texture_pool(texture_pool),
284 wrap_mode(wrap_mode), 304 wrap_mode(wrap_mode),
285 hint(hint), 305 hint(hint),
286 type(GLTexture), 306 type(GLTexture),
287 format(format), 307 format(format),
288 shared_bitmap(NULL) { 308 shared_bitmap(NULL),
309 gpu_memory_buffer(NULL) {
289 DCHECK(wrap_mode == GL_CLAMP_TO_EDGE || wrap_mode == GL_REPEAT); 310 DCHECK(wrap_mode == GL_CLAMP_TO_EDGE || wrap_mode == GL_REPEAT);
290 DCHECK_EQ(origin == Internal, !!texture_pool); 311 DCHECK_EQ(origin == Internal, !!texture_pool);
291 } 312 }
292 313
293 ResourceProvider::Resource::Resource(uint8_t* pixels, 314 ResourceProvider::Resource::Resource(uint8_t* pixels,
294 SharedBitmap* bitmap, 315 SharedBitmap* bitmap,
295 const gfx::Size& size, 316 const gfx::Size& size,
296 Origin origin, 317 Origin origin,
297 GLenum filter, 318 GLenum filter,
298 GLint wrap_mode) 319 GLint wrap_mode)
(...skipping 22 matching lines...) Expand all
321 target(0), 342 target(0),
322 original_filter(filter), 343 original_filter(filter),
323 filter(filter), 344 filter(filter),
324 image_id(0), 345 image_id(0),
325 bound_image_id(0), 346 bound_image_id(0),
326 texture_pool(0), 347 texture_pool(0),
327 wrap_mode(wrap_mode), 348 wrap_mode(wrap_mode),
328 hint(TextureHintImmutable), 349 hint(TextureHintImmutable),
329 type(Bitmap), 350 type(Bitmap),
330 format(RGBA_8888), 351 format(RGBA_8888),
331 shared_bitmap(bitmap) { 352 shared_bitmap(bitmap),
353 gpu_memory_buffer(NULL) {
332 DCHECK(wrap_mode == GL_CLAMP_TO_EDGE || wrap_mode == GL_REPEAT); 354 DCHECK(wrap_mode == GL_CLAMP_TO_EDGE || wrap_mode == GL_REPEAT);
333 DCHECK(origin == Delegated || pixels); 355 DCHECK(origin == Delegated || pixels);
334 if (bitmap) 356 if (bitmap)
335 shared_bitmap_id = bitmap->id(); 357 shared_bitmap_id = bitmap->id();
336 } 358 }
337 359
338 ResourceProvider::Resource::Resource(const SharedBitmapId& bitmap_id, 360 ResourceProvider::Resource::Resource(const SharedBitmapId& bitmap_id,
339 const gfx::Size& size, 361 const gfx::Size& size,
340 Origin origin, 362 Origin origin,
341 GLenum filter, 363 GLenum filter,
(...skipping 24 matching lines...) Expand all
366 original_filter(filter), 388 original_filter(filter),
367 filter(filter), 389 filter(filter),
368 image_id(0), 390 image_id(0),
369 bound_image_id(0), 391 bound_image_id(0),
370 texture_pool(0), 392 texture_pool(0),
371 wrap_mode(wrap_mode), 393 wrap_mode(wrap_mode),
372 hint(TextureHintImmutable), 394 hint(TextureHintImmutable),
373 type(Bitmap), 395 type(Bitmap),
374 format(RGBA_8888), 396 format(RGBA_8888),
375 shared_bitmap_id(bitmap_id), 397 shared_bitmap_id(bitmap_id),
376 shared_bitmap(NULL) { 398 shared_bitmap(NULL),
399 gpu_memory_buffer(NULL) {
377 DCHECK(wrap_mode == GL_CLAMP_TO_EDGE || wrap_mode == GL_REPEAT); 400 DCHECK(wrap_mode == GL_CLAMP_TO_EDGE || wrap_mode == GL_REPEAT);
378 } 401 }
379 402
380 ResourceProvider::Child::Child() : marked_for_deletion(false) {} 403 ResourceProvider::Child::Child() : marked_for_deletion(false) {}
381 404
382 ResourceProvider::Child::~Child() {} 405 ResourceProvider::Child::~Child() {}
383 406
384 scoped_ptr<ResourceProvider> ResourceProvider::Create( 407 scoped_ptr<ResourceProvider> ResourceProvider::Create(
385 OutputSurface* output_surface, 408 OutputSurface* output_surface,
386 SharedBitmapManager* shared_bitmap_manager, 409 SharedBitmapManager* shared_bitmap_manager,
410 GpuMemoryBufferManager* gpu_memory_buffer_manager,
387 BlockingTaskRunner* blocking_main_thread_task_runner, 411 BlockingTaskRunner* blocking_main_thread_task_runner,
388 int highp_threshold_min, 412 int highp_threshold_min,
389 bool use_rgba_4444_texture_format, 413 bool use_rgba_4444_texture_format,
390 size_t id_allocation_chunk_size, 414 size_t id_allocation_chunk_size,
391 bool use_distance_field_text) { 415 bool use_distance_field_text) {
392 scoped_ptr<ResourceProvider> resource_provider( 416 scoped_ptr<ResourceProvider> resource_provider(
393 new ResourceProvider(output_surface, 417 new ResourceProvider(output_surface,
394 shared_bitmap_manager, 418 shared_bitmap_manager,
419 gpu_memory_buffer_manager,
395 blocking_main_thread_task_runner, 420 blocking_main_thread_task_runner,
396 highp_threshold_min, 421 highp_threshold_min,
397 use_rgba_4444_texture_format, 422 use_rgba_4444_texture_format,
398 id_allocation_chunk_size, 423 id_allocation_chunk_size,
399 use_distance_field_text)); 424 use_distance_field_text));
400 425
401 if (resource_provider->ContextGL()) 426 if (resource_provider->ContextGL())
402 resource_provider->InitializeGL(); 427 resource_provider->InitializeGL();
403 else 428 else
404 resource_provider->InitializeSoftware(); 429 resource_provider->InitializeSoftware();
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 if (resource->shared_bitmap) { 717 if (resource->shared_bitmap) {
693 DCHECK(resource->origin != Resource::External); 718 DCHECK(resource->origin != Resource::External);
694 DCHECK_EQ(Bitmap, resource->type); 719 DCHECK_EQ(Bitmap, resource->type);
695 delete resource->shared_bitmap; 720 delete resource->shared_bitmap;
696 resource->pixels = NULL; 721 resource->pixels = NULL;
697 } 722 }
698 if (resource->pixels) { 723 if (resource->pixels) {
699 DCHECK(resource->origin == Resource::Internal); 724 DCHECK(resource->origin == Resource::Internal);
700 delete[] resource->pixels; 725 delete[] resource->pixels;
701 } 726 }
727 if (resource->gpu_memory_buffer) {
728 DCHECK(resource->origin != Resource::External);
729 delete resource->gpu_memory_buffer;
730 }
vmpstr 2014/10/08 17:52:25 Somewhat unrelated, but should we also set allocat
reveman 2014/10/08 19:15:31 I don't think so. We're destroying the resource in
vmpstr 2014/10/08 19:31:13 Acknowledged.
702 resources_.erase(it); 731 resources_.erase(it);
703 } 732 }
704 733
705 ResourceProvider::ResourceType ResourceProvider::GetResourceType( 734 ResourceProvider::ResourceType ResourceProvider::GetResourceType(
706 ResourceId id) { 735 ResourceId id) {
707 return GetResource(id)->type; 736 return GetResource(id)->type;
708 } 737 }
709 738
710 void ResourceProvider::SetPixels(ResourceId id, 739 void ResourceProvider::SetPixels(ResourceId id,
711 const uint8_t* image, 740 const uint8_t* image,
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
917 DCHECK(resource->origin == Resource::Internal); 946 DCHECK(resource->origin == Resource::Internal);
918 resource->locked_for_write = false; 947 resource->locked_for_write = false;
919 } 948 }
920 949
921 const ResourceProvider::Resource* 950 const ResourceProvider::Resource*
922 ResourceProvider::LockForWriteToGpuMemoryBuffer(ResourceId id) { 951 ResourceProvider::LockForWriteToGpuMemoryBuffer(ResourceId id) {
923 Resource* resource = GetResource(id); 952 Resource* resource = GetResource(id);
924 DCHECK_EQ(GLTexture, resource->type); 953 DCHECK_EQ(GLTexture, resource->type);
925 DCHECK(CanLockForWrite(id)); 954 DCHECK(CanLockForWrite(id));
926 955
927 if (!resource->image_id) { 956 if (!resource->gpu_memory_buffer) {
957 scoped_ptr<gfx::GpuMemoryBuffer> gpu_memory_buffer =
958 gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer(
959 resource->size,
960 ToGpuMemoryBufferFormat(resource->format),
961 gfx::GpuMemoryBuffer::MAP);
962 resource->gpu_memory_buffer = gpu_memory_buffer.release();
928 resource->allocated = true; 963 resource->allocated = true;
vmpstr 2014/10/08 17:52:25 If we set allocated to false when deleted, can we
reveman 2014/10/08 19:15:31 Ideally we'd have the destructor do the cleanup wo
vmpstr 2014/10/08 19:31:13 Acknowledged.
929 GLES2Interface* gl = ContextGL();
930 DCHECK(gl);
931 resource->image_id =
932 gl->CreateImageCHROMIUM(resource->size.width(),
933 resource->size.height(),
934 TextureToStorageFormat(resource->format),
935 GL_IMAGE_MAP_CHROMIUM);
936 DCHECK(resource->image_id);
937 } 964 }
938 965
939 resource->locked_for_write = true; 966 resource->locked_for_write = true;
940 return resource; 967 return resource;
941 } 968 }
942 969
943 void ResourceProvider::UnlockForWriteToGpuMemoryBuffer(ResourceId id) { 970 void ResourceProvider::UnlockForWriteToGpuMemoryBuffer(ResourceId id) {
944 Resource* resource = GetResource(id); 971 Resource* resource = GetResource(id);
945 DCHECK(resource->locked_for_write); 972 DCHECK(resource->locked_for_write);
946 DCHECK_EQ(resource->exported_count, 0); 973 DCHECK_EQ(resource->exported_count, 0);
947 DCHECK(resource->origin == Resource::Internal); 974 DCHECK(resource->origin == Resource::Internal);
948 DCHECK_EQ(GLTexture, resource->type); 975 DCHECK_EQ(GLTexture, resource->type);
949 976
977 if (!resource->image_id) {
978 GLES2Interface* gl = ContextGL();
979 DCHECK(gl);
980 resource->image_id =
981 gl->CreateImageCHROMIUM(resource->gpu_memory_buffer->AsClientBuffer(),
982 resource->size.width(),
983 resource->size.height(),
984 GL_RGBA);
985 DCHECK(resource->image_id);
986 }
987
950 resource->locked_for_write = false; 988 resource->locked_for_write = false;
951 resource->dirty_image = true; 989 resource->dirty_image = true;
952 990
953 // GpuMemoryBuffer provides direct access to the memory used by the GPU. 991 // GpuMemoryBuffer provides direct access to the memory used by the GPU.
954 // Read lock fences are required to ensure that we're not trying to map a 992 // Read lock fences are required to ensure that we're not trying to map a
955 // buffer that is currently in-use by the GPU. 993 // buffer that is currently in-use by the GPU.
956 resource->read_lock_fences_enabled = true; 994 resource->read_lock_fences_enabled = true;
957 } 995 }
958 996
959 const ResourceProvider::Resource* ResourceProvider::LockForWriteToSkSurface( 997 const ResourceProvider::Resource* ResourceProvider::LockForWriteToSkSurface(
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
1082 1120
1083 ResourceProvider::ScopedWriteLockSoftware::~ScopedWriteLockSoftware() { 1121 ResourceProvider::ScopedWriteLockSoftware::~ScopedWriteLockSoftware() {
1084 resource_provider_->UnlockForWrite(resource_id_); 1122 resource_provider_->UnlockForWrite(resource_id_);
1085 } 1123 }
1086 1124
1087 ResourceProvider::ScopedWriteLockGpuMemoryBuffer:: 1125 ResourceProvider::ScopedWriteLockGpuMemoryBuffer::
1088 ScopedWriteLockGpuMemoryBuffer(ResourceProvider* resource_provider, 1126 ScopedWriteLockGpuMemoryBuffer(ResourceProvider* resource_provider,
1089 ResourceProvider::ResourceId resource_id) 1127 ResourceProvider::ResourceId resource_id)
1090 : resource_provider_(resource_provider), 1128 : resource_provider_(resource_provider),
1091 resource_id_(resource_id), 1129 resource_id_(resource_id),
1092 image_id_(resource_provider->LockForWriteToGpuMemoryBuffer(resource_id)
1093 ->image_id),
1094 gpu_memory_buffer_( 1130 gpu_memory_buffer_(
1095 resource_provider->ContextGL()->MapImageCHROMIUM(image_id_)) { 1131 resource_provider->LockForWriteToGpuMemoryBuffer(resource_id)
1096 resource_provider->ContextGL()->GetImageParameterivCHROMIUM( 1132 ->gpu_memory_buffer) {
1097 image_id_, GL_IMAGE_ROWBYTES_CHROMIUM, &stride_);
1098 } 1133 }
1099 1134
1100 ResourceProvider::ScopedWriteLockGpuMemoryBuffer:: 1135 ResourceProvider::ScopedWriteLockGpuMemoryBuffer::
1101 ~ScopedWriteLockGpuMemoryBuffer() { 1136 ~ScopedWriteLockGpuMemoryBuffer() {
1102 resource_provider_->ContextGL()->UnmapImageCHROMIUM(image_id_);
1103 resource_provider_->UnlockForWriteToGpuMemoryBuffer(resource_id_); 1137 resource_provider_->UnlockForWriteToGpuMemoryBuffer(resource_id_);
1104 } 1138 }
1105 1139
1106 ResourceProvider::ScopedWriteLockGr::ScopedWriteLockGr( 1140 ResourceProvider::ScopedWriteLockGr::ScopedWriteLockGr(
1107 ResourceProvider* resource_provider, 1141 ResourceProvider* resource_provider,
1108 ResourceProvider::ResourceId resource_id) 1142 ResourceProvider::ResourceId resource_id)
1109 : resource_provider_(resource_provider), 1143 : resource_provider_(resource_provider),
1110 resource_id_(resource_id), 1144 resource_id_(resource_id),
1111 sk_surface_(resource_provider->LockForWriteToSkSurface(resource_id) 1145 sk_surface_(resource_provider->LockForWriteToSkSurface(resource_id)
1112 ->sk_surface.get()) { 1146 ->sk_surface.get()) {
1113 } 1147 }
1114 1148
1115 ResourceProvider::ScopedWriteLockGr::~ScopedWriteLockGr() { 1149 ResourceProvider::ScopedWriteLockGr::~ScopedWriteLockGr() {
1116 resource_provider_->UnlockForWriteToSkSurface(resource_id_); 1150 resource_provider_->UnlockForWriteToSkSurface(resource_id_);
1117 } 1151 }
1118 1152
1119 ResourceProvider::ResourceProvider( 1153 ResourceProvider::ResourceProvider(
1120 OutputSurface* output_surface, 1154 OutputSurface* output_surface,
1121 SharedBitmapManager* shared_bitmap_manager, 1155 SharedBitmapManager* shared_bitmap_manager,
1156 GpuMemoryBufferManager* gpu_memory_buffer_manager,
1122 BlockingTaskRunner* blocking_main_thread_task_runner, 1157 BlockingTaskRunner* blocking_main_thread_task_runner,
1123 int highp_threshold_min, 1158 int highp_threshold_min,
1124 bool use_rgba_4444_texture_format, 1159 bool use_rgba_4444_texture_format,
1125 size_t id_allocation_chunk_size, 1160 size_t id_allocation_chunk_size,
1126 bool use_distance_field_text) 1161 bool use_distance_field_text)
1127 : output_surface_(output_surface), 1162 : output_surface_(output_surface),
1128 shared_bitmap_manager_(shared_bitmap_manager), 1163 shared_bitmap_manager_(shared_bitmap_manager),
1164 gpu_memory_buffer_manager_(gpu_memory_buffer_manager),
1129 blocking_main_thread_task_runner_(blocking_main_thread_task_runner), 1165 blocking_main_thread_task_runner_(blocking_main_thread_task_runner),
1130 lost_output_surface_(false), 1166 lost_output_surface_(false),
1131 highp_threshold_min_(highp_threshold_min), 1167 highp_threshold_min_(highp_threshold_min),
1132 next_id_(1), 1168 next_id_(1),
1133 next_child_(1), 1169 next_child_(1),
1134 default_resource_type_(InvalidType), 1170 default_resource_type_(InvalidType),
1135 use_texture_storage_ext_(false), 1171 use_texture_storage_ext_(false),
1136 use_texture_format_bgra_(false), 1172 use_texture_format_bgra_(false),
1137 use_texture_usage_hint_(false), 1173 use_texture_usage_hint_(false),
1138 use_compressed_texture_etc1_(false), 1174 use_compressed_texture_etc1_(false),
(...skipping 915 matching lines...) Expand 10 before | Expand all | Expand 10 after
2054 ContextProvider* context_provider = output_surface_->context_provider(); 2090 ContextProvider* context_provider = output_surface_->context_provider();
2055 return context_provider ? context_provider->ContextGL() : NULL; 2091 return context_provider ? context_provider->ContextGL() : NULL;
2056 } 2092 }
2057 2093
2058 class GrContext* ResourceProvider::GrContext() const { 2094 class GrContext* ResourceProvider::GrContext() const {
2059 ContextProvider* context_provider = output_surface_->context_provider(); 2095 ContextProvider* context_provider = output_surface_->context_provider();
2060 return context_provider ? context_provider->GrContext() : NULL; 2096 return context_provider ? context_provider->GrContext() : NULL;
2061 } 2097 }
2062 2098
2063 } // namespace cc 2099 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/resource_provider.h ('k') | cc/resources/resource_provider_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698