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

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

Issue 1157943004: cc: [WIP] Use worker context and OrderingBarrierCHROMIUM for one-copy. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: keep resource ownership in compositor. Created 5 years, 5 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 15 matching lines...) Expand all
26 #include "cc/resources/return_callback.h" 26 #include "cc/resources/return_callback.h"
27 #include "cc/resources/shared_bitmap.h" 27 #include "cc/resources/shared_bitmap.h"
28 #include "cc/resources/single_release_callback_impl.h" 28 #include "cc/resources/single_release_callback_impl.h"
29 #include "cc/resources/texture_mailbox.h" 29 #include "cc/resources/texture_mailbox.h"
30 #include "cc/resources/transferable_resource.h" 30 #include "cc/resources/transferable_resource.h"
31 #include "third_party/khronos/GLES2/gl2.h" 31 #include "third_party/khronos/GLES2/gl2.h"
32 #include "third_party/khronos/GLES2/gl2ext.h" 32 #include "third_party/khronos/GLES2/gl2ext.h"
33 #include "third_party/skia/include/core/SkBitmap.h" 33 #include "third_party/skia/include/core/SkBitmap.h"
34 #include "third_party/skia/include/core/SkCanvas.h" 34 #include "third_party/skia/include/core/SkCanvas.h"
35 #include "ui/gfx/geometry/size.h" 35 #include "ui/gfx/geometry/size.h"
36 #include "ui/gfx/gpu_memory_buffer.h"
36 37
37 class GrContext; 38 class GrContext;
38 39
39 namespace gpu { 40 namespace gpu {
40 class GpuMemoryBufferManager; 41 class GpuMemoryBufferManager;
41 namespace gles { 42 namespace gles {
42 class GLES2Interface; 43 class GLES2Interface;
43 } 44 }
44 } 45 }
45 46
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 ResourceProvider::Resource* resource_; 325 ResourceProvider::Resource* resource_;
325 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager_; 326 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager_;
326 gfx::GpuMemoryBuffer* gpu_memory_buffer_; 327 gfx::GpuMemoryBuffer* gpu_memory_buffer_;
327 gfx::Size size_; 328 gfx::Size size_;
328 ResourceFormat format_; 329 ResourceFormat format_;
329 base::ThreadChecker thread_checker_; 330 base::ThreadChecker thread_checker_;
330 331
331 DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGpuMemoryBuffer); 332 DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGpuMemoryBuffer);
332 }; 333 };
333 334
335 class CC_EXPORT ScopedWriteLockGpuMemoryBufferForThread {
336 public:
337 ScopedWriteLockGpuMemoryBufferForThread(ResourceProvider* resource_provider,
338 ResourceId resource_id);
339 ~ScopedWriteLockGpuMemoryBufferForThread();
340
341 gfx::GpuMemoryBuffer* GetGpuMemoryBuffer();
342 void CreateAndBindImage();
343 ContextProvider* worker_context() { return worker_context_; }
344 void BeginCopyTexture();
345 void EndCopyTexture();
346 ResourceFormat format() { return format_; }
347 gfx::Size size() { return size_; }
348 unsigned source_gl_id() { return source_gl_id_; }
349
350 private:
351 ResourceProvider* resource_provider_;
352 ResourceProvider::Resource* resource_;
353 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager_;
354 gfx::GpuMemoryBuffer* gpu_memory_buffer_;
355 base::ThreadChecker thread_checker_;
356 ContextProvider* worker_context_;
357 unsigned image_id_;
358 unsigned bound_image_id_;
359 unsigned source_gl_id_;
360 gfx::Size size_;
361 ResourceFormat format_;
362 GLenum internal_format_;
363 bool did_bind_image_;
364 unsigned query_id_;
365 bool using_sync_query_;
366 gfx::GpuMemoryBuffer::Usage usage_;
367
368 DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockGpuMemoryBufferForThread);
369 };
370
334 class CC_EXPORT ScopedWriteLockGr { 371 class CC_EXPORT ScopedWriteLockGr {
335 public: 372 public:
336 ScopedWriteLockGr(ResourceProvider* resource_provider, 373 ScopedWriteLockGr(ResourceProvider* resource_provider,
337 ResourceId resource_id); 374 ResourceId resource_id);
338 ~ScopedWriteLockGr(); 375 ~ScopedWriteLockGr();
339 376
340 void InitSkSurface(bool use_distance_field_text, 377 void InitSkSurface(bool use_distance_field_text,
341 bool can_use_lcd_text, 378 bool can_use_lcd_text,
342 int msaa_sample_count); 379 int msaa_sample_count);
343 void ReleaseSkSurface(); 380 void ReleaseSkSurface();
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 return format_gl_data_format[format]; 695 return format_gl_data_format[format];
659 } 696 }
660 697
661 inline GLenum GLInternalFormat(ResourceFormat format) { 698 inline GLenum GLInternalFormat(ResourceFormat format) {
662 return GLDataFormat(format); 699 return GLDataFormat(format);
663 } 700 }
664 701
665 } // namespace cc 702 } // namespace cc
666 703
667 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_ 704 #endif // CC_RESOURCES_RESOURCE_PROVIDER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698