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

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

Issue 14409006: cc: Changes to use GL API for GpuMemoryBuffers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@glapi
Patch Set: Created 7 years, 8 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 #ifndef CC_RESOURCES_RESOURCE_PROVIDER_H_ 5 #ifndef CC_RESOURCES_RESOURCE_PROVIDER_H_
6 #define CC_RESOURCES_RESOURCE_PROVIDER_H_ 6 #define CC_RESOURCES_RESOURCE_PROVIDER_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 bool CanLockForWrite(ResourceId id); 307 bool CanLockForWrite(ResourceId id);
308 308
309 cc::ContextProvider* offscreen_context_provider() { 309 cc::ContextProvider* offscreen_context_provider() {
310 return offscreen_context_provider_.get(); 310 return offscreen_context_provider_.get();
311 } 311 }
312 void set_offscreen_context_provider( 312 void set_offscreen_context_provider(
313 scoped_refptr<cc::ContextProvider> offscreen_context_provider) { 313 scoped_refptr<cc::ContextProvider> offscreen_context_provider) {
314 offscreen_context_provider_ = offscreen_context_provider; 314 offscreen_context_provider_ = offscreen_context_provider;
315 } 315 }
316 316
317 // Sets if zero-copy GPU memory buffers should be used.
318 void SetUseGpuMemoryBuffers(bool use_gpu_memory_buffers);
319
317 private: 320 private:
318 struct Resource { 321 struct Resource {
319 Resource(); 322 Resource();
320 ~Resource(); 323 ~Resource();
321 Resource(unsigned texture_id, gfx::Size size, GLenum format, GLenum filter); 324 Resource(unsigned texture_id, gfx::Size size, GLenum format, GLenum filter,
325 bool use_gpu_memory_buffer);
322 Resource(uint8_t* pixels, gfx::Size size, GLenum format, GLenum filter); 326 Resource(uint8_t* pixels, gfx::Size size, GLenum format, GLenum filter);
323 327
324 unsigned gl_id; 328 unsigned gl_id;
325 // Pixel buffer used for set pixels without unnecessary copying. 329 // Pixel buffer used for set pixels without unnecessary copying.
326 unsigned gl_pixel_buffer_id; 330 unsigned gl_pixel_buffer_id;
327 // Query used to determine when asynchronous set pixels complete. 331 // Query used to determine when asynchronous set pixels complete.
328 unsigned gl_upload_query_id; 332 unsigned gl_upload_query_id;
329 TextureMailbox mailbox; 333 TextureMailbox mailbox;
330 uint8_t* pixels; 334 uint8_t* pixels;
331 uint8_t* pixel_buffer; 335 uint8_t* pixel_buffer;
332 int lock_for_read_count; 336 int lock_for_read_count;
333 bool locked_for_write; 337 bool locked_for_write;
334 bool external; 338 bool external;
335 bool exported; 339 bool exported;
336 bool marked_for_deletion; 340 bool marked_for_deletion;
337 bool pending_set_pixels; 341 bool pending_set_pixels;
338 bool set_pixels_completion_forced; 342 bool set_pixels_completion_forced;
339 bool allocated; 343 bool allocated;
340 bool enable_read_lock_fences; 344 bool enable_read_lock_fences;
341 scoped_refptr<Fence> read_lock_fence; 345 scoped_refptr<Fence> read_lock_fence;
342 gfx::Size size; 346 gfx::Size size;
343 GLenum format; 347 GLenum format;
344 // TODO(skyostil): Use a separate sampler object for filter state. 348 // TODO(skyostil): Use a separate sampler object for filter state.
345 GLenum filter; 349 GLenum filter;
346 ResourceType type; 350 ResourceType type;
351 bool use_gpu_memory_buffer;
347 }; 352 };
348 typedef base::hash_map<ResourceId, Resource> ResourceMap; 353 typedef base::hash_map<ResourceId, Resource> ResourceMap;
349 struct Child { 354 struct Child {
350 Child(); 355 Child();
351 ~Child(); 356 ~Child();
352 357
353 ResourceIdMap child_to_parent_map; 358 ResourceIdMap child_to_parent_map;
354 ResourceIdMap parent_to_child_map; 359 ResourceIdMap parent_to_child_map;
355 }; 360 };
356 typedef base::hash_map<int, Child> ChildMap; 361 typedef base::hash_map<int, Child> ChildMap;
(...skipping 15 matching lines...) Expand all
372 377
373 bool TransferResource(WebKit::WebGraphicsContext3D* context, 378 bool TransferResource(WebKit::WebGraphicsContext3D* context,
374 ResourceId id, 379 ResourceId id,
375 TransferableResource* resource); 380 TransferableResource* resource);
376 enum DeleteStyle { 381 enum DeleteStyle {
377 Normal, 382 Normal,
378 ForShutdown, 383 ForShutdown,
379 }; 384 };
380 void DeleteResourceInternal(ResourceMap::iterator it, DeleteStyle style); 385 void DeleteResourceInternal(ResourceMap::iterator it, DeleteStyle style);
381 void LazyAllocate(Resource* resource); 386 void LazyAllocate(Resource* resource);
387 GLenum GetTargetGivenResource(Resource* resource);
382 388
383 OutputSurface* output_surface_; 389 OutputSurface* output_surface_;
384 bool lost_output_surface_; 390 bool lost_output_surface_;
385 ResourceId next_id_; 391 ResourceId next_id_;
386 ResourceMap resources_; 392 ResourceMap resources_;
387 int next_child_; 393 int next_child_;
388 ChildMap children_; 394 ChildMap children_;
389 395
390 ResourceType default_resource_type_; 396 ResourceType default_resource_type_;
391 bool use_texture_storage_ext_; 397 bool use_texture_storage_ext_;
392 bool use_texture_usage_hint_; 398 bool use_texture_usage_hint_;
393 bool use_shallow_flush_; 399 bool use_shallow_flush_;
394 scoped_ptr<TextureUploader> texture_uploader_; 400 scoped_ptr<TextureUploader> texture_uploader_;
395 scoped_ptr<AcceleratedTextureCopier> texture_copier_; 401 scoped_ptr<AcceleratedTextureCopier> texture_copier_;
396 int max_texture_size_; 402 int max_texture_size_;
397 GLenum best_texture_format_; 403 GLenum best_texture_format_;
398 404
399 scoped_refptr<cc::ContextProvider> offscreen_context_provider_; 405 scoped_refptr<cc::ContextProvider> offscreen_context_provider_;
400 406
401 base::ThreadChecker thread_checker_; 407 base::ThreadChecker thread_checker_;
402 408
403 scoped_refptr<Fence> current_read_lock_fence_; 409 scoped_refptr<Fence> current_read_lock_fence_;
404 410
411 bool use_gpu_memory_buffers_;
412
405 DISALLOW_COPY_AND_ASSIGN(ResourceProvider); 413 DISALLOW_COPY_AND_ASSIGN(ResourceProvider);
406 }; 414 };
407 415
408 } // namespace cc 416 } // namespace cc
409 417
410 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_ 418 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698