| 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 #include "gpu/command_buffer/service/context_state.h" | 5 #include "gpu/command_buffer/service/context_state.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <cmath> | 9 #include <cmath> |
| 10 | 10 |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 | 91 |
| 92 TextureUnit::TextureUnit(const TextureUnit& other) = default; | 92 TextureUnit::TextureUnit(const TextureUnit& other) = default; |
| 93 | 93 |
| 94 TextureUnit::~TextureUnit() { | 94 TextureUnit::~TextureUnit() { |
| 95 } | 95 } |
| 96 | 96 |
| 97 bool Vec4::Equal(const Vec4& other) const { | 97 bool Vec4::Equal(const Vec4& other) const { |
| 98 if (type_ != other.type_) | 98 if (type_ != other.type_) |
| 99 return false; | 99 return false; |
| 100 switch (type_) { | 100 switch (type_) { |
| 101 case kFloat: | 101 case SHADER_VARIABLE_FLOAT: |
| 102 for (size_t ii = 0; ii < 4; ++ii) { | 102 for (size_t ii = 0; ii < 4; ++ii) { |
| 103 if (v_[ii].float_value != other.v_[ii].float_value) | 103 if (v_[ii].float_value != other.v_[ii].float_value) |
| 104 return false; | 104 return false; |
| 105 } | 105 } |
| 106 break; | 106 break; |
| 107 case kInt: | 107 case SHADER_VARIABLE_INT: |
| 108 for (size_t ii = 0; ii < 4; ++ii) { | 108 for (size_t ii = 0; ii < 4; ++ii) { |
| 109 if (v_[ii].int_value != other.v_[ii].int_value) | 109 if (v_[ii].int_value != other.v_[ii].int_value) |
| 110 return false; | 110 return false; |
| 111 } | 111 } |
| 112 break; | 112 break; |
| 113 case kUInt: | 113 case SHADER_VARIABLE_UINT: |
| 114 for (size_t ii = 0; ii < 4; ++ii) { | 114 for (size_t ii = 0; ii < 4; ++ii) { |
| 115 if (v_[ii].uint_value != other.v_[ii].uint_value) | 115 if (v_[ii].uint_value != other.v_[ii].uint_value) |
| 116 return false; | 116 return false; |
| 117 } | 117 } |
| 118 break; | 118 break; |
| 119 default: |
| 120 NOTREACHED(); |
| 121 break; |
| 119 } | 122 } |
| 120 return true; | 123 return true; |
| 121 } | 124 } |
| 122 | 125 |
| 123 template <> | 126 template <> |
| 124 void Vec4::GetValues<GLfloat>(GLfloat* values) const { | 127 void Vec4::GetValues<GLfloat>(GLfloat* values) const { |
| 125 DCHECK(values); | 128 DCHECK(values); |
| 126 switch (type_) { | 129 switch (type_) { |
| 127 case kFloat: | 130 case SHADER_VARIABLE_FLOAT: |
| 128 for (size_t ii = 0; ii < 4; ++ii) | 131 for (size_t ii = 0; ii < 4; ++ii) |
| 129 values[ii] = v_[ii].float_value; | 132 values[ii] = v_[ii].float_value; |
| 130 break; | 133 break; |
| 131 case kInt: | 134 case SHADER_VARIABLE_INT: |
| 132 for (size_t ii = 0; ii < 4; ++ii) | 135 for (size_t ii = 0; ii < 4; ++ii) |
| 133 values[ii] = static_cast<GLfloat>(v_[ii].int_value); | 136 values[ii] = static_cast<GLfloat>(v_[ii].int_value); |
| 134 break; | 137 break; |
| 135 case kUInt: | 138 case SHADER_VARIABLE_UINT: |
| 136 for (size_t ii = 0; ii < 4; ++ii) | 139 for (size_t ii = 0; ii < 4; ++ii) |
| 137 values[ii] = static_cast<GLfloat>(v_[ii].uint_value); | 140 values[ii] = static_cast<GLfloat>(v_[ii].uint_value); |
| 138 break; | 141 break; |
| 142 default: |
| 143 NOTREACHED(); |
| 144 break; |
| 139 } | 145 } |
| 140 } | 146 } |
| 141 | 147 |
| 142 template <> | 148 template <> |
| 143 void Vec4::GetValues<GLint>(GLint* values) const { | 149 void Vec4::GetValues<GLint>(GLint* values) const { |
| 144 DCHECK(values); | 150 DCHECK(values); |
| 145 switch (type_) { | 151 switch (type_) { |
| 146 case kFloat: | 152 case SHADER_VARIABLE_FLOAT: |
| 147 for (size_t ii = 0; ii < 4; ++ii) | 153 for (size_t ii = 0; ii < 4; ++ii) |
| 148 values[ii] = static_cast<GLint>(v_[ii].float_value); | 154 values[ii] = static_cast<GLint>(v_[ii].float_value); |
| 149 break; | 155 break; |
| 150 case kInt: | 156 case SHADER_VARIABLE_INT: |
| 151 for (size_t ii = 0; ii < 4; ++ii) | 157 for (size_t ii = 0; ii < 4; ++ii) |
| 152 values[ii] = v_[ii].int_value; | 158 values[ii] = v_[ii].int_value; |
| 153 break; | 159 break; |
| 154 case kUInt: | 160 case SHADER_VARIABLE_UINT: |
| 155 for (size_t ii = 0; ii < 4; ++ii) | 161 for (size_t ii = 0; ii < 4; ++ii) |
| 156 values[ii] = static_cast<GLint>(v_[ii].uint_value); | 162 values[ii] = static_cast<GLint>(v_[ii].uint_value); |
| 157 break; | 163 break; |
| 164 default: |
| 165 NOTREACHED(); |
| 166 break; |
| 158 } | 167 } |
| 159 } | 168 } |
| 160 | 169 |
| 161 template<> | 170 template<> |
| 162 void Vec4::GetValues<GLuint>(GLuint* values) const { | 171 void Vec4::GetValues<GLuint>(GLuint* values) const { |
| 163 DCHECK(values); | 172 DCHECK(values); |
| 164 switch (type_) { | 173 switch (type_) { |
| 165 case kFloat: | 174 case SHADER_VARIABLE_FLOAT: |
| 166 for (size_t ii = 0; ii < 4; ++ii) | 175 for (size_t ii = 0; ii < 4; ++ii) |
| 167 values[ii] = static_cast<GLuint>(v_[ii].float_value); | 176 values[ii] = static_cast<GLuint>(v_[ii].float_value); |
| 168 break; | 177 break; |
| 169 case kInt: | 178 case SHADER_VARIABLE_INT: |
| 170 for (size_t ii = 0; ii < 4; ++ii) | 179 for (size_t ii = 0; ii < 4; ++ii) |
| 171 values[ii] = static_cast<GLuint>(v_[ii].int_value); | 180 values[ii] = static_cast<GLuint>(v_[ii].int_value); |
| 172 break; | 181 break; |
| 173 case kUInt: | 182 case SHADER_VARIABLE_UINT: |
| 174 for (size_t ii = 0; ii < 4; ++ii) | 183 for (size_t ii = 0; ii < 4; ++ii) |
| 175 values[ii] = v_[ii].uint_value; | 184 values[ii] = v_[ii].uint_value; |
| 176 break; | 185 break; |
| 186 default: |
| 187 NOTREACHED(); |
| 188 break; |
| 177 } | 189 } |
| 178 } | 190 } |
| 179 | 191 |
| 180 template <> | 192 template <> |
| 181 void Vec4::SetValues<GLfloat>(const GLfloat* values) { | 193 void Vec4::SetValues<GLfloat>(const GLfloat* values) { |
| 182 DCHECK(values); | 194 DCHECK(values); |
| 183 for (size_t ii = 0; ii < 4; ++ii) | 195 for (size_t ii = 0; ii < 4; ++ii) |
| 184 v_[ii].float_value = values[ii]; | 196 v_[ii].float_value = values[ii]; |
| 185 type_ = kFloat; | 197 type_ = SHADER_VARIABLE_FLOAT; |
| 186 } | 198 } |
| 187 | 199 |
| 188 template <> | 200 template <> |
| 189 void Vec4::SetValues<GLint>(const GLint* values) { | 201 void Vec4::SetValues<GLint>(const GLint* values) { |
| 190 DCHECK(values); | 202 DCHECK(values); |
| 191 for (size_t ii = 0; ii < 4; ++ii) | 203 for (size_t ii = 0; ii < 4; ++ii) |
| 192 v_[ii].int_value = values[ii]; | 204 v_[ii].int_value = values[ii]; |
| 193 type_ = kInt; | 205 type_ = SHADER_VARIABLE_INT; |
| 194 } | 206 } |
| 195 | 207 |
| 196 template <> | 208 template <> |
| 197 void Vec4::SetValues<GLuint>(const GLuint* values) { | 209 void Vec4::SetValues<GLuint>(const GLuint* values) { |
| 198 DCHECK(values); | 210 DCHECK(values); |
| 199 for (size_t ii = 0; ii < 4; ++ii) | 211 for (size_t ii = 0; ii < 4; ++ii) |
| 200 v_[ii].uint_value = values[ii]; | 212 v_[ii].uint_value = values[ii]; |
| 201 type_ = kUInt; | 213 type_ = SHADER_VARIABLE_UINT; |
| 202 } | 214 } |
| 203 | 215 |
| 204 ContextState::ContextState(FeatureInfo* feature_info, | 216 ContextState::ContextState(FeatureInfo* feature_info, |
| 205 ErrorStateClient* error_state_client, | 217 ErrorStateClient* error_state_client, |
| 206 Logger* logger) | 218 Logger* logger) |
| 207 : active_texture_unit(0), | 219 : active_texture_unit(0), |
| 208 bound_renderbuffer_valid(false), | 220 bound_renderbuffer_valid(false), |
| 209 pack_reverse_row_order(false), | 221 pack_reverse_row_order(false), |
| 210 ignore_cached_state(false), | 222 ignore_cached_state(false), |
| 211 fbo_binding_for_scissor_workaround_dirty(false), | 223 fbo_binding_for_scissor_workaround_dirty(false), |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 341 DCHECK_LT(active_texture_unit, texture_units.size()); | 353 DCHECK_LT(active_texture_unit, texture_units.size()); |
| 342 const TextureUnit& texture_unit = texture_units[active_texture_unit]; | 354 const TextureUnit& texture_unit = texture_units[active_texture_unit]; |
| 343 if (TargetIsSupported(feature_info_, target)) | 355 if (TargetIsSupported(feature_info_, target)) |
| 344 glBindTexture(target, GetServiceId(texture_unit, target)); | 356 glBindTexture(target, GetServiceId(texture_unit, target)); |
| 345 } | 357 } |
| 346 | 358 |
| 347 void ContextState::RestoreVertexAttribValues() const { | 359 void ContextState::RestoreVertexAttribValues() const { |
| 348 for (size_t attrib = 0; attrib < vertex_attrib_manager->num_attribs(); | 360 for (size_t attrib = 0; attrib < vertex_attrib_manager->num_attribs(); |
| 349 ++attrib) { | 361 ++attrib) { |
| 350 switch (attrib_values[attrib].type()) { | 362 switch (attrib_values[attrib].type()) { |
| 351 case Vec4::kFloat: | 363 case SHADER_VARIABLE_FLOAT: |
| 352 { | 364 { |
| 353 GLfloat v[4]; | 365 GLfloat v[4]; |
| 354 attrib_values[attrib].GetValues(v); | 366 attrib_values[attrib].GetValues(v); |
| 355 glVertexAttrib4fv(attrib, v); | 367 glVertexAttrib4fv(attrib, v); |
| 356 } | 368 } |
| 357 break; | 369 break; |
| 358 case Vec4::kInt: | 370 case SHADER_VARIABLE_INT: |
| 359 { | 371 { |
| 360 GLint v[4]; | 372 GLint v[4]; |
| 361 attrib_values[attrib].GetValues(v); | 373 attrib_values[attrib].GetValues(v); |
| 362 glVertexAttribI4iv(attrib, v); | 374 glVertexAttribI4iv(attrib, v); |
| 363 } | 375 } |
| 364 break; | 376 break; |
| 365 case Vec4::kUInt: | 377 case SHADER_VARIABLE_UINT: |
| 366 { | 378 { |
| 367 GLuint v[4]; | 379 GLuint v[4]; |
| 368 attrib_values[attrib].GetValues(v); | 380 attrib_values[attrib].GetValues(v); |
| 369 glVertexAttribI4uiv(attrib, v); | 381 glVertexAttribI4uiv(attrib, v); |
| 370 } | 382 } |
| 371 break; | 383 break; |
| 384 default: |
| 385 NOTREACHED(); |
| 386 break; |
| 372 } | 387 } |
| 373 } | 388 } |
| 374 } | 389 } |
| 375 | 390 |
| 376 void ContextState::RestoreVertexAttribArrays( | 391 void ContextState::RestoreVertexAttribArrays( |
| 377 const scoped_refptr<VertexAttribManager> attrib_manager) const { | 392 const scoped_refptr<VertexAttribManager> attrib_manager) const { |
| 378 // This is expected to be called only for VAO with service_id 0, | 393 // This is expected to be called only for VAO with service_id 0, |
| 379 // either to restore the default VAO or a virtual VAO with service_id 0. | 394 // either to restore the default VAO or a virtual VAO with service_id 0. |
| 380 GLuint vao_service_id = attrib_manager->service_id(); | 395 GLuint vao_service_id = attrib_manager->service_id(); |
| 381 DCHECK(vao_service_id == 0); | 396 DCHECK(vao_service_id == 0); |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 667 UpdateUnpackParameters(); | 682 UpdateUnpackParameters(); |
| 668 } | 683 } |
| 669 | 684 |
| 670 // Include the auto-generated part of this file. We split this because it means | 685 // Include the auto-generated part of this file. We split this because it means |
| 671 // we can easily edit the non-auto generated parts right here in this file | 686 // we can easily edit the non-auto generated parts right here in this file |
| 672 // instead of having to edit some template or the code generator. | 687 // instead of having to edit some template or the code generator. |
| 673 #include "gpu/command_buffer/service/context_state_impl_autogen.h" | 688 #include "gpu/command_buffer/service/context_state_impl_autogen.h" |
| 674 | 689 |
| 675 } // namespace gles2 | 690 } // namespace gles2 |
| 676 } // namespace gpu | 691 } // namespace gpu |
| OLD | NEW |