tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

queryutils.h (12913B)


      1 //
      2 // Copyright 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/PackedEnums.h"
     14 #include "common/angleutils.h"
     15 #include "libANGLE/Error.h"
     16 
     17 #include <EGL/egl.h>
     18 
     19 namespace gl
     20 {
     21 class Buffer;
     22 class Context;
     23 class Sync;
     24 class Framebuffer;
     25 class GLES1State;
     26 class Program;
     27 class Renderbuffer;
     28 class Sampler;
     29 class Shader;
     30 class State;
     31 class Texture;
     32 struct TextureCaps;
     33 struct UniformBlock;
     34 struct VertexAttribute;
     35 class VertexBinding;
     36 struct VertexAttribCurrentValueData;
     37 
     38 void QueryFramebufferAttachmentParameteriv(const Context *context,
     39                                           const Framebuffer *framebuffer,
     40                                           GLenum attachment,
     41                                           GLenum pname,
     42                                           GLint *params);
     43 void QueryBufferParameteriv(const Buffer *buffer, GLenum pname, GLint *params);
     44 void QueryBufferParameteri64v(const Buffer *buffer, GLenum pname, GLint64 *params);
     45 void QueryBufferPointerv(const Buffer *buffer, GLenum pname, void **params);
     46 void QueryProgramiv(Context *context, const Program *program, GLenum pname, GLint *params);
     47 void QueryRenderbufferiv(const Context *context,
     48                         const Renderbuffer *renderbuffer,
     49                         GLenum pname,
     50                         GLint *params);
     51 void QueryShaderiv(const Context *context, Shader *shader, GLenum pname, GLint *params);
     52 void QueryTexLevelParameterfv(const Texture *texture,
     53                              TextureTarget target,
     54                              GLint level,
     55                              GLenum pname,
     56                              GLfloat *params);
     57 void QueryTexLevelParameteriv(const Texture *texture,
     58                              TextureTarget target,
     59                              GLint level,
     60                              GLenum pname,
     61                              GLint *params);
     62 void QueryTexParameterfv(const Context *context,
     63                         const Texture *texture,
     64                         GLenum pname,
     65                         GLfloat *params);
     66 void QueryTexParameterxv(const Context *context,
     67                         const Texture *texture,
     68                         GLenum pname,
     69                         GLfixed *params);
     70 void QueryTexParameteriv(const Context *context,
     71                         const Texture *texture,
     72                         GLenum pname,
     73                         GLint *params);
     74 void QueryTexParameterIiv(const Context *context,
     75                          const Texture *texture,
     76                          GLenum pname,
     77                          GLint *params);
     78 void QueryTexParameterIuiv(const Context *context,
     79                           const Texture *texture,
     80                           GLenum pname,
     81                           GLuint *params);
     82 void QuerySamplerParameterfv(const Sampler *sampler, GLenum pname, GLfloat *params);
     83 void QuerySamplerParameteriv(const Sampler *sampler, GLenum pname, GLint *params);
     84 void QuerySamplerParameterIiv(const Sampler *sampler, GLenum pname, GLint *params);
     85 void QuerySamplerParameterIuiv(const Sampler *sampler, GLenum pname, GLuint *params);
     86 
     87 // Warning: you should ensure binding really matches attrib.bindingIndex before using the following
     88 // functions.
     89 void QueryVertexAttribfv(const VertexAttribute &attrib,
     90                         const VertexBinding &binding,
     91                         const VertexAttribCurrentValueData &currentValueData,
     92                         GLenum pname,
     93                         GLfloat *params);
     94 
     95 void QueryVertexAttribiv(const VertexAttribute &attrib,
     96                         const VertexBinding &binding,
     97                         const VertexAttribCurrentValueData &currentValueData,
     98                         GLenum pname,
     99                         GLint *params);
    100 
    101 void QueryVertexAttribPointerv(const VertexAttribute &attrib, GLenum pname, void **pointer);
    102 
    103 void QueryVertexAttribIiv(const VertexAttribute &attrib,
    104                          const VertexBinding &binding,
    105                          const VertexAttribCurrentValueData &currentValueData,
    106                          GLenum pname,
    107                          GLint *params);
    108 
    109 void QueryVertexAttribIuiv(const VertexAttribute &attrib,
    110                           const VertexBinding &binding,
    111                           const VertexAttribCurrentValueData &currentValueData,
    112                           GLenum pname,
    113                           GLuint *params);
    114 
    115 void QueryActiveUniformBlockiv(const Program *program,
    116                               UniformBlockIndex uniformBlockIndex,
    117                               GLenum pname,
    118                               GLint *params);
    119 
    120 void QueryInternalFormativ(const TextureCaps &format, GLenum pname, GLsizei bufSize, GLint *params);
    121 
    122 void QueryFramebufferParameteriv(const Framebuffer *framebuffer, GLenum pname, GLint *params);
    123 
    124 angle::Result QuerySynciv(const Context *context,
    125                          const Sync *sync,
    126                          GLenum pname,
    127                          GLsizei bufSize,
    128                          GLsizei *length,
    129                          GLint *values);
    130 
    131 void SetTexParameterf(Context *context, Texture *texture, GLenum pname, GLfloat param);
    132 void SetTexParameterfv(Context *context, Texture *texture, GLenum pname, const GLfloat *params);
    133 void SetTexParameteri(Context *context, Texture *texture, GLenum pname, GLint param);
    134 void SetTexParameteriv(Context *context, Texture *texture, GLenum pname, const GLint *params);
    135 void SetTexParameterIiv(Context *context, Texture *texture, GLenum pname, const GLint *params);
    136 void SetTexParameterIuiv(Context *context, Texture *texture, GLenum pname, const GLuint *params);
    137 void SetTexParameterx(Context *context, Texture *texture, GLenum pname, GLfixed param);
    138 void SetTexParameterxv(Context *context, Texture *texture, GLenum pname, const GLfixed *params);
    139 
    140 void SetSamplerParameterf(Context *context, Sampler *sampler, GLenum pname, GLfloat param);
    141 void SetSamplerParameterfv(Context *context, Sampler *sampler, GLenum pname, const GLfloat *params);
    142 void SetSamplerParameteri(Context *context, Sampler *sampler, GLenum pname, GLint param);
    143 void SetSamplerParameteriv(Context *context, Sampler *sampler, GLenum pname, const GLint *params);
    144 void SetSamplerParameterIiv(Context *context, Sampler *sampler, GLenum pname, const GLint *params);
    145 void SetSamplerParameterIuiv(Context *context,
    146                             Sampler *sampler,
    147                             GLenum pname,
    148                             const GLuint *params);
    149 
    150 void SetFramebufferParameteri(const Context *context,
    151                              Framebuffer *framebuffer,
    152                              GLenum pname,
    153                              GLint param);
    154 
    155 void SetProgramParameteri(Program *program, GLenum pname, GLint value);
    156 
    157 GLint GetUniformResourceProperty(const Program *program, GLuint index, const GLenum prop);
    158 
    159 GLuint QueryProgramResourceIndex(const Program *program,
    160                                 GLenum programInterface,
    161                                 const GLchar *name);
    162 
    163 void QueryProgramResourceName(const Context *context,
    164                              const Program *program,
    165                              GLenum programInterface,
    166                              GLuint index,
    167                              GLsizei bufSize,
    168                              GLsizei *length,
    169                              GLchar *name);
    170 
    171 GLint QueryProgramResourceLocation(const Program *program,
    172                                   GLenum programInterface,
    173                                   const GLchar *name);
    174 void QueryProgramResourceiv(const Program *program,
    175                            GLenum programInterface,
    176                            UniformBlockIndex index,
    177                            GLsizei propCount,
    178                            const GLenum *props,
    179                            GLsizei bufSize,
    180                            GLsizei *length,
    181                            GLint *params);
    182 
    183 void QueryProgramInterfaceiv(const Program *program,
    184                             GLenum programInterface,
    185                             GLenum pname,
    186                             GLint *params);
    187 
    188 angle::Result SetMemoryObjectParameteriv(const Context *context,
    189                                         MemoryObject *memoryObject,
    190                                         GLenum pname,
    191                                         const GLint *params);
    192 void QueryMemoryObjectParameteriv(const MemoryObject *memoryObject, GLenum pname, GLint *params);
    193 
    194 // GLES1 emulation
    195 
    196 ClientVertexArrayType ParamToVertexArrayType(GLenum param);
    197 
    198 void SetLightParameters(GLES1State *state,
    199                        GLenum light,
    200                        LightParameter pname,
    201                        const GLfloat *params);
    202 void GetLightParameters(const GLES1State *state,
    203                        GLenum light,
    204                        LightParameter pname,
    205                        GLfloat *params);
    206 
    207 void SetLightModelParameters(GLES1State *state, GLenum pname, const GLfloat *params);
    208 void GetLightModelParameters(const GLES1State *state, GLenum pname, GLfloat *params);
    209 bool IsLightModelTwoSided(const GLES1State *state);
    210 
    211 void SetMaterialParameters(GLES1State *state,
    212                           GLenum face,
    213                           MaterialParameter pname,
    214                           const GLfloat *params);
    215 void GetMaterialParameters(const GLES1State *state,
    216                           GLenum face,
    217                           MaterialParameter pname,
    218                           GLfloat *params);
    219 
    220 unsigned int GetLightModelParameterCount(GLenum pname);
    221 unsigned int GetLightParameterCount(LightParameter pname);
    222 unsigned int GetMaterialParameterCount(MaterialParameter pname);
    223 
    224 void SetFogParameters(GLES1State *state, GLenum pname, const GLfloat *params);
    225 void GetFogParameters(const GLES1State *state, GLenum pname, GLfloat *params);
    226 unsigned int GetFogParameterCount(GLenum pname);
    227 
    228 unsigned int GetTextureEnvParameterCount(TextureEnvParameter pname);
    229 
    230 void ConvertTextureEnvFromInt(TextureEnvParameter pname, const GLint *input, GLfloat *output);
    231 void ConvertTextureEnvFromFixed(TextureEnvParameter pname, const GLfixed *input, GLfloat *output);
    232 void ConvertTextureEnvToInt(TextureEnvParameter pname, const GLfloat *input, GLint *output);
    233 void ConvertTextureEnvToFixed(TextureEnvParameter pname, const GLfloat *input, GLfixed *output);
    234 
    235 void SetTextureEnv(unsigned int unit,
    236                   GLES1State *state,
    237                   TextureEnvTarget target,
    238                   TextureEnvParameter pname,
    239                   const GLfloat *params);
    240 void GetTextureEnv(unsigned int unit,
    241                   const GLES1State *state,
    242                   TextureEnvTarget target,
    243                   TextureEnvParameter pname,
    244                   GLfloat *params);
    245 
    246 unsigned int GetPointParameterCount(PointParameter pname);
    247 
    248 void SetPointParameter(GLES1State *state, PointParameter pname, const GLfloat *params);
    249 void GetPointParameter(const GLES1State *state, PointParameter pname, GLfloat *params);
    250 
    251 void SetPointSize(GLES1State *state, GLfloat size);
    252 void GetPointSize(const GLES1State *state, GLfloat *sizeOut);
    253 
    254 unsigned int GetTexParameterCount(GLenum pname);
    255 
    256 bool GetQueryParameterInfo(const State &glState,
    257                           GLenum pname,
    258                           GLenum *type,
    259                           unsigned int *numParams);
    260 
    261 void QueryProgramPipelineiv(const Context *context,
    262                            ProgramPipeline *programPipeline,
    263                            GLenum pname,
    264                            GLint *params);
    265 }  // namespace gl
    266 
    267 namespace egl
    268 {
    269 struct Config;
    270 class Display;
    271 class Surface;
    272 class Sync;
    273 
    274 void QueryConfigAttrib(const Config *config, EGLint attribute, EGLint *value);
    275 
    276 void QueryContextAttrib(const gl::Context *context, EGLint attribute, EGLint *value);
    277 
    278 egl::Error QuerySurfaceAttrib(const Display *display,
    279                              const gl::Context *context,
    280                              Surface *surface,
    281                              EGLint attribute,
    282                              EGLint *value);
    283 egl::Error SetSurfaceAttrib(Surface *surface, EGLint attribute, EGLint value);
    284 Error GetSyncAttrib(Display *display, Sync *sync, EGLint attribute, EGLint *value);
    285 egl::Error QuerySurfaceAttrib64KHR(const Display *display,
    286                                   const gl::Context *context,
    287                                   const Surface *surface,
    288                                   EGLint attribute,
    289                                   EGLAttribKHR *value);
    290 
    291 }  // namespace egl
    292 
    293 #endif  // LIBANGLE_QUERYUTILS_H_