| /* |
| * Copyright 2021 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "gpu/gles/state_guard.h" |
| |
| #include "gpu/gles/get.h" |
| |
| namespace cros { |
| |
| FramebufferGuard::FramebufferGuard() |
| : draw_fbo_(Get<GLuint>(GL_DRAW_FRAMEBUFFER_BINDING)), |
| read_fbo_(Get<GLuint>(GL_READ_FRAMEBUFFER_BINDING)) {} |
| |
| FramebufferGuard::~FramebufferGuard() { |
| glBindFramebuffer(GL_DRAW_FRAMEBUFFER, draw_fbo_); |
| glBindFramebuffer(GL_READ_FRAMEBUFFER, read_fbo_); |
| } |
| |
| ViewportGuard::ViewportGuard() : viewport_(GetIntArray<4>(GL_VIEWPORT)) {} |
| |
| ViewportGuard::~ViewportGuard() { |
| glViewport(viewport_[0], viewport_[1], viewport_[2], viewport_[3]); |
| } |
| |
| ProgramGuard::ProgramGuard() : program_(Get<GLuint>(GL_CURRENT_PROGRAM)) {} |
| |
| ProgramGuard::~ProgramGuard() { |
| glUseProgram(program_); |
| } |
| |
| VertexArrayGuard::VertexArrayGuard() |
| : vertex_array_(Get<GLuint>(GL_VERTEX_ARRAY_BINDING)) {} |
| |
| VertexArrayGuard::~VertexArrayGuard() { |
| glBindVertexArray(vertex_array_); |
| } |
| |
| } // namespace cros |