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
3// found in the LICENSE file.
4
5#ifndef GPU_COMMAND_BUFFER_CLIENT_PROGRAM_INFO_MANAGER_H_
6#define GPU_COMMAND_BUFFER_CLIENT_PROGRAM_INFO_MANAGER_H_
7
8#include <GLES2/gl2.h>
9#include "gles2_impl_export.h"
10
11namespace gpu {
12namespace gles2 {
13
14class GLES2Implementation;
15
16// Manages info about OpenGL ES Programs.
17class GLES2_IMPL_EXPORT ProgramInfoManager {
18 public:
19  virtual ~ProgramInfoManager();
20
21  static ProgramInfoManager* Create(bool shared_resources_across_processes);
22
23  virtual void CreateInfo(GLuint program) = 0;
24
25  virtual void DeleteInfo(GLuint program) = 0;
26
27  virtual bool GetProgramiv(
28      GLES2Implementation* gl, GLuint program, GLenum pname, GLint* params) = 0;
29
30  virtual GLint GetAttribLocation(
31      GLES2Implementation* gl, GLuint program, const char* name) = 0;
32
33  virtual GLint GetUniformLocation(
34      GLES2Implementation* gl, GLuint program, const char* name) = 0;
35
36  virtual bool GetActiveAttrib(
37      GLES2Implementation* gl,
38      GLuint program, GLuint index, GLsizei bufsize, GLsizei* length,
39      GLint* size, GLenum* type, char* name) = 0;
40
41  virtual bool GetActiveUniform(
42      GLES2Implementation* gl,
43      GLuint program, GLuint index, GLsizei bufsize, GLsizei* length,
44      GLint* size, GLenum* type, char* name) = 0;
45
46 protected:
47  ProgramInfoManager();
48};
49
50}  // namespace gles2
51}  // namespace gpu
52
53#endif  // GPU_COMMAND_BUFFER_CLIENT_PROGRAM_INFO_MANAGER_H_
54