Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(401)

Side by Side Diff: gpu/command_buffer/service/texture_manager.cc

Issue 8772033: Adds support for the GL_ANGLE_texture_usage and GL_EXT_texture_storage (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "base/bits.h" 6 #include "base/bits.h"
7 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 7 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
8 #include "gpu/command_buffer/service/feature_info.h" 8 #include "gpu/command_buffer/service/feature_info.h"
9 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" 9 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
10 10
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 return texture_complete(); 104 return texture_complete();
105 } else { 105 } else {
106 return texture_complete() && cube_complete(); 106 return texture_complete() && cube_complete();
107 } 107 }
108 } else { 108 } else {
109 return true; 109 return true;
110 } 110 }
111 } 111 }
112 112
113 bool TextureManager::TextureInfo::MarkMipmapsGenerated( 113 bool TextureManager::TextureInfo::MarkMipmapsGenerated(
114 const FeatureInfo* feature_info) { 114 const FeatureInfo* feature_info) {
greggman 2011/12/02 18:33:24 add 'bool cleared'?
vangelis 2011/12/03 00:19:53 Done.
115 if (!CanGenerateMipmaps(feature_info)) { 115 if (!CanGenerateMipmaps(feature_info)) {
116 return false; 116 return false;
117 } 117 }
118 for (size_t ii = 0; ii < level_infos_.size(); ++ii) { 118 for (size_t ii = 0; ii < level_infos_.size(); ++ii) {
119 const TextureInfo::LevelInfo& info1 = level_infos_[ii][0]; 119 const TextureInfo::LevelInfo& info1 = level_infos_[ii][0];
120 GLsizei width = info1.width; 120 GLsizei width = info1.width;
121 GLsizei height = info1.height; 121 GLsizei height = info1.height;
122 GLsizei depth = info1.depth; 122 GLsizei depth = info1.depth;
123 GLenum target = target_ == GL_TEXTURE_2D ? GL_TEXTURE_2D : 123 GLenum target = target_ == GL_TEXTURE_2D ? GL_TEXTURE_2D :
124 FaceIndexToGLTarget(ii); 124 FaceIndexToGLTarget(ii);
125 int num_mips = ComputeMipMapCount(width, height, depth); 125 int num_mips = ComputeMipMapCount(width, height, depth);
126 for (int level = 1; level < num_mips; ++level) { 126 for (int level = 1; level < num_mips; ++level) {
127 width = std::max(1, width >> 1); 127 width = std::max(1, width >> 1);
128 height = std::max(1, height >> 1); 128 height = std::max(1, height >> 1);
129 depth = std::max(1, depth >> 1); 129 depth = std::max(1, depth >> 1);
130 SetLevelInfo(feature_info, 130 SetLevelInfo(feature_info,
131 target, 131 target,
132 level, 132 level,
133 info1.internal_format, 133 info1.internal_format,
134 width, 134 width,
135 height, 135 height,
136 depth, 136 depth,
137 info1.border, 137 info1.border,
138 info1.format, 138 info1.format,
139 info1.type, 139 info1.type,
140 true); 140 true);
greggman 2011/12/02 18:33:24 change this true to 'cleared'
vangelis 2011/12/03 00:19:53 Done.
141 } 141 }
142 } 142 }
143 143
144 return true; 144 return true;
145 } 145 }
146 146
147 void TextureManager::TextureInfo::SetTarget(GLenum target, GLint max_levels) { 147 void TextureManager::TextureInfo::SetTarget(GLenum target, GLint max_levels) {
148 DCHECK_EQ(0u, target_); // you can only set this once. 148 DCHECK_EQ(0u, target_); // you can only set this once.
149 target_ = target; 149 target_ = target;
150 size_t num_faces = (target == GL_TEXTURE_CUBE_MAP) ? 6 : 1; 150 size_t num_faces = (target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 break; 361 break;
362 case GL_TEXTURE_WRAP_T: 362 case GL_TEXTURE_WRAP_T:
363 if (!feature_info->validators()->texture_wrap_mode.IsValid(param)) { 363 if (!feature_info->validators()->texture_wrap_mode.IsValid(param)) {
364 return false; 364 return false;
365 } 365 }
366 wrap_t_ = param; 366 wrap_t_ = param;
367 break; 367 break;
368 case GL_TEXTURE_MAX_ANISOTROPY_EXT: 368 case GL_TEXTURE_MAX_ANISOTROPY_EXT:
369 // Nothing to do for this case at the moment. 369 // Nothing to do for this case at the moment.
370 break; 370 break;
371 case GL_TEXTURE_USAGE_ANGLE:
372 if (!feature_info->validators()->texture_usage.IsValid(param)) {
373 return false;
374 }
375 usage_ = param;
376 break;
371 default: 377 default:
372 NOTREACHED(); 378 NOTREACHED();
373 return false; 379 return false;
374 } 380 }
375 Update(feature_info); 381 Update(feature_info);
376 UpdateCleared(); 382 UpdateCleared();
377 return true; 383 return true;
378 } 384 }
379 385
380 void TextureManager::TextureInfo::Update(const FeatureInfo* feature_info) { 386 void TextureManager::TextureInfo::Update(const FeatureInfo* feature_info) {
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
864 return true; 870 return true;
865 } 871 }
866 } 872 }
867 return false; 873 return false;
868 } 874 }
869 875
870 } // namespace gles2 876 } // namespace gles2
871 } // namespace gpu 877 } // namespace gpu
872 878
873 879
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698