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

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

Issue 10543125: gpu: Add support for GLX_EXT_texture_from_pixmap extension. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove .gitmodules change. Created 8 years, 5 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 <vector> 8 #include <vector>
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/hash_tables.h" 10 #include "base/hash_tables.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "gpu/command_buffer/service/feature_info.h" 13 #include "gpu/command_buffer/service/feature_info.h"
14 #include "gpu/command_buffer/service/gl_utils.h" 14 #include "gpu/command_buffer/service/gl_utils.h"
15 #include "gpu/gpu_export.h" 15 #include "gpu/gpu_export.h"
16 #include "ui/gl/gl_image.h"
16 17
17 namespace gpu { 18 namespace gpu {
18 namespace gles2 { 19 namespace gles2 {
19 20
20 class GLES2Decoder; 21 class GLES2Decoder;
21 class Display; 22 class Display;
22 class TextureDefinition; 23 class TextureDefinition;
23 24
24 // This class keeps track of the textures and their sizes so we can do NPOT and 25 // This class keeps track of the textures and their sizes so we can do NPOT and
25 // texture complete checking. 26 // texture complete checking.
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 116
116 // Get the width and height for a particular level. Returns false if level 117 // Get the width and height for a particular level. Returns false if level
117 // does not exist. 118 // does not exist.
118 bool GetLevelSize( 119 bool GetLevelSize(
119 GLint face, GLint level, GLsizei* width, GLsizei* height) const; 120 GLint face, GLint level, GLsizei* width, GLsizei* height) const;
120 121
121 // Get the type of a level. Returns false if level does not exist. 122 // Get the type of a level. Returns false if level does not exist.
122 bool GetLevelType( 123 bool GetLevelType(
123 GLint face, GLint level, GLenum* type, GLenum* internal_format) const; 124 GLint face, GLint level, GLenum* type, GLenum* internal_format) const;
124 125
126 // Get the image bound to a particular level. Returns NULL if level
127 // does not exist.
128 scoped_refptr<gfx::GLImage> GetLevelImage(GLint face, GLint level) const;
129
125 bool IsDeleted() const { 130 bool IsDeleted() const {
126 return deleted_; 131 return deleted_;
127 } 132 }
128 133
129 // Returns true of the given dimensions are inside the dimensions of the 134 // Returns true of the given dimensions are inside the dimensions of the
130 // level and if the format and type match the level. 135 // level and if the format and type match the level.
131 bool ValidForTexture( 136 bool ValidForTexture(
132 GLint face, 137 GLint face,
133 GLint level, 138 GLint level,
134 GLint xoffset, 139 GLint xoffset,
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 : cleared(rhs.cleared), 209 : cleared(rhs.cleared),
205 target(rhs.target), 210 target(rhs.target),
206 level(rhs.level), 211 level(rhs.level),
207 internal_format(rhs.internal_format), 212 internal_format(rhs.internal_format),
208 width(rhs.width), 213 width(rhs.width),
209 height(rhs.height), 214 height(rhs.height),
210 depth(rhs.depth), 215 depth(rhs.depth),
211 border(rhs.border), 216 border(rhs.border),
212 format(rhs.format), 217 format(rhs.format),
213 type(rhs.type), 218 type(rhs.type),
219 image(rhs.image),
214 estimated_size(rhs.estimated_size) { 220 estimated_size(rhs.estimated_size) {
215 } 221 }
216 222
223 ~LevelInfo() {}
224
217 bool cleared; 225 bool cleared;
218 GLenum target; 226 GLenum target;
219 GLint level; 227 GLint level;
220 GLenum internal_format; 228 GLenum internal_format;
221 GLsizei width; 229 GLsizei width;
222 GLsizei height; 230 GLsizei height;
223 GLsizei depth; 231 GLsizei depth;
224 GLint border; 232 GLint border;
225 GLenum format; 233 GLenum format;
226 GLenum type; 234 GLenum type;
235 scoped_refptr<gfx::GLImage> image;
227 uint32 estimated_size; 236 uint32 estimated_size;
228 }; 237 };
229 238
230 // Set the info for a particular level. 239 // Set the info for a particular level.
231 void SetLevelInfo( 240 void SetLevelInfo(
232 const FeatureInfo* feature_info, 241 const FeatureInfo* feature_info,
233 GLenum target, 242 GLenum target,
234 GLint level, 243 GLint level,
235 GLenum internal_format, 244 GLenum internal_format,
236 GLsizei width, 245 GLsizei width,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 // Sets the TextureInfo's target 291 // Sets the TextureInfo's target
283 // Parameters: 292 // Parameters:
284 // target: GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP or 293 // target: GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP or
285 // GL_TEXTURE_EXTERNAL_OES or GL_TEXTURE_RECTANGLE_ARB 294 // GL_TEXTURE_EXTERNAL_OES or GL_TEXTURE_RECTANGLE_ARB
286 // max_levels: The maximum levels this type of target can have. 295 // max_levels: The maximum levels this type of target can have.
287 void SetTarget(GLenum target, GLint max_levels); 296 void SetTarget(GLenum target, GLint max_levels);
288 297
289 // Update info about this texture. 298 // Update info about this texture.
290 void Update(const FeatureInfo* feature_info); 299 void Update(const FeatureInfo* feature_info);
291 300
301 // Set the image for a particular level.
302 void SetLevelImage(
303 const FeatureInfo* feature_info,
304 GLenum target,
305 GLint level,
306 scoped_refptr<gfx::GLImage> image);
307
292 // Info about each face and level of texture. 308 // Info about each face and level of texture.
293 std::vector<std::vector<LevelInfo> > level_infos_; 309 std::vector<std::vector<LevelInfo> > level_infos_;
294 310
295 // The texture manager that manages this TextureInfo. 311 // The texture manager that manages this TextureInfo.
296 TextureManager* manager_; 312 TextureManager* manager_;
297 313
298 // The id of the texure 314 // The id of the texure
299 GLuint service_id_; 315 GLuint service_id_;
300 316
301 // Whether this texture has been deleted. 317 // Whether this texture has been deleted.
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 default: 522 default:
507 NOTREACHED(); 523 NOTREACHED();
508 return 0; 524 return 0;
509 } 525 }
510 } 526 }
511 527
512 uint32 mem_represented() const { 528 uint32 mem_represented() const {
513 return mem_represented_; 529 return mem_represented_;
514 } 530 }
515 531
532 void SetLevelImage(
533 TextureInfo* info,
534 GLenum target,
535 GLint level,
536 scoped_refptr<gfx::GLImage> image);
537
516 private: 538 private:
517 // Helper for Initialize(). 539 // Helper for Initialize().
518 TextureInfo::Ref CreateDefaultAndBlackTextures( 540 TextureInfo::Ref CreateDefaultAndBlackTextures(
519 GLenum target, 541 GLenum target,
520 GLuint* black_texture); 542 GLuint* black_texture);
521 543
522 void UpdateMemRepresented(); 544 void UpdateMemRepresented();
523 545
524 void StartTracking(TextureInfo* info); 546 void StartTracking(TextureInfo* info);
525 void StopTracking(TextureInfo* info); 547 void StopTracking(TextureInfo* info);
(...skipping 30 matching lines...) Expand all
556 // The default textures for each target (texture name = 0) 578 // The default textures for each target (texture name = 0)
557 TextureInfo::Ref default_textures_[kNumDefaultTextures]; 579 TextureInfo::Ref default_textures_[kNumDefaultTextures];
558 580
559 DISALLOW_COPY_AND_ASSIGN(TextureManager); 581 DISALLOW_COPY_AND_ASSIGN(TextureManager);
560 }; 582 };
561 583
562 } // namespace gles2 584 } // namespace gles2
563 } // namespace gpu 585 } // namespace gpu
564 586
565 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 587 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698