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

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

Issue 2429005: Adds tracking of number of unrenderable textures so... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 6 months 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) 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 #ifndef GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 5 #ifndef GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
6 #define GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 6 #define GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
7 7
8 #include <map> 8 #include <map>
9 #include <vector> 9 #include <vector>
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 } 71 }
72 72
73 // Whether or not this texture is a non-power-of-two texture. 73 // Whether or not this texture is a non-power-of-two texture.
74 bool npot() const { 74 bool npot() const {
75 return npot_; 75 return npot_;
76 } 76 }
77 77
78 // Returns true if mipmaps can be generated by GL. 78 // Returns true if mipmaps can be generated by GL.
79 bool CanGenerateMipmaps() const; 79 bool CanGenerateMipmaps() const;
80 80
81 // Makes each of the mip levels as though they were generated.
82 bool MarkMipmapsGenerated();
83
84 // Set the info for a particular level.
85 void SetLevelInfo(
86 GLenum target,
87 GLint level,
88 GLint internal_format,
89 GLsizei width,
90 GLsizei height,
91 GLsizei depth,
92 GLint border,
93 GLenum format,
94 GLenum type);
95
96 // Get the width and height for a particular level. Returns false if level 81 // Get the width and height for a particular level. Returns false if level
97 // does not exist. 82 // does not exist.
98 bool GetLevelSize( 83 bool GetLevelSize(
99 GLint face, GLint level, GLsizei* width, GLsizei* height) const; 84 GLint face, GLint level, GLsizei* width, GLsizei* height) const;
100 85
101 // Sets a texture parameter.
102 // TODO(gman): Expand to SetParameteri,f,iv,fv
103 void SetParameter(GLenum pname, GLint param);
104
105 bool IsDeleted() const { 86 bool IsDeleted() const {
106 return deleted_; 87 return deleted_;
107 } 88 }
108 89
109 private: 90 private:
110 friend class TextureManager; 91 friend class TextureManager;
111 friend class base::RefCounted<TextureInfo>; 92 friend class base::RefCounted<TextureInfo>;
112 93
113 ~TextureInfo() { } 94 ~TextureInfo() { }
114 95
(...skipping 12 matching lines...) Expand all
127 bool valid; 108 bool valid;
128 GLint internal_format; 109 GLint internal_format;
129 GLsizei width; 110 GLsizei width;
130 GLsizei height; 111 GLsizei height;
131 GLsizei depth; 112 GLsizei depth;
132 GLint border; 113 GLint border;
133 GLenum format; 114 GLenum format;
134 GLenum type; 115 GLenum type;
135 }; 116 };
136 117
118 // Set the info for a particular level.
119 void SetLevelInfo(
120 GLenum target,
121 GLint level,
122 GLint internal_format,
123 GLsizei width,
124 GLsizei height,
125 GLsizei depth,
126 GLint border,
127 GLenum format,
128 GLenum type);
129
130 // Sets a texture parameter.
131 // TODO(gman): Expand to SetParameteri,f,iv,fv
132 void SetParameter(GLenum pname, GLint param);
133
134 // Makes each of the mip levels as though they were generated.
135 bool MarkMipmapsGenerated();
136
137 void MarkAsDeleted() { 137 void MarkAsDeleted() {
138 service_id_ = 0; 138 service_id_ = 0;
139 deleted_ = true; 139 deleted_ = true;
140 } 140 }
141 141
142 bool NeedsMips() const { 142 bool NeedsMips() const {
143 return min_filter_ != GL_NEAREST && min_filter_ != GL_LINEAR; 143 return min_filter_ != GL_NEAREST && min_filter_ != GL_LINEAR;
144 } 144 }
145 145
146 // Sets the TextureInfo's target 146 // Sets the TextureInfo's target
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 214
215 // Sets the TextureInfo's target 215 // Sets the TextureInfo's target
216 // Parameters: 216 // Parameters:
217 // target: GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP 217 // target: GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP
218 // max_levels: The maximum levels this type of target can have. 218 // max_levels: The maximum levels this type of target can have.
219 void SetInfoTarget(TextureInfo* info, GLenum target) { 219 void SetInfoTarget(TextureInfo* info, GLenum target) {
220 DCHECK(info); 220 DCHECK(info);
221 info->SetTarget(target, MaxLevelsForTarget(target)); 221 info->SetTarget(target, MaxLevelsForTarget(target));
222 } 222 }
223 223
224 // Set the info for a particular level in a TexureInfo.
225 void SetLevelInfo(
226 TextureInfo* info,
227 GLenum target,
228 GLint level,
229 GLint internal_format,
230 GLsizei width,
231 GLsizei height,
232 GLsizei depth,
233 GLint border,
234 GLenum format,
235 GLenum type);
236
237 // Sets a texture parameter of a TextureInfo
238 // TODO(gman): Expand to SetParameteri,f,iv,fv
239 void SetParameter(TextureInfo* info, GLenum pname, GLint param);
240
241 // Makes each of the mip levels as though they were generated.
242 bool MarkMipmapsGenerated(TextureInfo* info);
243
224 // Creates a new texture info. 244 // Creates a new texture info.
225 TextureInfo* CreateTextureInfo(GLuint client_id, GLuint service_id); 245 TextureInfo* CreateTextureInfo(GLuint client_id, GLuint service_id);
226 246
227 // Gets the texture info for the given texture. 247 // Gets the texture info for the given texture.
228 TextureInfo* GetTextureInfo(GLuint client_id); 248 TextureInfo* GetTextureInfo(GLuint client_id);
229 249
230 // Removes a texture info. 250 // Removes a texture info.
231 void RemoveTextureInfo(GLuint client_id); 251 void RemoveTextureInfo(GLuint client_id);
232 252
233 // Gets a client id for a given service id. 253 // Gets a client id for a given service id.
234 bool GetClientId(GLuint service_id, GLuint* client_id) const; 254 bool GetClientId(GLuint service_id, GLuint* client_id) const;
235 255
236 TextureInfo* GetDefaultTextureInfo(GLenum target) { 256 TextureInfo* GetDefaultTextureInfo(GLenum target) {
237 return target == GL_TEXTURE_2D ? default_texture_2d_ : 257 return target == GL_TEXTURE_2D ? default_texture_2d_ :
238 default_texture_cube_map_; 258 default_texture_cube_map_;
239 } 259 }
240 260
261 bool HaveUnrenderableTextures() const {
262 return num_unrenderable_textures_ > 0;
263 }
264
241 private: 265 private:
242 // Info for each texture in the system. 266 // Info for each texture in the system.
243 // TODO(gman): Choose a faster container. 267 // TODO(gman): Choose a faster container.
244 typedef std::map<GLuint, TextureInfo::Ref> TextureInfoMap; 268 typedef std::map<GLuint, TextureInfo::Ref> TextureInfoMap;
245 TextureInfoMap texture_infos_; 269 TextureInfoMap texture_infos_;
246 270
247 GLsizei max_texture_size_; 271 GLsizei max_texture_size_;
248 GLsizei max_cube_map_texture_size_; 272 GLsizei max_cube_map_texture_size_;
249 GLint max_levels_; 273 GLint max_levels_;
250 GLint max_cube_map_levels_; 274 GLint max_cube_map_levels_;
251 275
276 int num_unrenderable_textures_;
277
252 // The default textures for each target (texture name = 0) 278 // The default textures for each target (texture name = 0)
253 TextureInfo::Ref default_texture_2d_; 279 TextureInfo::Ref default_texture_2d_;
254 TextureInfo::Ref default_texture_cube_map_; 280 TextureInfo::Ref default_texture_cube_map_;
255 281
256 DISALLOW_COPY_AND_ASSIGN(TextureManager); 282 DISALLOW_COPY_AND_ASSIGN(TextureManager);
257 }; 283 };
258 284
259 } // namespace gles2 285 } // namespace gles2
260 } // namespace gpu 286 } // namespace gpu
261 287
262 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 288 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
263 289
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698