| // |
| // Copyright (c) 2016 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| |
| // queryutils.h: Utilities for querying values from GL objects |
| |
| #ifndef LIBANGLE_QUERYUTILS_H_ |
| #define LIBANGLE_QUERYUTILS_H_ |
| |
| #include "angle_gl.h" |
| #include "common/angleutils.h" |
| |
| #include <EGL/egl.h> |
| |
| namespace gl |
| { |
| class Buffer; |
| class Context; |
| class Error; |
| class Sync; |
| class Framebuffer; |
| class Program; |
| class Renderbuffer; |
| class Sampler; |
| class Shader; |
| class Texture; |
| struct TextureCaps; |
| struct UniformBlock; |
| struct VertexAttribute; |
| class VertexBinding; |
| struct VertexAttribCurrentValueData; |
| |
| void QueryFramebufferAttachmentParameteriv(const Framebuffer *framebuffer, |
| GLenum attachment, |
| GLenum pname, |
| GLint *params); |
| void QueryBufferParameteriv(const Buffer *buffer, GLenum pname, GLint *params); |
| void QueryBufferParameteri64v(const Buffer *buffer, GLenum pname, GLint64 *params); |
| void QueryBufferPointerv(const Buffer *buffer, GLenum pname, void **params); |
| void QueryProgramiv(const Context *context, const Program *program, GLenum pname, GLint *params); |
| void QueryRenderbufferiv(const Context *context, |
| const Renderbuffer *renderbuffer, |
| GLenum pname, |
| GLint *params); |
| void QueryShaderiv(const Context *context, Shader *shader, GLenum pname, GLint *params); |
| void QueryTexLevelParameterfv(const Texture *texture, |
| GLenum target, |
| GLint level, |
| GLenum pname, |
| GLfloat *params); |
| void QueryTexLevelParameteriv(const Texture *texture, |
| GLenum target, |
| GLint level, |
| GLenum pname, |
| GLint *params); |
| void QueryTexParameterfv(const Texture *texture, GLenum pname, GLfloat *params); |
| void QueryTexParameteriv(const Texture *texture, GLenum pname, GLint *params); |
| void QuerySamplerParameterfv(const Sampler *sampler, GLenum pname, GLfloat *params); |
| void QuerySamplerParameteriv(const Sampler *sampler, GLenum pname, GLint *params); |
| |
| // Warning: you should ensure binding really matches attrib.bindingIndex before using the following |
| // functions. |
| void QueryVertexAttribfv(const VertexAttribute &attrib, |
| const VertexBinding &binding, |
| const VertexAttribCurrentValueData ¤tValueData, |
| GLenum pname, |
| GLfloat *params); |
| |
| void QueryVertexAttribiv(const VertexAttribute &attrib, |
| const VertexBinding &binding, |
| const VertexAttribCurrentValueData ¤tValueData, |
| GLenum pname, |
| GLint *params); |
| |
| void QueryVertexAttribPointerv(const VertexAttribute &attrib, GLenum pname, void **pointer); |
| |
| void QueryVertexAttribIiv(const VertexAttribute &attrib, |
| const VertexBinding &binding, |
| const VertexAttribCurrentValueData ¤tValueData, |
| GLenum pname, |
| GLint *params); |
| |
| void QueryVertexAttribIuiv(const VertexAttribute &attrib, |
| const VertexBinding &binding, |
| const VertexAttribCurrentValueData ¤tValueData, |
| GLenum pname, |
| GLuint *params); |
| |
| void QueryActiveUniformBlockiv(const Program *program, |
| GLuint uniformBlockIndex, |
| GLenum pname, |
| GLint *params); |
| |
| void QueryInternalFormativ(const TextureCaps &format, GLenum pname, GLsizei bufSize, GLint *params); |
| |
| void QueryFramebufferParameteriv(const Framebuffer *framebuffer, GLenum pname, GLint *params); |
| |
| Error QuerySynciv(const Sync *sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); |
| |
| void SetTexParameterf(Context *context, Texture *texture, GLenum pname, GLfloat param); |
| void SetTexParameterfv(Context *context, Texture *texture, GLenum pname, const GLfloat *params); |
| void SetTexParameteri(Context *context, Texture *texture, GLenum pname, GLint param); |
| void SetTexParameteriv(Context *context, Texture *texture, GLenum pname, const GLint *params); |
| |
| void SetSamplerParameterf(Sampler *sampler, GLenum pname, GLfloat param); |
| void SetSamplerParameterfv(Sampler *sampler, GLenum pname, const GLfloat *params); |
| void SetSamplerParameteri(Sampler *sampler, GLenum pname, GLint param); |
| void SetSamplerParameteriv(Sampler *sampler, GLenum pname, const GLint *params); |
| |
| void SetFramebufferParameteri(Framebuffer *framebuffer, GLenum pname, GLint param); |
| |
| void SetProgramParameteri(Program *program, GLenum pname, GLint value); |
| |
| GLint GetUniformResourceProperty(const Program *program, GLuint index, const GLenum prop); |
| |
| GLuint QueryProgramResourceIndex(const Program *program, |
| GLenum programInterface, |
| const GLchar *name); |
| |
| void QueryProgramResourceName(const Program *program, |
| GLenum programInterface, |
| GLuint index, |
| GLsizei bufSize, |
| GLsizei *length, |
| GLchar *name); |
| |
| GLint QueryProgramResourceLocation(const Program *program, |
| GLenum programInterface, |
| const GLchar *name); |
| void QueryProgramResourceiv(const Program *program, |
| GLenum programInterface, |
| GLuint index, |
| GLsizei propCount, |
| const GLenum *props, |
| GLsizei bufSize, |
| GLsizei *length, |
| GLint *params); |
| |
| void QueryProgramInterfaceiv(const Program *program, |
| GLenum programInterface, |
| GLenum pname, |
| GLint *params); |
| |
| } // namespace gl |
| |
| namespace egl |
| { |
| struct Config; |
| class Surface; |
| |
| void QueryConfigAttrib(const Config *config, EGLint attribute, EGLint *value); |
| |
| void QueryContextAttrib(const gl::Context *context, EGLint attribute, EGLint *value); |
| |
| void QuerySurfaceAttrib(const Surface *surface, EGLint attribute, EGLint *value); |
| void SetSurfaceAttrib(Surface *surface, EGLint attribute, EGLint value); |
| |
| } // namespace egl |
| |
| #endif // LIBANGLE_QUERYUTILS_H_ |