OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_TEXTURE_MAILBOX_H_ | 5 #ifndef CC_RESOURCES_TEXTURE_MAILBOX_H_ |
6 #define CC_RESOURCES_TEXTURE_MAILBOX_H_ | 6 #define CC_RESOURCES_TEXTURE_MAILBOX_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/memory/shared_memory.h" | 10 #include "base/memory/shared_memory.h" |
11 #include "cc/base/cc_export.h" | 11 #include "cc/base/cc_export.h" |
12 #include "gpu/command_buffer/common/mailbox_holder.h" | 12 #include "gpu/command_buffer/common/mailbox_holder.h" |
13 #include "ui/gfx/geometry/size.h" | 13 #include "ui/gfx/geometry/size.h" |
14 | 14 |
15 namespace cc { | 15 namespace cc { |
16 class SharedBitmap; | 16 class SharedBitmap; |
17 | 17 |
18 // TODO(skaslev, danakj) Rename this class more apropriately since now it | 18 // TODO(skaslev, danakj) Rename this class more apropriately since now it |
19 // can hold a shared memory resource as well as a texture mailbox. | 19 // can hold a shared memory resource as well as a texture mailbox. |
20 class CC_EXPORT TextureMailbox { | 20 class CC_EXPORT TextureMailbox { |
21 public: | 21 public: |
22 TextureMailbox(); | 22 TextureMailbox(); |
23 explicit TextureMailbox(const gpu::MailboxHolder& mailbox_holder); | 23 explicit TextureMailbox(const gpu::MailboxHolder& mailbox_holder); |
24 TextureMailbox(const gpu::Mailbox& mailbox, uint32 target, uint32 sync_point); | |
25 TextureMailbox(const gpu::Mailbox& mailbox, | 24 TextureMailbox(const gpu::Mailbox& mailbox, |
| 25 const gpu::SyncToken& sync_token, |
| 26 uint32 target); |
| 27 TextureMailbox(const gpu::Mailbox& mailbox, |
| 28 const gpu::SyncToken& sync_token, |
26 uint32 target, | 29 uint32 target, |
27 uint32 sync_point, | |
28 const gfx::Size& size_in_pixels, | 30 const gfx::Size& size_in_pixels, |
29 bool is_overlay_candidate); | 31 bool is_overlay_candidate); |
30 TextureMailbox(SharedBitmap* shared_bitmap, const gfx::Size& size_in_pixels); | 32 TextureMailbox(SharedBitmap* shared_bitmap, const gfx::Size& size_in_pixels); |
31 | 33 |
32 ~TextureMailbox(); | 34 ~TextureMailbox(); |
33 | 35 |
34 bool IsValid() const { return IsTexture() || IsSharedMemory(); } | 36 bool IsValid() const { return IsTexture() || IsSharedMemory(); } |
35 bool IsTexture() const { return !mailbox_holder_.mailbox.IsZero(); } | 37 bool IsTexture() const { return !mailbox_holder_.mailbox.IsZero(); } |
36 bool IsSharedMemory() const { return shared_bitmap_ != NULL; } | 38 bool IsSharedMemory() const { return shared_bitmap_ != NULL; } |
37 | 39 |
38 bool Equals(const TextureMailbox&) const; | 40 bool Equals(const TextureMailbox&) const; |
39 | 41 |
40 const gpu::Mailbox& mailbox() const { return mailbox_holder_.mailbox; } | 42 const gpu::Mailbox& mailbox() const { return mailbox_holder_.mailbox; } |
41 const int8* name() const { return mailbox().name; } | 43 const int8* name() const { return mailbox().name; } |
42 uint32 target() const { return mailbox_holder_.texture_target; } | 44 uint32 target() const { return mailbox_holder_.texture_target; } |
43 uint32 sync_point() const { return mailbox_holder_.sync_point; } | 45 const gpu::SyncToken& sync_token() const { |
44 void set_sync_point(int32 sync_point) { | 46 return mailbox_holder_.sync_token; |
45 mailbox_holder_.sync_point = sync_point; | 47 } |
| 48 void set_sync_token(const gpu::SyncToken& sync_token) { |
| 49 mailbox_holder_.sync_token = sync_token; |
46 } | 50 } |
47 | 51 |
48 bool is_overlay_candidate() const { return is_overlay_candidate_; } | 52 bool is_overlay_candidate() const { return is_overlay_candidate_; } |
49 bool nearest_neighbor() const { return nearest_neighbor_; } | 53 bool nearest_neighbor() const { return nearest_neighbor_; } |
50 void set_nearest_neighbor(bool nearest_neighbor) { | 54 void set_nearest_neighbor(bool nearest_neighbor) { |
51 nearest_neighbor_ = nearest_neighbor; | 55 nearest_neighbor_ = nearest_neighbor; |
52 } | 56 } |
53 | 57 |
54 // This is valid if allow_overlau() or IsSharedMemory() is true. | 58 // This is valid if allow_overlau() or IsSharedMemory() is true. |
55 gfx::Size size_in_pixels() const { return size_in_pixels_; } | 59 gfx::Size size_in_pixels() const { return size_in_pixels_; } |
56 | 60 |
57 SharedBitmap* shared_bitmap() const { return shared_bitmap_; } | 61 SharedBitmap* shared_bitmap() const { return shared_bitmap_; } |
58 size_t SharedMemorySizeInBytes() const; | 62 size_t SharedMemorySizeInBytes() const; |
59 | 63 |
60 private: | 64 private: |
61 gpu::MailboxHolder mailbox_holder_; | 65 gpu::MailboxHolder mailbox_holder_; |
62 SharedBitmap* shared_bitmap_; | 66 SharedBitmap* shared_bitmap_; |
63 gfx::Size size_in_pixels_; | 67 gfx::Size size_in_pixels_; |
64 bool is_overlay_candidate_; | 68 bool is_overlay_candidate_; |
65 bool nearest_neighbor_; | 69 bool nearest_neighbor_; |
66 }; | 70 }; |
67 | 71 |
68 } // namespace cc | 72 } // namespace cc |
69 | 73 |
70 #endif // CC_RESOURCES_TEXTURE_MAILBOX_H_ | 74 #endif // CC_RESOURCES_TEXTURE_MAILBOX_H_ |
OLD | NEW |