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

Side by Side Diff: gpu/command_buffer/common/sync_token.h

Issue 2727573003: gpu: Add sync token dependencies to flush metadata. (Closed)
Patch Set: jbauman's review Created 3 years, 9 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 GPU_COMMAND_BUFFER_COMMON_SYNC_TOKEN_H_ 5 #ifndef GPU_COMMAND_BUFFER_COMMON_SYNC_TOKEN_H_
6 #define GPU_COMMAND_BUFFER_COMMON_SYNC_TOKEN_H_ 6 #define GPU_COMMAND_BUFFER_COMMON_SYNC_TOKEN_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <string.h> 9 #include <string.h>
10 10
11 #include <tuple>
12
11 #include "gpu/command_buffer/common/command_buffer_id.h" 13 #include "gpu/command_buffer/common/command_buffer_id.h"
12 #include "gpu/command_buffer/common/constants.h" 14 #include "gpu/command_buffer/common/constants.h"
13 #include "gpu/gpu_export.h" 15 #include "gpu/gpu_export.h"
14 16
15 // From glextchromium.h. 17 // From glextchromium.h.
16 #ifndef GL_SYNC_TOKEN_SIZE_CHROMIUM 18 #ifndef GL_SYNC_TOKEN_SIZE_CHROMIUM
17 #define GL_SYNC_TOKEN_SIZE_CHROMIUM 24 19 #define GL_SYNC_TOKEN_SIZE_CHROMIUM 24
18 #endif 20 #endif
19 21
20 namespace gpu { 22 namespace gpu {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 CommandBufferId command_buffer_id() const { return command_buffer_id_; } 72 CommandBufferId command_buffer_id() const { return command_buffer_id_; }
71 uint64_t release_count() const { return release_count_; } 73 uint64_t release_count() const { return release_count_; }
72 74
73 // This extra data field can be used by command buffers to add extra 75 // This extra data field can be used by command buffers to add extra
74 // information to identify unverified sync tokens. The current purpose 76 // information to identify unverified sync tokens. The current purpose
75 // of this field is only for unverified sync tokens which only exist within 77 // of this field is only for unverified sync tokens which only exist within
76 // the same process so this information will not survive cross-process IPCs. 78 // the same process so this information will not survive cross-process IPCs.
77 int32_t extra_data_field() const { return extra_data_field_; } 79 int32_t extra_data_field() const { return extra_data_field_; }
78 80
79 bool operator<(const SyncToken& other) const { 81 bool operator<(const SyncToken& other) const {
80 // TODO(dyen): Once all our compilers support c++11, we can replace this 82 return std::tie(namespace_id_, command_buffer_id_, release_count_) <
81 // long list of comparisons with std::tie(). 83 std::tie(other.namespace_id_, other.command_buffer_id_,
82 return (namespace_id_ < other.namespace_id()) || 84 other.release_count_);
83 ((namespace_id_ == other.namespace_id()) &&
84 ((command_buffer_id_ < other.command_buffer_id()) ||
85 ((command_buffer_id_ == other.command_buffer_id()) &&
86 (release_count_ < other.release_count()))));
87 } 85 }
88 86
89 bool operator==(const SyncToken& other) const { 87 bool operator==(const SyncToken& other) const {
90 return verified_flush_ == other.verified_flush() && 88 return verified_flush_ == other.verified_flush() &&
91 namespace_id_ == other.namespace_id() && 89 namespace_id_ == other.namespace_id() &&
92 extra_data_field_ == other.extra_data_field() && 90 extra_data_field_ == other.extra_data_field() &&
93 command_buffer_id_ == other.command_buffer_id() && 91 command_buffer_id_ == other.command_buffer_id() &&
94 release_count_ == other.release_count(); 92 release_count_ == other.release_count();
95 } 93 }
96 94
97 bool operator!=(const SyncToken& other) const { return !(*this == other); } 95 bool operator!=(const SyncToken& other) const { return !(*this == other); }
98 96
99 private: 97 private:
100 bool verified_flush_; 98 bool verified_flush_;
101 CommandBufferNamespace namespace_id_; 99 CommandBufferNamespace namespace_id_;
102 int32_t extra_data_field_; 100 int32_t extra_data_field_;
103 CommandBufferId command_buffer_id_; 101 CommandBufferId command_buffer_id_;
104 uint64_t release_count_; 102 uint64_t release_count_;
105 }; 103 };
106 104
107 static_assert(sizeof(SyncToken) <= GL_SYNC_TOKEN_SIZE_CHROMIUM, 105 static_assert(sizeof(SyncToken) <= GL_SYNC_TOKEN_SIZE_CHROMIUM,
108 "SyncToken size must not exceed GL_SYNC_TOKEN_SIZE_CHROMIUM"); 106 "SyncToken size must not exceed GL_SYNC_TOKEN_SIZE_CHROMIUM");
109 107
110 } // namespace gpu 108 } // namespace gpu
111 109
112 #endif // GPU_COMMAND_BUFFER_COMMON_SYNC_TOKEN_H_ 110 #endif // GPU_COMMAND_BUFFER_COMMON_SYNC_TOKEN_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698