uniforms.h revision 848b8605
1/* 2 * Mesa 3-D graphics library 3 * 4 * Copyright (C) 2010 VMware, Inc. All Rights Reserved. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the "Software"), 8 * to deal in the Software without restriction, including without limitation 9 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10 * and/or sell copies of the Software, and to permit persons to whom the 11 * Software is furnished to do so, subject to the following conditions: 12 * 13 * The above copyright notice and this permission notice shall be included 14 * in all copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 * OTHER DEALINGS IN THE SOFTWARE. 23 */ 24 25 26#ifndef UNIFORMS_H 27#define UNIFORMS_H 28 29#include "glheader.h" 30#include "program/prog_parameter.h" 31#include "../glsl/glsl_types.h" 32#include "../glsl/ir_uniform.h" 33 34#ifdef __cplusplus 35extern "C" { 36#endif 37 38 39struct gl_program; 40struct _glapi_table; 41 42void GLAPIENTRY 43_mesa_Uniform1f(GLint, GLfloat); 44void GLAPIENTRY 45_mesa_Uniform2f(GLint, GLfloat, GLfloat); 46void GLAPIENTRY 47_mesa_Uniform3f(GLint, GLfloat, GLfloat, GLfloat); 48void GLAPIENTRY 49_mesa_Uniform4f(GLint, GLfloat, GLfloat, GLfloat, GLfloat); 50void GLAPIENTRY 51_mesa_Uniform1i(GLint, GLint); 52void GLAPIENTRY 53_mesa_Uniform2i(GLint, GLint, GLint); 54void GLAPIENTRY 55_mesa_Uniform3i(GLint, GLint, GLint, GLint); 56void GLAPIENTRY 57_mesa_Uniform4i(GLint, GLint, GLint, GLint, GLint); 58void GLAPIENTRY 59_mesa_Uniform1fv(GLint, GLsizei, const GLfloat *); 60void GLAPIENTRY 61_mesa_Uniform2fv(GLint, GLsizei, const GLfloat *); 62void GLAPIENTRY 63_mesa_Uniform3fv(GLint, GLsizei, const GLfloat *); 64void GLAPIENTRY 65_mesa_Uniform4fv(GLint, GLsizei, const GLfloat *); 66void GLAPIENTRY 67_mesa_Uniform1iv(GLint, GLsizei, const GLint *); 68void GLAPIENTRY 69_mesa_Uniform2iv(GLint, GLsizei, const GLint *); 70void GLAPIENTRY 71_mesa_Uniform3iv(GLint, GLsizei, const GLint *); 72void GLAPIENTRY 73_mesa_Uniform4iv(GLint, GLsizei, const GLint *); 74void GLAPIENTRY 75_mesa_Uniform1ui(GLint location, GLuint v0); 76void GLAPIENTRY 77_mesa_Uniform2ui(GLint location, GLuint v0, GLuint v1); 78void GLAPIENTRY 79_mesa_Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); 80void GLAPIENTRY 81_mesa_Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); 82void GLAPIENTRY 83_mesa_Uniform1uiv(GLint location, GLsizei count, const GLuint *value); 84void GLAPIENTRY 85_mesa_Uniform2uiv(GLint location, GLsizei count, const GLuint *value); 86void GLAPIENTRY 87_mesa_Uniform3uiv(GLint location, GLsizei count, const GLuint *value); 88void GLAPIENTRY 89_mesa_Uniform4uiv(GLint location, GLsizei count, const GLuint *value); 90void GLAPIENTRY 91_mesa_UniformMatrix2fv(GLint, GLsizei, GLboolean, const GLfloat *); 92void GLAPIENTRY 93_mesa_UniformMatrix3fv(GLint, GLsizei, GLboolean, const GLfloat *); 94void GLAPIENTRY 95_mesa_UniformMatrix4fv(GLint, GLsizei, GLboolean, const GLfloat *); 96void GLAPIENTRY 97_mesa_UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, 98 const GLfloat *value); 99void GLAPIENTRY 100_mesa_UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, 101 const GLfloat *value); 102void GLAPIENTRY 103_mesa_UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, 104 const GLfloat *value); 105void GLAPIENTRY 106_mesa_UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, 107 const GLfloat *value); 108void GLAPIENTRY 109_mesa_UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, 110 const GLfloat *value); 111void GLAPIENTRY 112_mesa_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, 113 const GLfloat *value); 114 115void GLAPIENTRY 116_mesa_ProgramUniform1f(GLuint program, GLint, GLfloat); 117void GLAPIENTRY 118_mesa_ProgramUniform2f(GLuint program, GLint, GLfloat, GLfloat); 119void GLAPIENTRY 120_mesa_ProgramUniform3f(GLuint program, GLint, GLfloat, GLfloat, GLfloat); 121void GLAPIENTRY 122_mesa_ProgramUniform4f(GLuint program, GLint, GLfloat, GLfloat, GLfloat, GLfloat); 123void GLAPIENTRY 124_mesa_ProgramUniform1i(GLuint program, GLint, GLint); 125void GLAPIENTRY 126_mesa_ProgramUniform2i(GLuint program, GLint, GLint, GLint); 127void GLAPIENTRY 128_mesa_ProgramUniform3i(GLuint program, GLint, GLint, GLint, GLint); 129void GLAPIENTRY 130_mesa_ProgramUniform4i(GLuint program, GLint, GLint, GLint, GLint, GLint); 131void GLAPIENTRY 132_mesa_ProgramUniform1fv(GLuint program, GLint, GLsizei, const GLfloat *); 133void GLAPIENTRY 134_mesa_ProgramUniform2fv(GLuint program, GLint, GLsizei, const GLfloat *); 135void GLAPIENTRY 136_mesa_ProgramUniform3fv(GLuint program, GLint, GLsizei, const GLfloat *); 137void GLAPIENTRY 138_mesa_ProgramUniform4fv(GLuint program, GLint, GLsizei, const GLfloat *); 139void GLAPIENTRY 140_mesa_ProgramUniform1iv(GLuint program, GLint, GLsizei, const GLint *); 141void GLAPIENTRY 142_mesa_ProgramUniform2iv(GLuint program, GLint, GLsizei, const GLint *); 143void GLAPIENTRY 144_mesa_ProgramUniform3iv(GLuint program, GLint, GLsizei, const GLint *); 145void GLAPIENTRY 146_mesa_ProgramUniform4iv(GLuint program, GLint, GLsizei, const GLint *); 147void GLAPIENTRY 148_mesa_ProgramUniform1ui(GLuint program, GLint location, GLuint v0); 149void GLAPIENTRY 150_mesa_ProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); 151void GLAPIENTRY 152_mesa_ProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, 153 GLuint v2); 154void GLAPIENTRY 155_mesa_ProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, 156 GLuint v2, GLuint v3); 157void GLAPIENTRY 158_mesa_ProgramUniform1uiv(GLuint program, GLint location, GLsizei count, 159 const GLuint *value); 160void GLAPIENTRY 161_mesa_ProgramUniform2uiv(GLuint program, GLint location, GLsizei count, 162 const GLuint *value); 163void GLAPIENTRY 164_mesa_ProgramUniform3uiv(GLuint program, GLint location, GLsizei count, 165 const GLuint *value); 166void GLAPIENTRY 167_mesa_ProgramUniform4uiv(GLuint program, GLint location, GLsizei count, 168 const GLuint *value); 169void GLAPIENTRY 170_mesa_ProgramUniformMatrix2fv(GLuint program, GLint, GLsizei, GLboolean, 171 const GLfloat *); 172void GLAPIENTRY 173_mesa_ProgramUniformMatrix3fv(GLuint program, GLint, GLsizei, GLboolean, 174 const GLfloat *); 175void GLAPIENTRY 176_mesa_ProgramUniformMatrix4fv(GLuint program, GLint, GLsizei, GLboolean, 177 const GLfloat *); 178void GLAPIENTRY 179_mesa_ProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, 180 GLboolean transpose, const GLfloat *value); 181void GLAPIENTRY 182_mesa_ProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, 183 GLboolean transpose, const GLfloat *value); 184void GLAPIENTRY 185_mesa_ProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, 186 GLboolean transpose, const GLfloat *value); 187void GLAPIENTRY 188_mesa_ProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, 189 GLboolean transpose, const GLfloat *value); 190void GLAPIENTRY 191_mesa_ProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, 192 GLboolean transpose, const GLfloat *value); 193void GLAPIENTRY 194_mesa_ProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, 195 GLboolean transpose, const GLfloat *value); 196 197void GLAPIENTRY 198_mesa_GetnUniformfvARB(GLuint, GLint, GLsizei, GLfloat *); 199void GLAPIENTRY 200_mesa_GetUniformfv(GLuint, GLint, GLfloat *); 201void GLAPIENTRY 202_mesa_GetnUniformivARB(GLuint, GLint, GLsizei, GLint *); 203void GLAPIENTRY 204_mesa_GetUniformuiv(GLuint, GLint, GLuint *); 205void GLAPIENTRY 206_mesa_GetnUniformuivARB(GLuint, GLint, GLsizei, GLuint *); 207void GLAPIENTRY 208_mesa_GetUniformuiv(GLuint program, GLint location, GLuint *params); 209void GLAPIENTRY 210_mesa_GetnUniformdvARB(GLuint, GLint, GLsizei, GLdouble *); 211void GLAPIENTRY 212_mesa_GetUniformdv(GLuint, GLint, GLdouble *); 213GLint GLAPIENTRY 214_mesa_GetUniformLocation(GLuint, const GLcharARB *); 215GLuint GLAPIENTRY 216_mesa_GetUniformBlockIndex(GLuint program, 217 const GLchar *uniformBlockName); 218void GLAPIENTRY 219_mesa_GetUniformIndices(GLuint program, 220 GLsizei uniformCount, 221 const GLchar * const *uniformNames, 222 GLuint *uniformIndices); 223void GLAPIENTRY 224_mesa_UniformBlockBinding(GLuint program, 225 GLuint uniformBlockIndex, 226 GLuint uniformBlockBinding); 227void GLAPIENTRY 228_mesa_GetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, 229 GLenum pname, GLint *params); 230void GLAPIENTRY 231_mesa_GetActiveUniformBlockiv(GLuint program, 232 GLuint uniformBlockIndex, 233 GLenum pname, 234 GLint *params); 235void GLAPIENTRY 236_mesa_GetActiveUniformBlockName(GLuint program, 237 GLuint uniformBlockIndex, 238 GLsizei bufSize, 239 GLsizei *length, 240 GLchar *uniformBlockName); 241void GLAPIENTRY 242_mesa_GetActiveUniformName(GLuint program, GLuint uniformIndex, 243 GLsizei bufSize, GLsizei *length, 244 GLchar *uniformName); 245void GLAPIENTRY 246_mesa_GetActiveUniform(GLuint, GLuint, GLsizei, GLsizei *, 247 GLint *, GLenum *, GLcharARB *); 248void GLAPIENTRY 249_mesa_GetActiveUniformsiv(GLuint program, 250 GLsizei uniformCount, 251 const GLuint *uniformIndices, 252 GLenum pname, 253 GLint *params); 254void GLAPIENTRY 255_mesa_GetUniformiv(GLuint, GLint, GLint *); 256 257long 258_mesa_parse_program_resource_name(const GLchar *name, 259 const GLchar **out_base_name_end); 260 261unsigned 262_mesa_get_uniform_location(struct gl_context *ctx, struct gl_shader_program *shProg, 263 const GLchar *name, unsigned *offset); 264 265void 266_mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shader_program, 267 GLint location, GLsizei count, 268 const GLvoid *values, GLenum type); 269 270void 271_mesa_uniform_matrix(struct gl_context *ctx, struct gl_shader_program *shProg, 272 GLuint cols, GLuint rows, 273 GLint location, GLsizei count, 274 GLboolean transpose, const GLfloat *values); 275 276void 277_mesa_get_uniform(struct gl_context *ctx, GLuint program, GLint location, 278 GLsizei bufSize, enum glsl_base_type returnType, 279 GLvoid *paramsOut); 280 281extern void 282_mesa_uniform_attach_driver_storage(struct gl_uniform_storage *, 283 unsigned element_stride, 284 unsigned vector_stride, 285 enum gl_uniform_driver_format format, 286 void *data); 287 288extern void 289_mesa_uniform_detach_all_driver_storage(struct gl_uniform_storage *uni); 290 291extern void 292_mesa_propagate_uniforms_to_driver_storage(struct gl_uniform_storage *uni, 293 unsigned array_index, 294 unsigned count); 295 296extern void 297_mesa_update_shader_textures_used(struct gl_shader_program *shProg, 298 struct gl_program *prog); 299 300extern bool 301_mesa_sampler_uniforms_are_valid(const struct gl_shader_program *shProg, 302 char *errMsg, size_t errMsgLength); 303extern bool 304_mesa_sampler_uniforms_pipeline_are_valid(struct gl_pipeline_object *); 305 306extern const struct gl_program_parameter * 307get_uniform_parameter(struct gl_shader_program *shProg, GLint index); 308 309extern void 310_mesa_get_uniform_name(const struct gl_uniform_storage *uni, 311 GLsizei maxLength, GLsizei *length, 312 GLchar *nameOut); 313 314struct gl_builtin_uniform_element { 315 const char *field; 316 int tokens[STATE_LENGTH]; 317 int swizzle; 318}; 319 320struct gl_builtin_uniform_desc { 321 const char *name; 322 const struct gl_builtin_uniform_element *elements; 323 unsigned int num_elements; 324}; 325 326#ifdef __cplusplus 327} 328#endif 329 330 331#endif /* UNIFORMS_H */ 332