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

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

Issue 6028005: Make CopyTexImage2D and CopyTexSubImage2D fail if... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 12 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_RENDERBUFFER_MANAGER_H_ 5 #ifndef GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_
6 #define GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_ 6 #define GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_
7 7
8 #include <map> 8 #include <map>
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/ref_counted.h" 10 #include "base/ref_counted.h"
11 #include "base/scoped_ptr.h" 11 #include "base/scoped_ptr.h"
12 #include "gpu/command_buffer/service/gl_utils.h" 12 #include "gpu/command_buffer/service/gl_utils.h"
13 13
14 namespace gpu { 14 namespace gpu {
15 namespace gles2 { 15 namespace gles2 {
16 16
17 // This class keeps track of the renderbuffers and whether or not they have 17 // This class keeps track of the renderbuffers and whether or not they have
18 // been cleared. 18 // been cleared.
19 class RenderbufferManager { 19 class RenderbufferManager {
20 public: 20 public:
21 // Info about Renderbuffers currently in the system. 21 // Info about Renderbuffers currently in the system.
22 class RenderbufferInfo : public base::RefCounted<RenderbufferInfo> { 22 class RenderbufferInfo : public base::RefCounted<RenderbufferInfo> {
23 public: 23 public:
24 typedef scoped_refptr<RenderbufferInfo> Ref; 24 typedef scoped_refptr<RenderbufferInfo> Ref;
25 25
26 explicit RenderbufferInfo(GLuint service_id) 26 explicit RenderbufferInfo(GLuint service_id)
27 : service_id_(service_id), 27 : service_id_(service_id),
28 cleared_(false), 28 cleared_(false),
29 internal_format_(GL_RGBA4) { 29 samples_(0),
30 internal_format_(GL_RGBA4),
31 width_(0),
32 height_(0) {
30 } 33 }
31 34
32 GLuint service_id() const { 35 GLuint service_id() const {
33 return service_id_; 36 return service_id_;
34 } 37 }
35 38
36 bool cleared() const { 39 bool cleared() const {
37 return cleared_; 40 return cleared_;
38 } 41 }
39 42
40 void set_cleared() { 43 void set_cleared() {
41 cleared_ = true; 44 cleared_ = true;
42 } 45 }
43 46
44 GLenum internal_format() const { 47 GLenum internal_format() const {
45 return internal_format_; 48 return internal_format_;
46 } 49 }
47 50
48 void set_internal_format(GLenum internalformat) { 51 GLsizei samples() const {
52 return samples_;
53 }
54
55 GLsizei width() const {
56 return width_;
57 }
58
59 GLsizei height() const {
60 return height_;
61 }
62
63 void SetInfo(
64 GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
65 samples_ = samples;
49 internal_format_ = internalformat; 66 internal_format_ = internalformat;
67 width_ = width;
68 height_ = height;
50 cleared_ = false; 69 cleared_ = false;
51 } 70 }
52 71
53 bool IsDeleted() { 72 bool IsDeleted() {
54 return service_id_ == 0; 73 return service_id_ == 0;
55 } 74 }
56 75
57 private: 76 private:
58 friend class RenderbufferManager; 77 friend class RenderbufferManager;
59 friend class base::RefCounted<RenderbufferInfo>; 78 friend class base::RefCounted<RenderbufferInfo>;
60 79
61 ~RenderbufferInfo() { } 80 ~RenderbufferInfo() { }
62 81
63 void MarkAsDeleted() { 82 void MarkAsDeleted() {
64 service_id_ = 0; 83 service_id_ = 0;
65 } 84 }
66 85
67 // Service side renderbuffer id. 86 // Service side renderbuffer id.
68 GLuint service_id_; 87 GLuint service_id_;
69 88
70 // Whether this renderbuffer has been cleared 89 // Whether this renderbuffer has been cleared
71 bool cleared_; 90 bool cleared_;
72 91
92 // Number of samples (for multi-sampled renderbuffers)
93 GLsizei samples_;
94
73 // Renderbuffer internalformat set through RenderbufferStorage(). 95 // Renderbuffer internalformat set through RenderbufferStorage().
74 GLenum internal_format_; 96 GLenum internal_format_;
97
98 // Dimensions of renderbuffer.
99 GLsizei width_;
100 GLsizei height_;
75 }; 101 };
76 102
77 explicit RenderbufferManager(GLint max_renderbuffer_size); 103 explicit RenderbufferManager(GLint max_renderbuffer_size);
78 ~RenderbufferManager(); 104 ~RenderbufferManager();
79 105
80 GLint max_renderbuffer_size() const { 106 GLint max_renderbuffer_size() const {
81 return max_renderbuffer_size_; 107 return max_renderbuffer_size_;
82 } 108 }
83 109
84 // Must call before destruction. 110 // Must call before destruction.
(...skipping 19 matching lines...) Expand all
104 typedef std::map<GLuint, RenderbufferInfo::Ref> RenderbufferInfoMap; 130 typedef std::map<GLuint, RenderbufferInfo::Ref> RenderbufferInfoMap;
105 RenderbufferInfoMap renderbuffer_infos_; 131 RenderbufferInfoMap renderbuffer_infos_;
106 132
107 DISALLOW_COPY_AND_ASSIGN(RenderbufferManager); 133 DISALLOW_COPY_AND_ASSIGN(RenderbufferManager);
108 }; 134 };
109 135
110 } // namespace gles2 136 } // namespace gles2
111 } // namespace gpu 137 } // namespace gpu
112 138
113 #endif // GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_ 139 #endif // GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698