diff options
Diffstat (limited to '')
-rw-r--r-- | gfx/angle/checkout/src/libANGLE/queryutils.h | 293 |
1 files changed, 293 insertions, 0 deletions
diff --git a/gfx/angle/checkout/src/libANGLE/queryutils.h b/gfx/angle/checkout/src/libANGLE/queryutils.h new file mode 100644 index 0000000000..dfb3680e8c --- /dev/null +++ b/gfx/angle/checkout/src/libANGLE/queryutils.h @@ -0,0 +1,293 @@ +// +// Copyright 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/PackedEnums.h" +#include "common/angleutils.h" +#include "libANGLE/Error.h" + +#include <EGL/egl.h> + +namespace gl +{ +class Buffer; +class Context; +class Sync; +class Framebuffer; +class GLES1State; +class Program; +class Renderbuffer; +class Sampler; +class Shader; +class State; +class Texture; +struct TextureCaps; +struct UniformBlock; +struct VertexAttribute; +class VertexBinding; +struct VertexAttribCurrentValueData; + +void QueryFramebufferAttachmentParameteriv(const Context *context, + 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(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, + TextureTarget target, + GLint level, + GLenum pname, + GLfloat *params); +void QueryTexLevelParameteriv(const Texture *texture, + TextureTarget target, + GLint level, + GLenum pname, + GLint *params); +void QueryTexParameterfv(const Context *context, + const Texture *texture, + GLenum pname, + GLfloat *params); +void QueryTexParameterxv(const Context *context, + const Texture *texture, + GLenum pname, + GLfixed *params); +void QueryTexParameteriv(const Context *context, + const Texture *texture, + GLenum pname, + GLint *params); +void QueryTexParameterIiv(const Context *context, + const Texture *texture, + GLenum pname, + GLint *params); +void QueryTexParameterIuiv(const Context *context, + const Texture *texture, + GLenum pname, + GLuint *params); +void QuerySamplerParameterfv(const Sampler *sampler, GLenum pname, GLfloat *params); +void QuerySamplerParameteriv(const Sampler *sampler, GLenum pname, GLint *params); +void QuerySamplerParameterIiv(const Sampler *sampler, GLenum pname, GLint *params); +void QuerySamplerParameterIuiv(const Sampler *sampler, GLenum pname, GLuint *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, + UniformBlockIndex 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); + +angle::Result QuerySynciv(const Context *context, + 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 SetTexParameterIiv(Context *context, Texture *texture, GLenum pname, const GLint *params); +void SetTexParameterIuiv(Context *context, Texture *texture, GLenum pname, const GLuint *params); +void SetTexParameterx(Context *context, Texture *texture, GLenum pname, GLfixed param); +void SetTexParameterxv(Context *context, Texture *texture, GLenum pname, const GLfixed *params); + +void SetSamplerParameterf(Context *context, Sampler *sampler, GLenum pname, GLfloat param); +void SetSamplerParameterfv(Context *context, Sampler *sampler, GLenum pname, const GLfloat *params); +void SetSamplerParameteri(Context *context, Sampler *sampler, GLenum pname, GLint param); +void SetSamplerParameteriv(Context *context, Sampler *sampler, GLenum pname, const GLint *params); +void SetSamplerParameterIiv(Context *context, Sampler *sampler, GLenum pname, const GLint *params); +void SetSamplerParameterIuiv(Context *context, + Sampler *sampler, + GLenum pname, + const GLuint *params); + +void SetFramebufferParameteri(const Context *context, + 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 Context *context, + 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, + UniformBlockIndex index, + GLsizei propCount, + const GLenum *props, + GLsizei bufSize, + GLsizei *length, + GLint *params); + +void QueryProgramInterfaceiv(const Program *program, + GLenum programInterface, + GLenum pname, + GLint *params); + +angle::Result SetMemoryObjectParameteriv(const Context *context, + MemoryObject *memoryObject, + GLenum pname, + const GLint *params); +void QueryMemoryObjectParameteriv(const MemoryObject *memoryObject, GLenum pname, GLint *params); + +// GLES1 emulation + +ClientVertexArrayType ParamToVertexArrayType(GLenum param); + +void SetLightParameters(GLES1State *state, + GLenum light, + LightParameter pname, + const GLfloat *params); +void GetLightParameters(const GLES1State *state, + GLenum light, + LightParameter pname, + GLfloat *params); + +void SetLightModelParameters(GLES1State *state, GLenum pname, const GLfloat *params); +void GetLightModelParameters(const GLES1State *state, GLenum pname, GLfloat *params); +bool IsLightModelTwoSided(const GLES1State *state); + +void SetMaterialParameters(GLES1State *state, + GLenum face, + MaterialParameter pname, + const GLfloat *params); +void GetMaterialParameters(const GLES1State *state, + GLenum face, + MaterialParameter pname, + GLfloat *params); + +unsigned int GetLightModelParameterCount(GLenum pname); +unsigned int GetLightParameterCount(LightParameter pname); +unsigned int GetMaterialParameterCount(MaterialParameter pname); + +void SetFogParameters(GLES1State *state, GLenum pname, const GLfloat *params); +void GetFogParameters(const GLES1State *state, GLenum pname, GLfloat *params); +unsigned int GetFogParameterCount(GLenum pname); + +unsigned int GetTextureEnvParameterCount(TextureEnvParameter pname); + +void ConvertTextureEnvFromInt(TextureEnvParameter pname, const GLint *input, GLfloat *output); +void ConvertTextureEnvFromFixed(TextureEnvParameter pname, const GLfixed *input, GLfloat *output); +void ConvertTextureEnvToInt(TextureEnvParameter pname, const GLfloat *input, GLint *output); +void ConvertTextureEnvToFixed(TextureEnvParameter pname, const GLfloat *input, GLfixed *output); + +void SetTextureEnv(unsigned int unit, + GLES1State *state, + TextureEnvTarget target, + TextureEnvParameter pname, + const GLfloat *params); +void GetTextureEnv(unsigned int unit, + const GLES1State *state, + TextureEnvTarget target, + TextureEnvParameter pname, + GLfloat *params); + +unsigned int GetPointParameterCount(PointParameter pname); + +void SetPointParameter(GLES1State *state, PointParameter pname, const GLfloat *params); +void GetPointParameter(const GLES1State *state, PointParameter pname, GLfloat *params); + +void SetPointSize(GLES1State *state, GLfloat size); +void GetPointSize(const GLES1State *state, GLfloat *sizeOut); + +unsigned int GetTexParameterCount(GLenum pname); + +bool GetQueryParameterInfo(const State &glState, + GLenum pname, + GLenum *type, + unsigned int *numParams); + +void QueryProgramPipelineiv(const Context *context, + ProgramPipeline *programPipeline, + GLenum pname, + GLint *params); +} // namespace gl + +namespace egl +{ +struct Config; +class Display; +class Surface; +class Sync; + +void QueryConfigAttrib(const Config *config, EGLint attribute, EGLint *value); + +void QueryContextAttrib(const gl::Context *context, EGLint attribute, EGLint *value); + +egl::Error QuerySurfaceAttrib(const Display *display, + const gl::Context *context, + Surface *surface, + EGLint attribute, + EGLint *value); +egl::Error SetSurfaceAttrib(Surface *surface, EGLint attribute, EGLint value); +Error GetSyncAttrib(Display *display, Sync *sync, EGLint attribute, EGLint *value); +egl::Error QuerySurfaceAttrib64KHR(const Display *display, + const gl::Context *context, + const Surface *surface, + EGLint attribute, + EGLAttribKHR *value); + +} // namespace egl + +#endif // LIBANGLE_QUERYUTILS_H_ |