OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/texture_manager.h" | 5 #include "gpu/command_buffer/service/texture_manager.h" |
6 | |
7 #include <algorithm> | |
8 | |
9 #include "base/bits.h" | 6 #include "base/bits.h" |
10 #include "base/logging.h" | |
11 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 7 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
12 #include "gpu/command_buffer/service/feature_info.h" | 8 #include "gpu/command_buffer/service/feature_info.h" |
13 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 9 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
14 #include "gpu/GLES2/gles2_command_buffer.h" | 10 #include "gpu/GLES2/gles2_command_buffer.h" |
15 | 11 |
16 namespace gpu { | 12 namespace gpu { |
17 namespace gles2 { | 13 namespace gles2 { |
18 | 14 |
19 static GLsizei ComputeMipMapCount( | 15 static GLsizei ComputeMipMapCount( |
20 GLsizei width, GLsizei height, GLsizei depth) { | 16 GLsizei width, GLsizei height, GLsizei depth) { |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
274 case GL_TEXTURE_MAX_ANISOTROPY_EXT: | 270 case GL_TEXTURE_MAX_ANISOTROPY_EXT: |
275 // Nothing to do for this case at the moment. | 271 // Nothing to do for this case at the moment. |
276 break; | 272 break; |
277 default: | 273 default: |
278 NOTREACHED(); | 274 NOTREACHED(); |
279 break; | 275 break; |
280 } | 276 } |
281 Update(feature_info); | 277 Update(feature_info); |
282 } | 278 } |
283 | 279 |
284 void TextureManager::TextureInfo::SetTarget(GLenum target, GLint max_levels) { | |
285 DCHECK_EQ(0u, target_); // you can only set this once. | |
286 target_ = target; | |
287 size_t num_faces = (target == GL_TEXTURE_2D) ? 1 : 6; | |
288 level_infos_.resize(num_faces); | |
289 for (size_t ii = 0; ii < num_faces; ++ii) { | |
290 level_infos_[ii].resize(max_levels); | |
291 } | |
292 } | |
293 | |
294 void TextureManager::TextureInfo::Update(const FeatureInfo* feature_info) { | 280 void TextureManager::TextureInfo::Update(const FeatureInfo* feature_info) { |
295 // Update npot status. | 281 // Update npot status. |
296 npot_ = false; | 282 npot_ = false; |
297 for (size_t ii = 0; ii < level_infos_.size(); ++ii) { | 283 for (size_t ii = 0; ii < level_infos_.size(); ++ii) { |
298 const TextureInfo::LevelInfo& info = level_infos_[ii][0]; | 284 const TextureInfo::LevelInfo& info = level_infos_[ii][0]; |
299 if (GLES2Util::IsNPOT(info.width) || | 285 if (GLES2Util::IsNPOT(info.width) || |
300 GLES2Util::IsNPOT(info.height) || | 286 GLES2Util::IsNPOT(info.height) || |
301 GLES2Util::IsNPOT(info.depth)) { | 287 GLES2Util::IsNPOT(info.depth)) { |
302 npot_ = true; | 288 npot_ = true; |
303 break; | 289 break; |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
433 height <= max_size && | 419 height <= max_size && |
434 depth <= max_size && | 420 depth <= max_size && |
435 (level == 0 || feature_info->feature_flags().npot_ok || | 421 (level == 0 || feature_info->feature_flags().npot_ok || |
436 (!GLES2Util::IsNPOT(width) && | 422 (!GLES2Util::IsNPOT(width) && |
437 !GLES2Util::IsNPOT(height) && | 423 !GLES2Util::IsNPOT(height) && |
438 !GLES2Util::IsNPOT(depth))) && | 424 !GLES2Util::IsNPOT(depth))) && |
439 (target != GL_TEXTURE_CUBE_MAP || (width == height && depth == 1)) && | 425 (target != GL_TEXTURE_CUBE_MAP || (width == height && depth == 1)) && |
440 (target != GL_TEXTURE_2D || (depth == 1)); | 426 (target != GL_TEXTURE_2D || (depth == 1)); |
441 } | 427 } |
442 | 428 |
443 void TextureManager::SetInfoTarget(TextureInfo* info, GLenum target) { | |
444 DCHECK(info); | |
445 info->SetTarget(target, MaxLevelsForTarget(target)); | |
446 } | |
447 | |
448 void TextureManager::SetLevelInfo( | 429 void TextureManager::SetLevelInfo( |
449 const FeatureInfo* feature_info, | 430 const FeatureInfo* feature_info, |
450 TextureManager::TextureInfo* info, | 431 TextureManager::TextureInfo* info, |
451 GLenum target, | 432 GLenum target, |
452 GLint level, | 433 GLint level, |
453 GLenum internal_format, | 434 GLenum internal_format, |
454 GLsizei width, | 435 GLsizei width, |
455 GLsizei height, | 436 GLsizei height, |
456 GLsizei depth, | 437 GLsizei depth, |
457 GLint border, | 438 GLint border, |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
538 if (it->second->service_id() == service_id) { | 519 if (it->second->service_id() == service_id) { |
539 *client_id = it->first; | 520 *client_id = it->first; |
540 return true; | 521 return true; |
541 } | 522 } |
542 } | 523 } |
543 return false; | 524 return false; |
544 } | 525 } |
545 | 526 |
546 } // namespace gles2 | 527 } // namespace gles2 |
547 } // namespace gpu | 528 } // namespace gpu |
| 529 |
| 530 |
OLD | NEW |