| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2009, Google Inc. | 2 * Copyright 2009, Google Inc. |
| 3 * All rights reserved. | 3 * All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 template <typename T> | 163 template <typename T> |
| 164 T& GetImmediateCmdSpace(size_t space) { | 164 T& GetImmediateCmdSpace(size_t space) { |
| 165 COMPILE_ASSERT(T::kArgFlags == cmd::kAtLeastN, Cmd_kArgFlags_not_kAtLeastN); | 165 COMPILE_ASSERT(T::kArgFlags == cmd::kAtLeastN, Cmd_kArgFlags_not_kAtLeastN); |
| 166 uint32 space_needed = ComputeNumEntries(sizeof(T) + space); | 166 uint32 space_needed = ComputeNumEntries(sizeof(T) + space); |
| 167 void* data = GetSpace(space_needed); | 167 void* data = GetSpace(space_needed); |
| 168 return *reinterpret_cast<T*>(data); | 168 return *reinterpret_cast<T*>(data); |
| 169 } | 169 } |
| 170 | 170 |
| 171 parse_error::ParseError GetParseError(); | 171 parse_error::ParseError GetParseError(); |
| 172 | 172 |
| 173 // Common Commands |
| 174 void Noop(uint32 skip_count) { |
| 175 cmd::Noop& cmd = GetImmediateCmdSpace<cmd::Noop>( |
| 176 skip_count * sizeof(CommandBufferEntry)); |
| 177 cmd.Init(skip_count); |
| 178 } |
| 179 |
| 180 void SetToken(uint32 token) { |
| 181 cmd::SetToken& cmd = GetCmdSpace<cmd::SetToken>(); |
| 182 cmd.Init(token); |
| 183 } |
| 184 |
| 185 |
| 173 private: | 186 private: |
| 174 // Waits until get changes, updating the value of get_. | 187 // Waits until get changes, updating the value of get_. |
| 175 void WaitForGetChange(); | 188 void WaitForGetChange(); |
| 176 | 189 |
| 177 // Returns the number of available entries (they may not be contiguous). | 190 // Returns the number of available entries (they may not be contiguous). |
| 178 int32 AvailableEntries() { | 191 int32 AvailableEntries() { |
| 179 return (get_ - put_ - 1 + entry_count_) % entry_count_; | 192 return (get_ - put_ - 1 + entry_count_) % entry_count_; |
| 180 } | 193 } |
| 181 | 194 |
| 182 NPP npp_; | 195 NPP npp_; |
| 183 gpu_plugin::NPObjectPointer<NPObject> command_buffer_; | 196 gpu_plugin::NPObjectPointer<NPObject> command_buffer_; |
| 184 gpu_plugin::NPObjectPointer<NPObject> ring_buffer_; | 197 gpu_plugin::NPObjectPointer<NPObject> ring_buffer_; |
| 185 CommandBufferEntry *entries_; | 198 CommandBufferEntry *entries_; |
| 186 int32 entry_count_; | 199 int32 entry_count_; |
| 187 int32 token_; | 200 int32 token_; |
| 188 int32 last_token_read_; | 201 int32 last_token_read_; |
| 189 int32 get_; | 202 int32 get_; |
| 190 int32 put_; | 203 int32 put_; |
| 191 | 204 |
| 192 friend class CommandBufferHelperTest; | 205 friend class CommandBufferHelperTest; |
| 193 DISALLOW_COPY_AND_ASSIGN(CommandBufferHelper); | 206 DISALLOW_COPY_AND_ASSIGN(CommandBufferHelper); |
| 194 }; | 207 }; |
| 195 | 208 |
| 196 } // namespace command_buffer | 209 } // namespace command_buffer |
| 197 } // namespace o3d | 210 } // namespace o3d |
| 198 | 211 |
| 199 #endif // O3D_COMMAND_BUFFER_CLIENT_CROSS_CMD_BUFFER_HELPER_H_ | 212 #endif // O3D_COMMAND_BUFFER_CLIENT_CROSS_CMD_BUFFER_HELPER_H_ |
| OLD | NEW |