blob: c6c1838fc9201c9cfb1869d9128356dd033d5d45 [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
15namespace gl
16{
17class Buffer;
18class Framebuffer;
19class Program;
Geoff Lang740d9022016-10-07 11:20:52 -040020class Renderbuffer;
Geoff Langc1984ed2016-10-07 12:41:00 -040021class Sampler;
Geoff Langd7d0ed32016-10-07 11:33:51 -040022class Shader;
Geoff Langc1984ed2016-10-07 12:41:00 -040023class Texture;
Geoff Lang0a9661f2016-10-20 10:59:20 -070024struct TextureCaps;
Geoff Lang6899b872016-10-14 11:30:13 -040025struct UniformBlock;
Geoff Lang0b031062016-10-13 14:30:04 -040026struct VertexAttribute;
27struct VertexAttribCurrentValueData;
Geoff Langff5b2d52016-09-07 11:32:23 -040028
29void QueryFramebufferAttachmentParameteriv(const Framebuffer *framebuffer,
30 GLenum attachment,
31 GLenum pname,
32 GLint *params);
33void QueryBufferParameteriv(const Buffer *buffer, GLenum pname, GLint *params);
Geoff Langebebe1c2016-10-14 12:01:31 -040034void QueryBufferParameteri64v(const Buffer *buffer, GLenum pname, GLint64 *params);
Geoff Lang496c02d2016-10-20 11:38:11 -070035void QueryBufferPointerv(const Buffer *buffer, GLenum pname, void **params);
Geoff Langff5b2d52016-09-07 11:32:23 -040036void QueryProgramiv(const Program *program, GLenum pname, GLint *params);
Geoff Lang740d9022016-10-07 11:20:52 -040037void QueryRenderbufferiv(const Renderbuffer *renderbuffer, GLenum pname, GLint *params);
Geoff Langd7d0ed32016-10-07 11:33:51 -040038void QueryShaderiv(const Shader *shader, GLenum pname, GLint *params);
He Yunchao11b038b2016-11-22 21:24:04 +080039void QueryTexLevelParameterfv(const Texture *texture,
40 GLenum target,
41 GLint level,
42 GLenum pname,
43 GLfloat *params);
44void QueryTexLevelParameteriv(const Texture *texture,
45 GLenum target,
46 GLint level,
47 GLenum pname,
48 GLint *params);
Geoff Langc1984ed2016-10-07 12:41:00 -040049void QueryTexParameterfv(const Texture *texture, GLenum pname, GLfloat *params);
50void QueryTexParameteriv(const Texture *texture, GLenum pname, GLint *params);
51void QuerySamplerParameterfv(const Sampler *sampler, GLenum pname, GLfloat *params);
52void QuerySamplerParameteriv(const Sampler *sampler, GLenum pname, GLint *params);
Geoff Lang0b031062016-10-13 14:30:04 -040053void QueryVertexAttribfv(const VertexAttribute &attrib,
54 const VertexAttribCurrentValueData &currentValueData,
55 GLenum pname,
56 GLfloat *params);
57void QueryVertexAttribiv(const VertexAttribute &attrib,
58 const VertexAttribCurrentValueData &currentValueData,
59 GLenum pname,
60 GLint *params);
61void QueryVertexAttribPointerv(const VertexAttribute &attrib, GLenum pname, GLvoid **pointer);
62void QueryVertexAttribIiv(const VertexAttribute &attrib,
63 const VertexAttribCurrentValueData &currentValueData,
64 GLenum pname,
65 GLint *params);
66void QueryVertexAttribIuiv(const VertexAttribute &attrib,
67 const VertexAttribCurrentValueData &currentValueData,
68 GLenum pname,
69 GLuint *params);
Geoff Langc1984ed2016-10-07 12:41:00 -040070
Geoff Lang6899b872016-10-14 11:30:13 -040071void QueryActiveUniformBlockiv(const Program *program,
72 GLuint uniformBlockIndex,
73 GLenum pname,
74 GLint *params);
75
Geoff Lang0a9661f2016-10-20 10:59:20 -070076void QueryInternalFormativ(const TextureCaps &format, GLenum pname, GLsizei bufSize, GLint *params);
77
Geoff Langc1984ed2016-10-07 12:41:00 -040078void SetTexParameterf(Texture *texture, GLenum pname, GLfloat param);
79void SetTexParameterfv(Texture *texture, GLenum pname, const GLfloat *params);
80void SetTexParameteri(Texture *texture, GLenum pname, GLint param);
81void SetTexParameteriv(Texture *texture, GLenum pname, const GLint *params);
82
83void SetSamplerParameterf(Sampler *sampler, GLenum pname, GLfloat param);
84void SetSamplerParameterfv(Sampler *sampler, GLenum pname, const GLfloat *params);
85void SetSamplerParameteri(Sampler *sampler, GLenum pname, GLint param);
86void SetSamplerParameteriv(Sampler *sampler, GLenum pname, const GLint *params);
Geoff Langff5b2d52016-09-07 11:32:23 -040087}
88
89#endif // LIBANGLE_QUERYUTILS_H_