| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 // This file contains the command buffer helper class. | 5 // This file contains the command buffer helper class. |
| 6 | 6 |
| 7 #ifndef GPU_COMMAND_BUFFER_CLIENT_CMD_BUFFER_HELPER_H_ | 7 #ifndef GPU_COMMAND_BUFFER_CLIENT_CMD_BUFFER_HELPER_H_ |
| 8 #define GPU_COMMAND_BUFFER_CLIENT_CMD_BUFFER_HELPER_H_ | 8 #define GPU_COMMAND_BUFFER_CLIENT_CMD_BUFFER_HELPER_H_ |
| 9 | 9 |
| 10 #include <string.h> | 10 #include <string.h> |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 // TODO(jbauman): Remove once we're on VC2015, http://crbug.com/412902 | 145 // TODO(jbauman): Remove once we're on VC2015, http://crbug.com/412902 |
| 146 if (data) | 146 if (data) |
| 147 static_cast<volatile T*>(data)->header; | 147 static_cast<volatile T*>(data)->header; |
| 148 #endif | 148 #endif |
| 149 } | 149 } |
| 150 | 150 |
| 151 // Typed version of GetSpace. Gets enough room for the given type and returns | 151 // Typed version of GetSpace. Gets enough room for the given type and returns |
| 152 // a reference to it. | 152 // a reference to it. |
| 153 template <typename T> | 153 template <typename T> |
| 154 T* GetCmdSpace() { | 154 T* GetCmdSpace() { |
| 155 COMPILE_ASSERT(T::kArgFlags == cmd::kFixed, Cmd_kArgFlags_not_kFixed); | 155 static_assert(T::kArgFlags == cmd::kFixed, |
| 156 "T::kArgFlags should equal cmd::kFixed"); |
| 156 int32 space_needed = ComputeNumEntries(sizeof(T)); | 157 int32 space_needed = ComputeNumEntries(sizeof(T)); |
| 157 T* data = static_cast<T*>(GetSpace(space_needed)); | 158 T* data = static_cast<T*>(GetSpace(space_needed)); |
| 158 ForceNullCheck(data); | 159 ForceNullCheck(data); |
| 159 return data; | 160 return data; |
| 160 } | 161 } |
| 161 | 162 |
| 162 // Typed version of GetSpace for immediate commands. | 163 // Typed version of GetSpace for immediate commands. |
| 163 template <typename T> | 164 template <typename T> |
| 164 T* GetImmediateCmdSpace(size_t data_space) { | 165 T* GetImmediateCmdSpace(size_t data_space) { |
| 165 COMPILE_ASSERT(T::kArgFlags == cmd::kAtLeastN, Cmd_kArgFlags_not_kAtLeastN); | 166 static_assert(T::kArgFlags == cmd::kAtLeastN, |
| 167 "T::kArgFlags should equal cmd::kAtLeastN"); |
| 166 int32 space_needed = ComputeNumEntries(sizeof(T) + data_space); | 168 int32 space_needed = ComputeNumEntries(sizeof(T) + data_space); |
| 167 T* data = static_cast<T*>(GetSpace(space_needed)); | 169 T* data = static_cast<T*>(GetSpace(space_needed)); |
| 168 ForceNullCheck(data); | 170 ForceNullCheck(data); |
| 169 return data; | 171 return data; |
| 170 } | 172 } |
| 171 | 173 |
| 172 // Typed version of GetSpace for immediate commands. | 174 // Typed version of GetSpace for immediate commands. |
| 173 template <typename T> | 175 template <typename T> |
| 174 T* GetImmediateCmdSpaceTotalSize(size_t total_space) { | 176 T* GetImmediateCmdSpaceTotalSize(size_t total_space) { |
| 175 COMPILE_ASSERT(T::kArgFlags == cmd::kAtLeastN, Cmd_kArgFlags_not_kAtLeastN); | 177 static_assert(T::kArgFlags == cmd::kAtLeastN, |
| 178 "T::kArgFlags should equal cmd::kAtLeastN"); |
| 176 int32 space_needed = ComputeNumEntries(total_space); | 179 int32 space_needed = ComputeNumEntries(total_space); |
| 177 T* data = static_cast<T*>(GetSpace(space_needed)); | 180 T* data = static_cast<T*>(GetSpace(space_needed)); |
| 178 ForceNullCheck(data); | 181 ForceNullCheck(data); |
| 179 return data; | 182 return data; |
| 180 } | 183 } |
| 181 | 184 |
| 182 int32 last_token_read() const { | 185 int32 last_token_read() const { |
| 183 return command_buffer_->GetLastToken(); | 186 return command_buffer_->GetLastToken(); |
| 184 } | 187 } |
| 185 | 188 |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 334 // Can be used to track when prior commands have been flushed. | 337 // Can be used to track when prior commands have been flushed. |
| 335 uint32 flush_generation_; | 338 uint32 flush_generation_; |
| 336 | 339 |
| 337 friend class CommandBufferHelperTest; | 340 friend class CommandBufferHelperTest; |
| 338 DISALLOW_COPY_AND_ASSIGN(CommandBufferHelper); | 341 DISALLOW_COPY_AND_ASSIGN(CommandBufferHelper); |
| 339 }; | 342 }; |
| 340 | 343 |
| 341 } // namespace gpu | 344 } // namespace gpu |
| 342 | 345 |
| 343 #endif // GPU_COMMAND_BUFFER_CLIENT_CMD_BUFFER_HELPER_H_ | 346 #endif // GPU_COMMAND_BUFFER_CLIENT_CMD_BUFFER_HELPER_H_ |
| OLD | NEW |