blob: 366eeadadb5acf762871c6a6ece0957230c58286 [file] [log] [blame]
Geoff Langff5b2d52016-09-07 11:32:23 -04001//
2// Copyright (c) 2016 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
7// queryutils.h: Utilities for querying values from GL objects
8
9#ifndef LIBANGLE_QUERYUTILS_H_
10#define LIBANGLE_QUERYUTILS_H_
11
12#include "angle_gl.h"
13#include "common/angleutils.h"
14
Geoff Lang65603eb2017-01-12 16:48:03 -050015#include <EGL/egl.h>
16
Geoff Langff5b2d52016-09-07 11:32:23 -040017namespace gl
18{
19class Buffer;
20class Framebuffer;
21class Program;
Geoff Lang740d9022016-10-07 11:20:52 -040022class Renderbuffer;
Geoff Langc1984ed2016-10-07 12:41:00 -040023class Sampler;
Geoff Langd7d0ed32016-10-07 11:33:51 -040024class Shader;
Geoff Langc1984ed2016-10-07 12:41:00 -040025class Texture;
Geoff Lang0a9661f2016-10-20 10:59:20 -070026struct TextureCaps;
Geoff Lang6899b872016-10-14 11:30:13 -040027struct UniformBlock;
Geoff Lang0b031062016-10-13 14:30:04 -040028struct VertexAttribute;
29struct VertexAttribCurrentValueData;
Geoff Langff5b2d52016-09-07 11:32:23 -040030
31void QueryFramebufferAttachmentParameteriv(const Framebuffer *framebuffer,
32 GLenum attachment,
33 GLenum pname,
34 GLint *params);
35void QueryBufferParameteriv(const Buffer *buffer, GLenum pname, GLint *params);
Geoff Langebebe1c2016-10-14 12:01:31 -040036void QueryBufferParameteri64v(const Buffer *buffer, GLenum pname, GLint64 *params);
Geoff Lang496c02d2016-10-20 11:38:11 -070037void QueryBufferPointerv(const Buffer *buffer, GLenum pname, void **params);
Geoff Langff5b2d52016-09-07 11:32:23 -040038void QueryProgramiv(const Program *program, GLenum pname, GLint *params);
Geoff Lang740d9022016-10-07 11:20:52 -040039void QueryRenderbufferiv(const Renderbuffer *renderbuffer, GLenum pname, GLint *params);
Geoff Langd7d0ed32016-10-07 11:33:51 -040040void QueryShaderiv(const Shader *shader, GLenum pname, GLint *params);
He Yunchao11b038b2016-11-22 21:24:04 +080041void QueryTexLevelParameterfv(const Texture *texture,
42 GLenum target,
43 GLint level,
44 GLenum pname,
45 GLfloat *params);
46void QueryTexLevelParameteriv(const Texture *texture,
47 GLenum target,
48 GLint level,
49 GLenum pname,
50 GLint *params);
Geoff Langc1984ed2016-10-07 12:41:00 -040051void QueryTexParameterfv(const Texture *texture, GLenum pname, GLfloat *params);
52void QueryTexParameteriv(const Texture *texture, GLenum pname, GLint *params);
53void QuerySamplerParameterfv(const Sampler *sampler, GLenum pname, GLfloat *params);
54void QuerySamplerParameteriv(const Sampler *sampler, GLenum pname, GLint *params);
Geoff Lang0b031062016-10-13 14:30:04 -040055void QueryVertexAttribfv(const VertexAttribute &attrib,
56 const VertexAttribCurrentValueData &currentValueData,
57 GLenum pname,
58 GLfloat *params);
59void QueryVertexAttribiv(const VertexAttribute &attrib,
60 const VertexAttribCurrentValueData &currentValueData,
61 GLenum pname,
62 GLint *params);
63void QueryVertexAttribPointerv(const VertexAttribute &attrib, GLenum pname, GLvoid **pointer);
64void QueryVertexAttribIiv(const VertexAttribute &attrib,
65 const VertexAttribCurrentValueData &currentValueData,
66 GLenum pname,
67 GLint *params);
68void QueryVertexAttribIuiv(const VertexAttribute &attrib,
69 const VertexAttribCurrentValueData &currentValueData,
70 GLenum pname,
71 GLuint *params);
Geoff Langc1984ed2016-10-07 12:41:00 -040072
Geoff Lang6899b872016-10-14 11:30:13 -040073void QueryActiveUniformBlockiv(const Program *program,
74 GLuint uniformBlockIndex,
75 GLenum pname,
76 GLint *params);
77
Geoff Lang0a9661f2016-10-20 10:59:20 -070078void QueryInternalFormativ(const TextureCaps &format, GLenum pname, GLsizei bufSize, GLint *params);
79
Geoff Langc1984ed2016-10-07 12:41:00 -040080void SetTexParameterf(Texture *texture, GLenum pname, GLfloat param);
81void SetTexParameterfv(Texture *texture, GLenum pname, const GLfloat *params);
82void SetTexParameteri(Texture *texture, GLenum pname, GLint param);
83void SetTexParameteriv(Texture *texture, GLenum pname, const GLint *params);
84
85void SetSamplerParameterf(Sampler *sampler, GLenum pname, GLfloat param);
86void SetSamplerParameterfv(Sampler *sampler, GLenum pname, const GLfloat *params);
87void SetSamplerParameteri(Sampler *sampler, GLenum pname, GLint param);
88void SetSamplerParameteriv(Sampler *sampler, GLenum pname, const GLint *params);
Geoff Lang65603eb2017-01-12 16:48:03 -050089
90} // namespace gl
91
92namespace egl
93{
94struct Config;
95
96void QueryConfigAttrib(const Config *config, EGLint attribute, EGLint *value);
97
98} // namespace egl
Geoff Langff5b2d52016-09-07 11:32:23 -040099
100#endif // LIBANGLE_QUERYUTILS_H_