| 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 #ifndef GPU_COMMAND_BUFFER_SERVICE_VERTEX_ATTRIB_MANAGER_H_ | 5 #ifndef GPU_COMMAND_BUFFER_SERVICE_VERTEX_ATTRIB_MANAGER_H_ |
| 6 #define GPU_COMMAND_BUFFER_SERVICE_VERTEX_ATTRIB_MANAGER_H_ | 6 #define GPU_COMMAND_BUFFER_SERVICE_VERTEX_ATTRIB_MANAGER_H_ |
| 7 | 7 |
| 8 #include <list> | 8 #include <list> |
| 9 #include <vector> | 9 #include <vector> |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "base/memory/ref_counted.h" | 11 #include "base/memory/ref_counted.h" |
| 12 #include "build/build_config.h" | 12 #include "build/build_config.h" |
| 13 #include "gpu/command_buffer/service/buffer_manager.h" | 13 #include "gpu/command_buffer/service/buffer_manager.h" |
| 14 #include "gpu/command_buffer/service/gl_utils.h" | 14 #include "gpu/command_buffer/service/gl_utils.h" |
| 15 #include "gpu/gpu_export.h" | 15 #include "gpu/gpu_export.h" |
| 16 | 16 |
| 17 namespace gpu { | 17 namespace gpu { |
| 18 namespace gles2 { | 18 namespace gles2 { |
| 19 | 19 |
| 20 class FeatureInfo; |
| 21 class GLES2Decoder; |
| 22 class Program; |
| 20 class VertexArrayManager; | 23 class VertexArrayManager; |
| 21 | 24 |
| 22 // Info about a Vertex Attribute. This is used to track what the user currently | 25 // Info about a Vertex Attribute. This is used to track what the user currently |
| 23 // has bound on each Vertex Attribute so that checking can be done at | 26 // has bound on each Vertex Attribute so that checking can be done at |
| 24 // glDrawXXX time. | 27 // glDrawXXX time. |
| 25 class GPU_EXPORT VertexAttrib { | 28 class GPU_EXPORT VertexAttrib { |
| 26 public: | 29 public: |
| 27 typedef std::list<VertexAttrib*> VertexAttribInfoList; | 30 typedef std::list<VertexAttrib*> VertexAttribInfoList; |
| 28 | 31 |
| 29 VertexAttrib(); | 32 VertexAttrib(); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 return enabled_; | 71 return enabled_; |
| 69 } | 72 } |
| 70 | 73 |
| 71 // Find the maximum vertex accessed, accounting for instancing. | 74 // Find the maximum vertex accessed, accounting for instancing. |
| 72 GLuint MaxVertexAccessed(GLsizei primcount, | 75 GLuint MaxVertexAccessed(GLsizei primcount, |
| 73 GLuint max_vertex_accessed) const { | 76 GLuint max_vertex_accessed) const { |
| 74 return (primcount && divisor_) ? ((primcount - 1) / divisor_) : | 77 return (primcount && divisor_) ? ((primcount - 1) / divisor_) : |
| 75 max_vertex_accessed; | 78 max_vertex_accessed; |
| 76 } | 79 } |
| 77 | 80 |
| 81 bool is_client_side_array() const { |
| 82 return is_client_side_array_; |
| 83 } |
| 84 |
| 85 void set_is_client_side_array(bool value) { |
| 86 is_client_side_array_ = value; |
| 87 } |
| 88 |
| 78 private: | 89 private: |
| 79 friend class VertexAttribManager; | 90 friend class VertexAttribManager; |
| 80 | 91 |
| 81 void set_enabled(bool enabled) { | 92 void set_enabled(bool enabled) { |
| 82 enabled_ = enabled; | 93 enabled_ = enabled; |
| 83 } | 94 } |
| 84 | 95 |
| 85 void set_index(GLuint index) { | 96 void set_index(GLuint index) { |
| 86 index_ = index; | 97 index_ = index; |
| 87 } | 98 } |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 // The stride passed to glVertexAttribPointer. | 143 // The stride passed to glVertexAttribPointer. |
| 133 GLsizei gl_stride_; | 144 GLsizei gl_stride_; |
| 134 | 145 |
| 135 // The stride that will be used to access the buffer. This is the actual | 146 // The stride that will be used to access the buffer. This is the actual |
| 136 // stide, NOT the GL bogus stride. In other words there is never a stride | 147 // stide, NOT the GL bogus stride. In other words there is never a stride |
| 137 // of 0. | 148 // of 0. |
| 138 GLsizei real_stride_; | 149 GLsizei real_stride_; |
| 139 | 150 |
| 140 GLsizei divisor_; | 151 GLsizei divisor_; |
| 141 | 152 |
| 153 // Will be true if this was assigned to a client side array. |
| 154 bool is_client_side_array_; |
| 155 |
| 142 // The buffer bound to this attribute. | 156 // The buffer bound to this attribute. |
| 143 scoped_refptr<Buffer> buffer_; | 157 scoped_refptr<Buffer> buffer_; |
| 144 | 158 |
| 145 // List this info is on. | 159 // List this info is on. |
| 146 VertexAttribInfoList* list_; | 160 VertexAttribInfoList* list_; |
| 147 | 161 |
| 148 // Iterator for list this info is on. Enabled/Disabled | 162 // Iterator for list this info is on. Enabled/Disabled |
| 149 VertexAttribInfoList::iterator it_; | 163 VertexAttribInfoList::iterator it_; |
| 150 }; | 164 }; |
| 151 | 165 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 } | 238 } |
| 225 | 239 |
| 226 bool IsValid() const { | 240 bool IsValid() const { |
| 227 return !IsDeleted(); | 241 return !IsDeleted(); |
| 228 } | 242 } |
| 229 | 243 |
| 230 size_t num_attribs() const { | 244 size_t num_attribs() const { |
| 231 return vertex_attrib_infos_.size(); | 245 return vertex_attrib_infos_.size(); |
| 232 } | 246 } |
| 233 | 247 |
| 248 bool ValidateBindings( |
| 249 const char* function_name, |
| 250 GLES2Decoder* decoder, |
| 251 FeatureInfo* feature_info, |
| 252 Program* current_program, |
| 253 GLuint max_vertex_accessed, |
| 254 GLsizei primcount); |
| 255 |
| 234 private: | 256 private: |
| 235 friend class VertexArrayManager; | 257 friend class VertexArrayManager; |
| 236 friend class VertexArrayManagerTest; | 258 friend class VertexArrayManagerTest; |
| 237 friend class base::RefCounted<VertexAttribManager>; | 259 friend class base::RefCounted<VertexAttribManager>; |
| 238 | 260 |
| 239 // Used when creating from a VertexArrayManager | 261 // Used when creating from a VertexArrayManager |
| 240 VertexAttribManager(VertexArrayManager* manager, GLuint service_id, | 262 VertexAttribManager(VertexArrayManager* manager, GLuint service_id, |
| 241 uint32 num_vertex_attribs); | 263 uint32 num_vertex_attribs); |
| 242 | 264 |
| 243 ~VertexAttribManager(); | 265 ~VertexAttribManager(); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 269 | 291 |
| 270 // Service side vertex array object id. | 292 // Service side vertex array object id. |
| 271 GLuint service_id_; | 293 GLuint service_id_; |
| 272 }; | 294 }; |
| 273 | 295 |
| 274 } // namespace gles2 | 296 } // namespace gles2 |
| 275 } // namespace gpu | 297 } // namespace gpu |
| 276 | 298 |
| 277 #endif // GPU_COMMAND_BUFFER_SERVICE_VERTEX_ATTRIB_MANAGER_H_ | 299 #endif // GPU_COMMAND_BUFFER_SERVICE_VERTEX_ATTRIB_MANAGER_H_ |
| 278 | 300 |
| OLD | NEW |