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

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

Issue 689463003: cc: Move FallbackFence implementation from GLRenderer to ResourceProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@one-copy-throttling
Patch Set: rebase Created 6 years, 1 month 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/one_copy_raster_worker_pool.cc ('k') | cc/resources/resource_provider.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 #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 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 virtual void Wait() = 0; 351 virtual void Wait() = 0;
352 352
353 protected: 353 protected:
354 friend class base::RefCounted<Fence>; 354 friend class base::RefCounted<Fence>;
355 virtual ~Fence() {} 355 virtual ~Fence() {}
356 356
357 private: 357 private:
358 DISALLOW_COPY_AND_ASSIGN(Fence); 358 DISALLOW_COPY_AND_ASSIGN(Fence);
359 }; 359 };
360 360
361 class SynchronousFence : public ResourceProvider::Fence {
362 public:
363 explicit SynchronousFence(gpu::gles2::GLES2Interface* gl);
364
365 // Overridden from Fence:
366 void Set() override;
367 bool HasPassed() override;
368 void Wait() override;
369
370 // Returns true if fence has been set but not yet synchornized.
371 bool has_synchronized() const { return has_synchronized_; }
372
373 private:
374 ~SynchronousFence() override;
375
376 void Synchronize();
377
378 gpu::gles2::GLES2Interface* gl_;
379 bool has_synchronized_;
380
381 DISALLOW_COPY_AND_ASSIGN(SynchronousFence);
382 };
383
361 // Acquire pixel buffer for resource. The pixel buffer can be used to 384 // Acquire pixel buffer for resource. The pixel buffer can be used to
362 // set resource pixels without performing unnecessary copying. 385 // set resource pixels without performing unnecessary copying.
363 void AcquirePixelBuffer(ResourceId resource); 386 void AcquirePixelBuffer(ResourceId resource);
364 void ReleasePixelBuffer(ResourceId resource); 387 void ReleasePixelBuffer(ResourceId resource);
365 // Map/unmap the acquired pixel buffer. 388 // Map/unmap the acquired pixel buffer.
366 uint8_t* MapPixelBuffer(ResourceId id, int* stride); 389 uint8_t* MapPixelBuffer(ResourceId id, int* stride);
367 void UnmapPixelBuffer(ResourceId id); 390 void UnmapPixelBuffer(ResourceId id);
368 // Asynchronously update pixels from acquired pixel buffer. 391 // Asynchronously update pixels from acquired pixel buffer.
369 void BeginSetPixels(ResourceId id); 392 void BeginSetPixels(ResourceId id);
370 void ForceSetPixelsToComplete(ResourceId id); 393 void ForceSetPixelsToComplete(ResourceId id);
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 base::ThreadChecker thread_checker_; 579 base::ThreadChecker thread_checker_;
557 580
558 scoped_refptr<Fence> current_read_lock_fence_; 581 scoped_refptr<Fence> current_read_lock_fence_;
559 bool use_rgba_4444_texture_format_; 582 bool use_rgba_4444_texture_format_;
560 583
561 const size_t id_allocation_chunk_size_; 584 const size_t id_allocation_chunk_size_;
562 scoped_ptr<IdAllocator> texture_id_allocator_; 585 scoped_ptr<IdAllocator> texture_id_allocator_;
563 scoped_ptr<IdAllocator> buffer_id_allocator_; 586 scoped_ptr<IdAllocator> buffer_id_allocator_;
564 587
565 bool use_sync_query_; 588 bool use_sync_query_;
589 // Fence used for CopyResource if CHROMIUM_sync_query is not supported.
590 scoped_refptr<SynchronousFence> synchronous_fence_;
566 591
567 DISALLOW_COPY_AND_ASSIGN(ResourceProvider); 592 DISALLOW_COPY_AND_ASSIGN(ResourceProvider);
568 }; 593 };
569 594
570 595
571 // TODO(epenner): Move these format conversions to resource_format.h 596 // TODO(epenner): Move these format conversions to resource_format.h
572 // once that builds on mac (npapi.h currently #includes OpenGL.h). 597 // once that builds on mac (npapi.h currently #includes OpenGL.h).
573 inline unsigned BitsPerPixel(ResourceFormat format) { 598 inline unsigned BitsPerPixel(ResourceFormat format) {
574 DCHECK_LE(format, RESOURCE_FORMAT_MAX); 599 DCHECK_LE(format, RESOURCE_FORMAT_MAX);
575 static const unsigned format_bits_per_pixel[RESOURCE_FORMAT_MAX + 1] = { 600 static const unsigned format_bits_per_pixel[RESOURCE_FORMAT_MAX + 1] = {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 return format_gl_data_format[format]; 637 return format_gl_data_format[format];
613 } 638 }
614 639
615 inline GLenum GLInternalFormat(ResourceFormat format) { 640 inline GLenum GLInternalFormat(ResourceFormat format) {
616 return GLDataFormat(format); 641 return GLDataFormat(format);
617 } 642 }
618 643
619 } // namespace cc 644 } // namespace cc
620 645
621 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_ 646 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_
OLDNEW
« no previous file with comments | « cc/resources/one_copy_raster_worker_pool.cc ('k') | cc/resources/resource_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698