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

Unified Diff: ui/gl/scoped_binders.cc

Issue 1419733005: gpu: Add YCbCr 420v extension. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Set origin to crrev.com/1408753003. Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: ui/gl/scoped_binders.cc
diff --git a/ui/gl/scoped_binders.cc b/ui/gl/scoped_binders.cc
index bb2b290105622a9823b49b284d6bbd72aa6f36bc..35ce21656167c33b9fc61fc56cca61b9fadd44cd 100644
--- a/ui/gl/scoped_binders.cc
+++ b/ui/gl/scoped_binders.cc
@@ -29,6 +29,16 @@ ScopedFrameBufferBinder::~ScopedFrameBufferBinder() {
}
}
+ScopedActiveTexture::ScopedActiveTexture(unsigned int texture)
+ : old_texture_(-1) {
+ glGetIntegerv(GL_ACTIVE_TEXTURE, &old_texture_);
+ glActiveTexture(texture);
+}
+
+ScopedActiveTexture::~ScopedActiveTexture() {
+ glActiveTexture(old_texture_);
+}
+
ScopedTextureBinder::ScopedTextureBinder(unsigned int target, unsigned int id)
: state_restorer_(!GLContext::GetCurrent()
? NULL
@@ -47,8 +57,11 @@ ScopedTextureBinder::ScopedTextureBinder(unsigned int target, unsigned int id)
case GL_TEXTURE_EXTERNAL_OES:
target_getter = GL_TEXTURE_BINDING_EXTERNAL_OES;
break;
+ case GL_TEXTURE_RECTANGLE_ARB:
+ target_getter = GL_TEXTURE_BINDING_RECTANGLE_ARB;
+ break;
default:
- NOTIMPLEMENTED() << "Target not part of OpenGL ES 2.0 spec.";
+ NOTIMPLEMENTED() << " Target not supported.";
}
glGetIntegerv(target_getter, &old_id_);
}
@@ -65,4 +78,52 @@ ScopedTextureBinder::~ScopedTextureBinder() {
}
}
+ScopedUseProgram::ScopedUseProgram(unsigned int program) : old_program_(-1) {
+ glGetIntegerv(GL_CURRENT_PROGRAM, &old_program_);
+ glUseProgram(program);
+}
+
+ScopedUseProgram::~ScopedUseProgram() {
+ glUseProgram(old_program_);
+}
+
+ScopedEnableVertexAttribArray::ScopedEnableVertexAttribArray(unsigned int index)
+ : enabled_(GL_FALSE), index_(index) {
+ glGetVertexAttribiv(index, GL_VERTEX_ATTRIB_ARRAY_ENABLED, &enabled_);
+ glEnableVertexAttribArray(index);
+}
+
+ScopedEnableVertexAttribArray::~ScopedEnableVertexAttribArray() {
+ if (enabled_ == GL_FALSE) {
+ glDisableVertexAttribArray(index_);
+ }
+}
+
+ScopedBufferBinder::ScopedBufferBinder(unsigned int target, unsigned int id)
+ : target_(target), old_id_(-1) {
+ GLenum target_getter = 0;
+ switch (target) {
+ case GL_ARRAY_BUFFER:
+ target_getter = GL_ARRAY_BUFFER_BINDING;
+ break;
+ default:
+ NOTIMPLEMENTED() << " Target not supported.";
+ }
+ glGetIntegerv(target_getter, &old_id_);
+ glBindBuffer(target_, id);
+}
+
+ScopedBufferBinder::~ScopedBufferBinder() {
+ glBindBuffer(target_, old_id_);
+}
+
+ScopedViewport::ScopedViewport(int x, int y, int width, int height) {
+ glGetIntegerv(GL_VIEWPORT, data_);
+ glViewport(x, y, width, height);
+}
+
+ScopedViewport::~ScopedViewport() {
+ glViewport(data_[0], data_[1], data_[2], data_[3]);
+}
+
} // namespace gfx

Powered by Google App Engine
This is Rietveld 408576698