| 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" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 public base::RefCounted<VertexAttribManager> { | 26 public base::RefCounted<VertexAttribManager> { |
| 27 public: | 27 public: |
| 28 typedef scoped_refptr<VertexAttribManager> Ref; | 28 typedef scoped_refptr<VertexAttribManager> Ref; |
| 29 | 29 |
| 30 // Info about Vertex Attributes. This is used to track what the user currently | 30 // Info about Vertex Attributes. This is used to track what the user currently |
| 31 // has bound on each Vertex Attribute so that checking can be done at | 31 // has bound on each Vertex Attribute so that checking can be done at |
| 32 // glDrawXXX time. | 32 // glDrawXXX time. |
| 33 class GPU_EXPORT VertexAttribInfo { | 33 class GPU_EXPORT VertexAttribInfo { |
| 34 public: | 34 public: |
| 35 typedef std::list<VertexAttribInfo*> VertexAttribInfoList; | 35 typedef std::list<VertexAttribInfo*> VertexAttribInfoList; |
| 36 struct Vec4 { | |
| 37 float v[4]; | |
| 38 }; | |
| 39 | 36 |
| 40 VertexAttribInfo(); | 37 VertexAttribInfo(); |
| 41 ~VertexAttribInfo(); | 38 ~VertexAttribInfo(); |
| 42 | 39 |
| 43 // Returns true if this VertexAttrib can access index. | 40 // Returns true if this VertexAttrib can access index. |
| 44 bool CanAccess(GLuint index) const; | 41 bool CanAccess(GLuint index) const; |
| 45 | 42 |
| 46 BufferManager::BufferInfo* buffer() const { | 43 BufferManager::BufferInfo* buffer() const { |
| 47 return buffer_; | 44 return buffer_; |
| 48 } | 45 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 72 } | 69 } |
| 73 | 70 |
| 74 GLuint divisor() const { | 71 GLuint divisor() const { |
| 75 return divisor_; | 72 return divisor_; |
| 76 } | 73 } |
| 77 | 74 |
| 78 bool enabled() const { | 75 bool enabled() const { |
| 79 return enabled_; | 76 return enabled_; |
| 80 } | 77 } |
| 81 | 78 |
| 82 void set_value(const Vec4& value) { | |
| 83 value_ = value; | |
| 84 } | |
| 85 | |
| 86 const Vec4& value() const { | |
| 87 return value_; | |
| 88 } | |
| 89 | |
| 90 // Find the maximum vertex accessed, accounting for instancing. | 79 // Find the maximum vertex accessed, accounting for instancing. |
| 91 GLuint MaxVertexAccessed(GLsizei primcount, | 80 GLuint MaxVertexAccessed(GLsizei primcount, |
| 92 GLuint max_vertex_accessed) const { | 81 GLuint max_vertex_accessed) const { |
| 93 return (primcount && divisor_) ? ((primcount - 1) / divisor_) : | 82 return (primcount && divisor_) ? ((primcount - 1) / divisor_) : |
| 94 max_vertex_accessed; | 83 max_vertex_accessed; |
| 95 } | 84 } |
| 96 | 85 |
| 97 private: | 86 private: |
| 98 friend class VertexAttribManager; | 87 friend class VertexAttribManager; |
| 99 | 88 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 // The stride passed to glVertexAttribPointer. | 153 // The stride passed to glVertexAttribPointer. |
| 165 GLsizei gl_stride_; | 154 GLsizei gl_stride_; |
| 166 | 155 |
| 167 // The stride that will be used to access the buffer. This is the actual | 156 // The stride that will be used to access the buffer. This is the actual |
| 168 // stide, NOT the GL bogus stride. In other words there is never a stride | 157 // stide, NOT the GL bogus stride. In other words there is never a stride |
| 169 // of 0. | 158 // of 0. |
| 170 GLsizei real_stride_; | 159 GLsizei real_stride_; |
| 171 | 160 |
| 172 GLsizei divisor_; | 161 GLsizei divisor_; |
| 173 | 162 |
| 174 // The current value of the attrib. | |
| 175 Vec4 value_; | |
| 176 | |
| 177 // The buffer bound to this attribute. | 163 // The buffer bound to this attribute. |
| 178 BufferManager::BufferInfo::Ref buffer_; | 164 BufferManager::BufferInfo::Ref buffer_; |
| 179 | 165 |
| 180 // List this info is on. | 166 // List this info is on. |
| 181 VertexAttribInfoList* list_; | 167 VertexAttribInfoList* list_; |
| 182 | 168 |
| 183 // Iterator for list this info is on. Enabled/Disabled | 169 // Iterator for list this info is on. Enabled/Disabled |
| 184 VertexAttribInfoList::iterator it_; | 170 VertexAttribInfoList::iterator it_; |
| 185 }; | 171 }; |
| 186 | 172 |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 | 286 |
| 301 // Service side vertex array object id. | 287 // Service side vertex array object id. |
| 302 GLuint service_id_; | 288 GLuint service_id_; |
| 303 }; | 289 }; |
| 304 | 290 |
| 305 } // namespace gles2 | 291 } // namespace gles2 |
| 306 } // namespace gpu | 292 } // namespace gpu |
| 307 | 293 |
| 308 #endif // GPU_COMMAND_BUFFER_SERVICE_VERTEX_ATTRIB_MANAGER_H_ | 294 #endif // GPU_COMMAND_BUFFER_SERVICE_VERTEX_ATTRIB_MANAGER_H_ |
| 309 | 295 |
| OLD | NEW |