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

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

Issue 14828011: Mark zero dimension textures as unrenderable (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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) 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_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 <list> 8 #include <list>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 132
133 void AttachToFramebuffer() { 133 void AttachToFramebuffer() {
134 ++framebuffer_attachment_count_; 134 ++framebuffer_attachment_count_;
135 } 135 }
136 136
137 void DetachFromFramebuffer() { 137 void DetachFromFramebuffer() {
138 DCHECK_GT(framebuffer_attachment_count_, 0); 138 DCHECK_GT(framebuffer_attachment_count_, 0);
139 --framebuffer_attachment_count_; 139 --framebuffer_attachment_count_;
140 } 140 }
141 141
142 void SetStreamTexture(bool stream_texture) { 142 bool IsStreamTexture() const {
143 stream_texture_ = stream_texture;
144 }
145
146 bool IsStreamTexture() {
147 return stream_texture_; 143 return stream_texture_;
148 } 144 }
149 145
150 gpu::AsyncPixelTransferState* GetAsyncTransferState() const { 146 gpu::AsyncPixelTransferState* GetAsyncTransferState() const {
151 return async_transfer_state_.get(); 147 return async_transfer_state_.get();
152 } 148 }
153 void SetAsyncTransferState(scoped_ptr<gpu::AsyncPixelTransferState> state) { 149 void SetAsyncTransferState(scoped_ptr<gpu::AsyncPixelTransferState> state) {
154 async_transfer_state_ = state.Pass(); 150 async_transfer_state_ = state.Pass();
155 } 151 }
156 bool AsyncTransferIsInProgress() { 152 bool AsyncTransferIsInProgress() {
157 return async_transfer_state_ && 153 return async_transfer_state_ &&
158 async_transfer_state_->TransferIsInProgress(); 154 async_transfer_state_->TransferIsInProgress();
159 } 155 }
160 156
161 void SetImmutable(bool immutable) { 157 void SetImmutable(bool immutable) {
162 immutable_ = immutable; 158 immutable_ = immutable;
163 } 159 }
164 160
165 bool IsImmutable() { 161 bool IsImmutable() const {
166 return immutable_; 162 return immutable_;
167 } 163 }
168 164
169 // Whether a particular level/face is cleared. 165 // Whether a particular level/face is cleared.
170 bool IsLevelCleared(GLenum target, GLint level) const; 166 bool IsLevelCleared(GLenum target, GLint level) const;
171 167
172 // Whether the texture has been defined 168 // Whether the texture has been defined
173 bool IsDefined() { 169 bool IsDefined() const {
174 return estimated_size() > 0; 170 return estimated_size() > 0;
175 } 171 }
176 172
177 private: 173 private:
178 friend class TextureManager; 174 friend class TextureManager;
179 friend class TextureTestHelper; 175 friend class TextureTestHelper;
180 friend class base::RefCounted<Texture>; 176 friend class base::RefCounted<Texture>;
181 177
182 ~Texture(); 178 ~Texture();
183 179
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 // same format, all the same dimensions and all width = height. 221 // same format, all the same dimensions and all width = height.
226 bool cube_complete() const { 222 bool cube_complete() const {
227 return cube_complete_; 223 return cube_complete_;
228 } 224 }
229 225
230 // Whether or not this texture is a non-power-of-two texture. 226 // Whether or not this texture is a non-power-of-two texture.
231 bool npot() const { 227 bool npot() const {
232 return npot_; 228 return npot_;
233 } 229 }
234 230
231 void SetStreamTexture(bool stream_texture) {
232 stream_texture_ = stream_texture;
233 }
234
235 // Marks a particular level as cleared or uncleared. 235 // Marks a particular level as cleared or uncleared.
236 void SetLevelCleared(GLenum target, GLint level, bool cleared); 236 void SetLevelCleared(GLenum target, GLint level, bool cleared);
237 237
238 // Updates the cleared flag for this texture by inspecting all the mips. 238 // Updates the cleared flag for this texture by inspecting all the mips.
239 void UpdateCleared(); 239 void UpdateCleared();
240 240
241 // Clears any renderable uncleared levels. 241 // Clears any renderable uncleared levels.
242 // Returns false if a GL error was generated. 242 // Returns false if a GL error was generated.
243 bool ClearRenderableLevels(GLES2Decoder* decoder); 243 bool ClearRenderableLevels(GLES2Decoder* decoder);
244 244
(...skipping 23 matching lines...) Expand all
268 bool CanRender(const FeatureInfo* feature_info) const; 268 bool CanRender(const FeatureInfo* feature_info) const;
269 269
270 // Returns true if mipmaps can be generated by GL. 270 // Returns true if mipmaps can be generated by GL.
271 bool CanGenerateMipmaps(const FeatureInfo* feature_info) const; 271 bool CanGenerateMipmaps(const FeatureInfo* feature_info) const;
272 272
273 // Sets the Texture's target 273 // Sets the Texture's target
274 // Parameters: 274 // Parameters:
275 // target: GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP or 275 // target: GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP or
276 // GL_TEXTURE_EXTERNAL_OES or GL_TEXTURE_RECTANGLE_ARB 276 // GL_TEXTURE_EXTERNAL_OES or GL_TEXTURE_RECTANGLE_ARB
277 // max_levels: The maximum levels this type of target can have. 277 // max_levels: The maximum levels this type of target can have.
278 void SetTarget(GLenum target, GLint max_levels); 278 void SetTarget(
279 const FeatureInfo* feature_info, GLenum target, GLint max_levels);
279 280
280 // Update info about this texture. 281 // Update info about this texture.
281 void Update(const FeatureInfo* feature_info); 282 void Update(const FeatureInfo* feature_info);
282 283
283 // Set the image for a particular level. 284 // Set the image for a particular level.
284 void SetLevelImage( 285 void SetLevelImage(
285 const FeatureInfo* feature_info, 286 const FeatureInfo* feature_info,
286 GLenum target, 287 GLenum target,
287 GLint level, 288 GLint level,
288 gfx::GLImage* image); 289 gfx::GLImage* image);
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 } 430 }
430 431
431 // Sets the Texture's target 432 // Sets the Texture's target
432 // Parameters: 433 // Parameters:
433 // target: GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP 434 // target: GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP
434 // max_levels: The maximum levels this type of target can have. 435 // max_levels: The maximum levels this type of target can have.
435 void SetTarget( 436 void SetTarget(
436 Texture* texture, 437 Texture* texture,
437 GLenum target); 438 GLenum target);
438 439
440 // Marks a texture as a stream texture.
441 void SetStreamTexture(Texture* texture, bool stream_texture);
442
439 // Set the info for a particular level in a TexureInfo. 443 // Set the info for a particular level in a TexureInfo.
440 void SetLevelInfo( 444 void SetLevelInfo(
441 Texture* texture, 445 Texture* texture,
442 GLenum target, 446 GLenum target,
443 GLint level, 447 GLint level,
444 GLenum internal_format, 448 GLenum internal_format,
445 GLsizei width, 449 GLsizei width,
446 GLsizei height, 450 GLsizei height,
447 GLsizei depth, 451 GLsizei depth,
448 GLint border, 452 GLint border,
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 // The default textures for each target (texture name = 0) 614 // The default textures for each target (texture name = 0)
611 scoped_refptr<Texture> default_textures_[kNumDefaultTextures]; 615 scoped_refptr<Texture> default_textures_[kNumDefaultTextures];
612 616
613 DISALLOW_COPY_AND_ASSIGN(TextureManager); 617 DISALLOW_COPY_AND_ASSIGN(TextureManager);
614 }; 618 };
615 619
616 } // namespace gles2 620 } // namespace gles2
617 } // namespace gpu 621 } // namespace gpu
618 622
619 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 623 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc ('k') | gpu/command_buffer/service/texture_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698