13464ebd5Sriastradh/*
23464ebd5Sriastradh * Mesa 3-D graphics library
33464ebd5Sriastradh *
43464ebd5Sriastradh * Copyright (C) 2010  VMware, Inc.  All Rights Reserved.
53464ebd5Sriastradh *
63464ebd5Sriastradh * Permission is hereby granted, free of charge, to any person obtaining a
73464ebd5Sriastradh * copy of this software and associated documentation files (the "Software"),
83464ebd5Sriastradh * to deal in the Software without restriction, including without limitation
93464ebd5Sriastradh * the rights to use, copy, modify, merge, publish, distribute, sublicense,
103464ebd5Sriastradh * and/or sell copies of the Software, and to permit persons to whom the
113464ebd5Sriastradh * Software is furnished to do so, subject to the following conditions:
123464ebd5Sriastradh *
133464ebd5Sriastradh * The above copyright notice and this permission notice shall be included
143464ebd5Sriastradh * in all copies or substantial portions of the Software.
153464ebd5Sriastradh *
163464ebd5Sriastradh * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
173464ebd5Sriastradh * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
183464ebd5Sriastradh * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
19af69d88dSmrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20af69d88dSmrg * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21af69d88dSmrg * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22af69d88dSmrg * OTHER DEALINGS IN THE SOFTWARE.
233464ebd5Sriastradh */
243464ebd5Sriastradh
253464ebd5Sriastradh
263464ebd5Sriastradh#ifndef UNIFORMS_H
273464ebd5Sriastradh#define UNIFORMS_H
283464ebd5Sriastradh
2901e04c3fSmrg#include "main/glheader.h"
3001e04c3fSmrg#include "compiler/glsl_types.h"
3101e04c3fSmrg#include "compiler/glsl/ir_uniform.h"
323464ebd5Sriastradh#include "program/prog_parameter.h"
333464ebd5Sriastradh
34af69d88dSmrg#ifdef __cplusplus
35af69d88dSmrgextern "C" {
36af69d88dSmrg#endif
373464ebd5Sriastradh
383464ebd5Sriastradh
39af69d88dSmrgstruct gl_program;
40af69d88dSmrgstruct _glapi_table;
413464ebd5Sriastradh
42af69d88dSmrgvoid GLAPIENTRY
43af69d88dSmrg_mesa_Uniform1f(GLint, GLfloat);
44af69d88dSmrgvoid GLAPIENTRY
45af69d88dSmrg_mesa_Uniform2f(GLint, GLfloat, GLfloat);
46af69d88dSmrgvoid GLAPIENTRY
47af69d88dSmrg_mesa_Uniform3f(GLint, GLfloat, GLfloat, GLfloat);
48af69d88dSmrgvoid GLAPIENTRY
49af69d88dSmrg_mesa_Uniform4f(GLint, GLfloat, GLfloat, GLfloat, GLfloat);
50af69d88dSmrgvoid GLAPIENTRY
51af69d88dSmrg_mesa_Uniform1i(GLint, GLint);
52af69d88dSmrgvoid GLAPIENTRY
53af69d88dSmrg_mesa_Uniform2i(GLint, GLint, GLint);
54af69d88dSmrgvoid GLAPIENTRY
55af69d88dSmrg_mesa_Uniform3i(GLint, GLint, GLint, GLint);
56af69d88dSmrgvoid GLAPIENTRY
57af69d88dSmrg_mesa_Uniform4i(GLint, GLint, GLint, GLint, GLint);
58af69d88dSmrgvoid GLAPIENTRY
59af69d88dSmrg_mesa_Uniform1fv(GLint, GLsizei, const GLfloat *);
60af69d88dSmrgvoid GLAPIENTRY
61af69d88dSmrg_mesa_Uniform2fv(GLint, GLsizei, const GLfloat *);
62af69d88dSmrgvoid GLAPIENTRY
63af69d88dSmrg_mesa_Uniform3fv(GLint, GLsizei, const GLfloat *);
64af69d88dSmrgvoid GLAPIENTRY
65af69d88dSmrg_mesa_Uniform4fv(GLint, GLsizei, const GLfloat *);
66af69d88dSmrgvoid GLAPIENTRY
67af69d88dSmrg_mesa_Uniform1iv(GLint, GLsizei, const GLint *);
68af69d88dSmrgvoid GLAPIENTRY
69af69d88dSmrg_mesa_Uniform2iv(GLint, GLsizei, const GLint *);
70af69d88dSmrgvoid GLAPIENTRY
71af69d88dSmrg_mesa_Uniform3iv(GLint, GLsizei, const GLint *);
72af69d88dSmrgvoid GLAPIENTRY
73af69d88dSmrg_mesa_Uniform4iv(GLint, GLsizei, const GLint *);
74af69d88dSmrgvoid GLAPIENTRY
753464ebd5Sriastradh_mesa_Uniform1ui(GLint location, GLuint v0);
76af69d88dSmrgvoid GLAPIENTRY
773464ebd5Sriastradh_mesa_Uniform2ui(GLint location, GLuint v0, GLuint v1);
78af69d88dSmrgvoid GLAPIENTRY
793464ebd5Sriastradh_mesa_Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2);
80af69d88dSmrgvoid GLAPIENTRY
813464ebd5Sriastradh_mesa_Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
82af69d88dSmrgvoid GLAPIENTRY
833464ebd5Sriastradh_mesa_Uniform1uiv(GLint location, GLsizei count, const GLuint *value);
84af69d88dSmrgvoid GLAPIENTRY
853464ebd5Sriastradh_mesa_Uniform2uiv(GLint location, GLsizei count, const GLuint *value);
86af69d88dSmrgvoid GLAPIENTRY
873464ebd5Sriastradh_mesa_Uniform3uiv(GLint location, GLsizei count, const GLuint *value);
88af69d88dSmrgvoid GLAPIENTRY
893464ebd5Sriastradh_mesa_Uniform4uiv(GLint location, GLsizei count, const GLuint *value);
90af69d88dSmrgvoid GLAPIENTRY
91af69d88dSmrg_mesa_UniformMatrix2fv(GLint, GLsizei, GLboolean, const GLfloat *);
92af69d88dSmrgvoid GLAPIENTRY
93af69d88dSmrg_mesa_UniformMatrix3fv(GLint, GLsizei, GLboolean, const GLfloat *);
94af69d88dSmrgvoid GLAPIENTRY
95af69d88dSmrg_mesa_UniformMatrix4fv(GLint, GLsizei, GLboolean, const GLfloat *);
96af69d88dSmrgvoid GLAPIENTRY
973464ebd5Sriastradh_mesa_UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose,
983464ebd5Sriastradh                         const GLfloat *value);
99af69d88dSmrgvoid GLAPIENTRY
1003464ebd5Sriastradh_mesa_UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose,
1013464ebd5Sriastradh                         const GLfloat *value);
102af69d88dSmrgvoid GLAPIENTRY
1033464ebd5Sriastradh_mesa_UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose,
1043464ebd5Sriastradh                         const GLfloat *value);
105af69d88dSmrgvoid GLAPIENTRY
1063464ebd5Sriastradh_mesa_UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose,
1073464ebd5Sriastradh                         const GLfloat *value);
108af69d88dSmrgvoid GLAPIENTRY
1093464ebd5Sriastradh_mesa_UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose,
1103464ebd5Sriastradh                         const GLfloat *value);
111af69d88dSmrgvoid GLAPIENTRY
1123464ebd5Sriastradh_mesa_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose,
1133464ebd5Sriastradh                         const GLfloat *value);
1143464ebd5Sriastradh
11501e04c3fSmrgvoid GLAPIENTRY
11601e04c3fSmrg_mesa_UniformHandleui64ARB(GLint location, GLuint64 value);
11701e04c3fSmrgvoid GLAPIENTRY
11801e04c3fSmrg_mesa_UniformHandleui64vARB(GLint location, GLsizei count,
11901e04c3fSmrg                            const GLuint64 *value);
12001e04c3fSmrgvoid GLAPIENTRY
12101e04c3fSmrg_mesa_ProgramUniformHandleui64ARB(GLuint program, GLint location,
12201e04c3fSmrg                                  GLuint64 value);
12301e04c3fSmrgvoid GLAPIENTRY
12401e04c3fSmrg_mesa_ProgramUniformHandleui64vARB(GLuint program, GLint location,
12501e04c3fSmrg                                   GLsizei count, const GLuint64 *values);
12601e04c3fSmrg
127af69d88dSmrgvoid GLAPIENTRY
128af69d88dSmrg_mesa_ProgramUniform1f(GLuint program, GLint, GLfloat);
129af69d88dSmrgvoid GLAPIENTRY
130af69d88dSmrg_mesa_ProgramUniform2f(GLuint program, GLint, GLfloat, GLfloat);
131af69d88dSmrgvoid GLAPIENTRY
132af69d88dSmrg_mesa_ProgramUniform3f(GLuint program, GLint, GLfloat, GLfloat, GLfloat);
133af69d88dSmrgvoid GLAPIENTRY
134af69d88dSmrg_mesa_ProgramUniform4f(GLuint program, GLint, GLfloat, GLfloat, GLfloat, GLfloat);
135af69d88dSmrgvoid GLAPIENTRY
136af69d88dSmrg_mesa_ProgramUniform1i(GLuint program, GLint, GLint);
137af69d88dSmrgvoid GLAPIENTRY
138af69d88dSmrg_mesa_ProgramUniform2i(GLuint program, GLint, GLint, GLint);
139af69d88dSmrgvoid GLAPIENTRY
140af69d88dSmrg_mesa_ProgramUniform3i(GLuint program, GLint, GLint, GLint, GLint);
141af69d88dSmrgvoid GLAPIENTRY
142af69d88dSmrg_mesa_ProgramUniform4i(GLuint program, GLint, GLint, GLint, GLint, GLint);
143af69d88dSmrgvoid GLAPIENTRY
144af69d88dSmrg_mesa_ProgramUniform1fv(GLuint program, GLint, GLsizei, const GLfloat *);
145af69d88dSmrgvoid GLAPIENTRY
146af69d88dSmrg_mesa_ProgramUniform2fv(GLuint program, GLint, GLsizei, const GLfloat *);
147af69d88dSmrgvoid GLAPIENTRY
148af69d88dSmrg_mesa_ProgramUniform3fv(GLuint program, GLint, GLsizei, const GLfloat *);
149af69d88dSmrgvoid GLAPIENTRY
150af69d88dSmrg_mesa_ProgramUniform4fv(GLuint program, GLint, GLsizei, const GLfloat *);
151af69d88dSmrgvoid GLAPIENTRY
152af69d88dSmrg_mesa_ProgramUniform1iv(GLuint program, GLint, GLsizei, const GLint *);
153af69d88dSmrgvoid GLAPIENTRY
154af69d88dSmrg_mesa_ProgramUniform2iv(GLuint program, GLint, GLsizei, const GLint *);
155af69d88dSmrgvoid GLAPIENTRY
156af69d88dSmrg_mesa_ProgramUniform3iv(GLuint program, GLint, GLsizei, const GLint *);
157af69d88dSmrgvoid GLAPIENTRY
158af69d88dSmrg_mesa_ProgramUniform4iv(GLuint program, GLint, GLsizei, const GLint *);
159af69d88dSmrgvoid GLAPIENTRY
160af69d88dSmrg_mesa_ProgramUniform1ui(GLuint program, GLint location, GLuint v0);
161af69d88dSmrgvoid GLAPIENTRY
162af69d88dSmrg_mesa_ProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1);
163af69d88dSmrgvoid GLAPIENTRY
164af69d88dSmrg_mesa_ProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1,
165af69d88dSmrg                        GLuint v2);
166af69d88dSmrgvoid GLAPIENTRY
167af69d88dSmrg_mesa_ProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1,
168af69d88dSmrg                        GLuint v2, GLuint v3);
169af69d88dSmrgvoid GLAPIENTRY
170af69d88dSmrg_mesa_ProgramUniform1uiv(GLuint program, GLint location, GLsizei count,
171af69d88dSmrg                         const GLuint *value);
172af69d88dSmrgvoid GLAPIENTRY
173af69d88dSmrg_mesa_ProgramUniform2uiv(GLuint program, GLint location, GLsizei count,
174af69d88dSmrg                         const GLuint *value);
175af69d88dSmrgvoid GLAPIENTRY
176af69d88dSmrg_mesa_ProgramUniform3uiv(GLuint program, GLint location, GLsizei count,
177af69d88dSmrg                         const GLuint *value);
178af69d88dSmrgvoid GLAPIENTRY
179af69d88dSmrg_mesa_ProgramUniform4uiv(GLuint program, GLint location, GLsizei count,
180af69d88dSmrg                         const GLuint *value);
181af69d88dSmrgvoid GLAPIENTRY
182af69d88dSmrg_mesa_ProgramUniformMatrix2fv(GLuint program, GLint, GLsizei, GLboolean,
183af69d88dSmrg                              const GLfloat *);
184af69d88dSmrgvoid GLAPIENTRY
185af69d88dSmrg_mesa_ProgramUniformMatrix3fv(GLuint program, GLint, GLsizei, GLboolean,
186af69d88dSmrg                              const GLfloat *);
187af69d88dSmrgvoid GLAPIENTRY
188af69d88dSmrg_mesa_ProgramUniformMatrix4fv(GLuint program, GLint, GLsizei, GLboolean,
189af69d88dSmrg                              const GLfloat *);
190af69d88dSmrgvoid GLAPIENTRY
191af69d88dSmrg_mesa_ProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count,
192af69d88dSmrg                                GLboolean transpose, const GLfloat *value);
193af69d88dSmrgvoid GLAPIENTRY
194af69d88dSmrg_mesa_ProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count,
195af69d88dSmrg                                GLboolean transpose, const GLfloat *value);
196af69d88dSmrgvoid GLAPIENTRY
197af69d88dSmrg_mesa_ProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count,
198af69d88dSmrg                                GLboolean transpose, const GLfloat *value);
199af69d88dSmrgvoid GLAPIENTRY
200af69d88dSmrg_mesa_ProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count,
201af69d88dSmrg                                GLboolean transpose, const GLfloat *value);
202af69d88dSmrgvoid GLAPIENTRY
203af69d88dSmrg_mesa_ProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count,
204af69d88dSmrg                                GLboolean transpose, const GLfloat *value);
205af69d88dSmrgvoid GLAPIENTRY
206af69d88dSmrg_mesa_ProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count,
207af69d88dSmrg                                GLboolean transpose, const GLfloat *value);
208af69d88dSmrg
209af69d88dSmrgvoid GLAPIENTRY
210af69d88dSmrg_mesa_GetnUniformfvARB(GLuint, GLint, GLsizei, GLfloat *);
211af69d88dSmrgvoid GLAPIENTRY
212af69d88dSmrg_mesa_GetUniformfv(GLuint, GLint, GLfloat *);
213af69d88dSmrgvoid GLAPIENTRY
214af69d88dSmrg_mesa_GetnUniformivARB(GLuint, GLint, GLsizei, GLint *);
215af69d88dSmrgvoid GLAPIENTRY
216af69d88dSmrg_mesa_GetUniformuiv(GLuint, GLint, GLuint *);
217af69d88dSmrgvoid GLAPIENTRY
218af69d88dSmrg_mesa_GetnUniformuivARB(GLuint, GLint, GLsizei, GLuint *);
219af69d88dSmrgvoid GLAPIENTRY
220af69d88dSmrg_mesa_GetUniformuiv(GLuint program, GLint location, GLuint *params);
221af69d88dSmrgvoid GLAPIENTRY
222af69d88dSmrg_mesa_GetnUniformdvARB(GLuint, GLint, GLsizei, GLdouble *);
223af69d88dSmrgvoid GLAPIENTRY
224af69d88dSmrg_mesa_GetUniformdv(GLuint, GLint, GLdouble *);
2257ec681f3SmrgGLint
2267ec681f3Smrg_mesa_GetUniformLocation_impl(GLuint, const GLcharARB *, bool glthread);
227af69d88dSmrgGLint GLAPIENTRY
228af69d88dSmrg_mesa_GetUniformLocation(GLuint, const GLcharARB *);
22901e04c3fSmrgGLint GLAPIENTRY
23001e04c3fSmrg_mesa_GetUniformLocation_no_error(GLuint, const GLcharARB *);
231af69d88dSmrgGLuint GLAPIENTRY
232af69d88dSmrg_mesa_GetUniformBlockIndex(GLuint program,
233af69d88dSmrg			   const GLchar *uniformBlockName);
234af69d88dSmrgvoid GLAPIENTRY
235af69d88dSmrg_mesa_GetUniformIndices(GLuint program,
236af69d88dSmrg			GLsizei uniformCount,
237af69d88dSmrg			const GLchar * const *uniformNames,
238af69d88dSmrg			GLuint *uniformIndices);
23901e04c3fSmrg
24001e04c3fSmrgvoid GLAPIENTRY
24101e04c3fSmrg_mesa_UniformBlockBinding_no_error(GLuint program, GLuint uniformBlockIndex,
24201e04c3fSmrg                                   GLuint uniformBlockBinding);
24301e04c3fSmrg
244af69d88dSmrgvoid GLAPIENTRY
245af69d88dSmrg_mesa_UniformBlockBinding(GLuint program,
246af69d88dSmrg			  GLuint uniformBlockIndex,
247af69d88dSmrg			  GLuint uniformBlockBinding);
24801e04c3fSmrg
24901e04c3fSmrgvoid GLAPIENTRY
25001e04c3fSmrg_mesa_ShaderStorageBlockBinding_no_error(GLuint program,
25101e04c3fSmrg                                         GLuint shaderStorageBlockIndex,
25201e04c3fSmrg                                         GLuint shaderStorageBlockBinding);
25301e04c3fSmrg
25401e04c3fSmrgvoid GLAPIENTRY
25501e04c3fSmrg_mesa_ShaderStorageBlockBinding(GLuint program,
25601e04c3fSmrg                                GLuint shaderStorageBlockIndex,
25701e04c3fSmrg                                GLuint shaderStorageBlockBinding);
258af69d88dSmrgvoid GLAPIENTRY
259af69d88dSmrg_mesa_GetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex,
260af69d88dSmrg                                     GLenum pname, GLint *params);
261af69d88dSmrgvoid GLAPIENTRY
262af69d88dSmrg_mesa_GetActiveUniformBlockiv(GLuint program,
263af69d88dSmrg			      GLuint uniformBlockIndex,
264af69d88dSmrg			      GLenum pname,
265af69d88dSmrg			      GLint *params);
266af69d88dSmrgvoid GLAPIENTRY
267af69d88dSmrg_mesa_GetActiveUniformBlockName(GLuint program,
268af69d88dSmrg				GLuint uniformBlockIndex,
269af69d88dSmrg				GLsizei bufSize,
270af69d88dSmrg				GLsizei *length,
271af69d88dSmrg				GLchar *uniformBlockName);
272af69d88dSmrgvoid GLAPIENTRY
273af69d88dSmrg_mesa_GetActiveUniformName(GLuint program, GLuint uniformIndex,
274af69d88dSmrg			   GLsizei bufSize, GLsizei *length,
275af69d88dSmrg			   GLchar *uniformName);
2767ec681f3Smrgvoid
2777ec681f3Smrg_mesa_GetActiveUniform_impl(GLuint, GLuint, GLsizei, GLsizei *,
2787ec681f3Smrg                            GLint *, GLenum *, GLcharARB *,
2797ec681f3Smrg                            bool glthread);
280af69d88dSmrgvoid GLAPIENTRY
281af69d88dSmrg_mesa_GetActiveUniform(GLuint, GLuint, GLsizei, GLsizei *,
282af69d88dSmrg                       GLint *, GLenum *, GLcharARB *);
283af69d88dSmrgvoid GLAPIENTRY
284af69d88dSmrg_mesa_GetActiveUniformsiv(GLuint program,
285af69d88dSmrg			  GLsizei uniformCount,
286af69d88dSmrg			  const GLuint *uniformIndices,
287af69d88dSmrg			  GLenum pname,
288af69d88dSmrg			  GLint *params);
289af69d88dSmrgvoid GLAPIENTRY
290af69d88dSmrg_mesa_GetUniformiv(GLuint, GLint, GLint *);
291af69d88dSmrg
29201e04c3fSmrgvoid GLAPIENTRY
29301e04c3fSmrg_mesa_Uniform1d(GLint, GLdouble);
29401e04c3fSmrgvoid GLAPIENTRY
29501e04c3fSmrg_mesa_Uniform2d(GLint, GLdouble, GLdouble);
29601e04c3fSmrgvoid GLAPIENTRY
29701e04c3fSmrg_mesa_Uniform3d(GLint, GLdouble, GLdouble, GLdouble);
29801e04c3fSmrgvoid GLAPIENTRY
29901e04c3fSmrg_mesa_Uniform4d(GLint, GLdouble, GLdouble, GLdouble, GLdouble);
30001e04c3fSmrg
30101e04c3fSmrgvoid GLAPIENTRY
30201e04c3fSmrg_mesa_Uniform1dv(GLint, GLsizei, const GLdouble *);
30301e04c3fSmrgvoid GLAPIENTRY
30401e04c3fSmrg_mesa_Uniform2dv(GLint, GLsizei, const GLdouble *);
30501e04c3fSmrgvoid GLAPIENTRY
30601e04c3fSmrg_mesa_Uniform3dv(GLint, GLsizei, const GLdouble *);
30701e04c3fSmrgvoid GLAPIENTRY
30801e04c3fSmrg_mesa_Uniform4dv(GLint, GLsizei, const GLdouble *);
30901e04c3fSmrg
31001e04c3fSmrgvoid GLAPIENTRY
31101e04c3fSmrg_mesa_GetUniformi64vARB(GLuint, GLint, GLint64 *);
31201e04c3fSmrgvoid GLAPIENTRY
31301e04c3fSmrg_mesa_GetUniformui64vARB(GLuint, GLint, GLuint64 *);
31401e04c3fSmrg
31501e04c3fSmrgvoid GLAPIENTRY
31601e04c3fSmrg_mesa_GetnUniformi64vARB(GLuint, GLint, GLsizei, GLint64 *);
31701e04c3fSmrgvoid GLAPIENTRY
31801e04c3fSmrg_mesa_GetnUniformui64vARB(GLuint, GLint, GLsizei, GLuint64 *);
31901e04c3fSmrg
32001e04c3fSmrgvoid GLAPIENTRY
32101e04c3fSmrg_mesa_UniformMatrix2dv(GLint, GLsizei, GLboolean, const GLdouble *);
32201e04c3fSmrgvoid GLAPIENTRY
32301e04c3fSmrg_mesa_UniformMatrix3dv(GLint, GLsizei, GLboolean, const GLdouble *);
32401e04c3fSmrgvoid GLAPIENTRY
32501e04c3fSmrg_mesa_UniformMatrix4dv(GLint, GLsizei, GLboolean, const GLdouble *);
32601e04c3fSmrgvoid GLAPIENTRY
32701e04c3fSmrg_mesa_UniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose,
32801e04c3fSmrg                         const GLdouble *value);
32901e04c3fSmrgvoid GLAPIENTRY
33001e04c3fSmrg_mesa_UniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose,
33101e04c3fSmrg                         const GLdouble *value);
33201e04c3fSmrgvoid GLAPIENTRY
33301e04c3fSmrg_mesa_UniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose,
33401e04c3fSmrg                         const GLdouble *value);
33501e04c3fSmrgvoid GLAPIENTRY
33601e04c3fSmrg_mesa_UniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose,
33701e04c3fSmrg                         const GLdouble *value);
33801e04c3fSmrgvoid GLAPIENTRY
33901e04c3fSmrg_mesa_UniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose,
34001e04c3fSmrg                         const GLdouble *value);
34101e04c3fSmrgvoid GLAPIENTRY
34201e04c3fSmrg_mesa_UniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose,
34301e04c3fSmrg                         const GLdouble *value);
34401e04c3fSmrg
34501e04c3fSmrgvoid GLAPIENTRY
34601e04c3fSmrg_mesa_ProgramUniform1d(GLuint program, GLint, GLdouble);
34701e04c3fSmrgvoid GLAPIENTRY
34801e04c3fSmrg_mesa_ProgramUniform2d(GLuint program, GLint, GLdouble, GLdouble);
34901e04c3fSmrgvoid GLAPIENTRY
35001e04c3fSmrg_mesa_ProgramUniform3d(GLuint program, GLint, GLdouble, GLdouble, GLdouble);
35101e04c3fSmrgvoid GLAPIENTRY
35201e04c3fSmrg_mesa_ProgramUniform4d(GLuint program, GLint, GLdouble, GLdouble, GLdouble, GLdouble);
35301e04c3fSmrg
35401e04c3fSmrgvoid GLAPIENTRY
35501e04c3fSmrg_mesa_ProgramUniform1dv(GLuint program, GLint, GLsizei, const GLdouble *);
35601e04c3fSmrgvoid GLAPIENTRY
35701e04c3fSmrg_mesa_ProgramUniform2dv(GLuint program, GLint, GLsizei, const GLdouble *);
35801e04c3fSmrgvoid GLAPIENTRY
35901e04c3fSmrg_mesa_ProgramUniform3dv(GLuint program, GLint, GLsizei, const GLdouble *);
36001e04c3fSmrgvoid GLAPIENTRY
36101e04c3fSmrg_mesa_ProgramUniform4dv(GLuint program, GLint, GLsizei, const GLdouble *);
36201e04c3fSmrg
36301e04c3fSmrgvoid GLAPIENTRY
36401e04c3fSmrg_mesa_ProgramUniformMatrix2dv(GLuint program, GLint, GLsizei, GLboolean,
36501e04c3fSmrg                              const GLdouble *);
36601e04c3fSmrgvoid GLAPIENTRY
36701e04c3fSmrg_mesa_ProgramUniformMatrix3dv(GLuint program, GLint, GLsizei, GLboolean,
36801e04c3fSmrg                              const GLdouble *);
36901e04c3fSmrgvoid GLAPIENTRY
37001e04c3fSmrg_mesa_ProgramUniformMatrix4dv(GLuint program, GLint, GLsizei, GLboolean,
37101e04c3fSmrg                              const GLdouble *);
37201e04c3fSmrgvoid GLAPIENTRY
37301e04c3fSmrg_mesa_ProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count,
37401e04c3fSmrg                                GLboolean transpose, const GLdouble *value);
37501e04c3fSmrgvoid GLAPIENTRY
37601e04c3fSmrg_mesa_ProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count,
37701e04c3fSmrg                                GLboolean transpose, const GLdouble *value);
37801e04c3fSmrgvoid GLAPIENTRY
37901e04c3fSmrg_mesa_ProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count,
38001e04c3fSmrg                                GLboolean transpose, const GLdouble *value);
38101e04c3fSmrgvoid GLAPIENTRY
38201e04c3fSmrg_mesa_ProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count,
38301e04c3fSmrg                                GLboolean transpose, const GLdouble *value);
38401e04c3fSmrgvoid GLAPIENTRY
38501e04c3fSmrg_mesa_ProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count,
38601e04c3fSmrg                                GLboolean transpose, const GLdouble *value);
38701e04c3fSmrgvoid GLAPIENTRY
38801e04c3fSmrg_mesa_ProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count,
38901e04c3fSmrg                                GLboolean transpose, const GLdouble *value);
39001e04c3fSmrg
39101e04c3fSmrgvoid GLAPIENTRY
39201e04c3fSmrg_mesa_Uniform1i64ARB(GLint, GLint64);
39301e04c3fSmrgvoid GLAPIENTRY
39401e04c3fSmrg_mesa_Uniform2i64ARB(GLint, GLint64, GLint64);
39501e04c3fSmrgvoid GLAPIENTRY
39601e04c3fSmrg_mesa_Uniform3i64ARB(GLint, GLint64, GLint64, GLint64);
39701e04c3fSmrgvoid GLAPIENTRY
39801e04c3fSmrg_mesa_Uniform4i64ARB(GLint, GLint64, GLint64, GLint64, GLint64);
39901e04c3fSmrg
40001e04c3fSmrgvoid GLAPIENTRY
40101e04c3fSmrg_mesa_Uniform1i64vARB(GLint, GLsizei, const GLint64 *);
40201e04c3fSmrgvoid GLAPIENTRY
40301e04c3fSmrg_mesa_Uniform2i64vARB(GLint, GLsizei, const GLint64 *);
40401e04c3fSmrgvoid GLAPIENTRY
40501e04c3fSmrg_mesa_Uniform3i64vARB(GLint, GLsizei, const GLint64 *);
40601e04c3fSmrgvoid GLAPIENTRY
40701e04c3fSmrg_mesa_Uniform4i64vARB(GLint, GLsizei, const GLint64 *);
40801e04c3fSmrg
40901e04c3fSmrgvoid GLAPIENTRY
41001e04c3fSmrg_mesa_Uniform1ui64ARB(GLint, GLuint64);
41101e04c3fSmrgvoid GLAPIENTRY
41201e04c3fSmrg_mesa_Uniform2ui64ARB(GLint, GLuint64, GLuint64);
41301e04c3fSmrgvoid GLAPIENTRY
41401e04c3fSmrg_mesa_Uniform3ui64ARB(GLint, GLuint64, GLuint64, GLuint64);
41501e04c3fSmrgvoid GLAPIENTRY
41601e04c3fSmrg_mesa_Uniform4ui64ARB(GLint, GLuint64, GLuint64, GLuint64, GLuint64);
41701e04c3fSmrg
41801e04c3fSmrgvoid GLAPIENTRY
41901e04c3fSmrg_mesa_Uniform1ui64vARB(GLint, GLsizei, const GLuint64 *);
42001e04c3fSmrgvoid GLAPIENTRY
42101e04c3fSmrg_mesa_Uniform2ui64vARB(GLint, GLsizei, const GLuint64 *);
42201e04c3fSmrgvoid GLAPIENTRY
42301e04c3fSmrg_mesa_Uniform3ui64vARB(GLint, GLsizei, const GLuint64 *);
42401e04c3fSmrgvoid GLAPIENTRY
42501e04c3fSmrg_mesa_Uniform4ui64vARB(GLint, GLsizei, const GLuint64 *);
42601e04c3fSmrg
42701e04c3fSmrgvoid GLAPIENTRY
42801e04c3fSmrg_mesa_ProgramUniform1i64ARB(GLuint, GLint, GLint64);
42901e04c3fSmrgvoid GLAPIENTRY
43001e04c3fSmrg_mesa_ProgramUniform2i64ARB(GLuint, GLint, GLint64, GLint64);
43101e04c3fSmrgvoid GLAPIENTRY
43201e04c3fSmrg_mesa_ProgramUniform3i64ARB(GLuint, GLint, GLint64, GLint64, GLint64);
43301e04c3fSmrgvoid GLAPIENTRY
43401e04c3fSmrg_mesa_ProgramUniform4i64ARB(GLuint, GLint, GLint64, GLint64, GLint64, GLint64);
435af69d88dSmrg
43601e04c3fSmrgvoid GLAPIENTRY
43701e04c3fSmrg_mesa_ProgramUniform1i64vARB(GLuint, GLint, GLsizei, const GLint64 *);
43801e04c3fSmrgvoid GLAPIENTRY
43901e04c3fSmrg_mesa_ProgramUniform2i64vARB(GLuint, GLint, GLsizei, const GLint64 *);
44001e04c3fSmrgvoid GLAPIENTRY
44101e04c3fSmrg_mesa_ProgramUniform3i64vARB(GLuint, GLint, GLsizei, const GLint64 *);
44201e04c3fSmrgvoid GLAPIENTRY
44301e04c3fSmrg_mesa_ProgramUniform4i64vARB(GLuint, GLint, GLsizei, const GLint64 *);
44401e04c3fSmrg
44501e04c3fSmrgvoid GLAPIENTRY
44601e04c3fSmrg_mesa_ProgramUniform1ui64ARB(GLuint, GLint, GLuint64);
44701e04c3fSmrgvoid GLAPIENTRY
44801e04c3fSmrg_mesa_ProgramUniform2ui64ARB(GLuint, GLint, GLuint64, GLuint64);
44901e04c3fSmrgvoid GLAPIENTRY
45001e04c3fSmrg_mesa_ProgramUniform3ui64ARB(GLuint, GLint, GLuint64, GLuint64, GLuint64);
45101e04c3fSmrgvoid GLAPIENTRY
45201e04c3fSmrg_mesa_ProgramUniform4ui64ARB(GLuint, GLint, GLuint64, GLuint64, GLuint64, GLuint64);
45301e04c3fSmrg
45401e04c3fSmrgvoid GLAPIENTRY
45501e04c3fSmrg_mesa_ProgramUniform1ui64vARB(GLuint, GLint, GLsizei, const GLuint64 *);
45601e04c3fSmrgvoid GLAPIENTRY
45701e04c3fSmrg_mesa_ProgramUniform2ui64vARB(GLuint, GLint, GLsizei, const GLuint64 *);
45801e04c3fSmrgvoid GLAPIENTRY
45901e04c3fSmrg_mesa_ProgramUniform3ui64vARB(GLuint, GLint, GLsizei, const GLuint64 *);
46001e04c3fSmrgvoid GLAPIENTRY
46101e04c3fSmrg_mesa_ProgramUniform4ui64vARB(GLuint, GLint, GLsizei, const GLuint64 *);
4623464ebd5Sriastradh
4633464ebd5Sriastradhvoid
46401e04c3fSmrg_mesa_uniform(GLint location, GLsizei count, const GLvoid *values,
46501e04c3fSmrg              struct gl_context *, struct gl_shader_program *,
46601e04c3fSmrg              enum glsl_base_type basicType, unsigned src_components);
4673464ebd5Sriastradh
4683464ebd5Sriastradhvoid
46901e04c3fSmrg_mesa_uniform_matrix(GLint location, GLsizei count,
47001e04c3fSmrg                     GLboolean transpose, const void *values,
47101e04c3fSmrg                     struct gl_context *, struct gl_shader_program *,
47201e04c3fSmrg                     GLuint cols, GLuint rows, enum glsl_base_type basicType);
47301e04c3fSmrg
47401e04c3fSmrgvoid
47501e04c3fSmrg_mesa_uniform_handle(GLint location, GLsizei count, const GLvoid *values,
47601e04c3fSmrg                     struct gl_context *, struct gl_shader_program *);
4773464ebd5Sriastradh
478af69d88dSmrgvoid
479af69d88dSmrg_mesa_get_uniform(struct gl_context *ctx, GLuint program, GLint location,
480af69d88dSmrg		  GLsizei bufSize, enum glsl_base_type returnType,
481af69d88dSmrg		  GLvoid *paramsOut);
482af69d88dSmrg
483af69d88dSmrgextern void
484af69d88dSmrg_mesa_uniform_attach_driver_storage(struct gl_uniform_storage *,
485af69d88dSmrg				    unsigned element_stride,
486af69d88dSmrg				    unsigned vector_stride,
487af69d88dSmrg				    enum gl_uniform_driver_format format,
488af69d88dSmrg				    void *data);
489af69d88dSmrg
4903464ebd5Sriastradhextern void
491af69d88dSmrg_mesa_uniform_detach_all_driver_storage(struct gl_uniform_storage *uni);
4923464ebd5Sriastradh
493af69d88dSmrgextern void
494af69d88dSmrg_mesa_propagate_uniforms_to_driver_storage(struct gl_uniform_storage *uni,
495af69d88dSmrg					   unsigned array_index,
496af69d88dSmrg					   unsigned count);
4973464ebd5Sriastradh
4983464ebd5Sriastradhextern void
499af69d88dSmrg_mesa_update_shader_textures_used(struct gl_shader_program *shProg,
500af69d88dSmrg				  struct gl_program *prog);
501af69d88dSmrg
502af69d88dSmrgextern bool
503af69d88dSmrg_mesa_sampler_uniforms_are_valid(const struct gl_shader_program *shProg,
504af69d88dSmrg				 char *errMsg, size_t errMsgLength);
505af69d88dSmrgextern bool
506af69d88dSmrg_mesa_sampler_uniforms_pipeline_are_valid(struct gl_pipeline_object *);
507af69d88dSmrg
508af69d88dSmrgextern void
50901e04c3fSmrg_mesa_flush_vertices_for_uniforms(struct gl_context *ctx,
51001e04c3fSmrg                                  const struct gl_uniform_storage *uni);
5113464ebd5Sriastradh
5123464ebd5Sriastradhstruct gl_builtin_uniform_element {
5133464ebd5Sriastradh   const char *field;
51401e04c3fSmrg   gl_state_index16 tokens[STATE_LENGTH];
5153464ebd5Sriastradh   int swizzle;
5163464ebd5Sriastradh};
5173464ebd5Sriastradh
5183464ebd5Sriastradhstruct gl_builtin_uniform_desc {
5193464ebd5Sriastradh   const char *name;
520af69d88dSmrg   const struct gl_builtin_uniform_element *elements;
5213464ebd5Sriastradh   unsigned int num_elements;
5223464ebd5Sriastradh};
5233464ebd5Sriastradh
524af69d88dSmrg#ifdef __cplusplus
525af69d88dSmrg}
526af69d88dSmrg#endif
527af69d88dSmrg
5283464ebd5Sriastradh
5293464ebd5Sriastradh#endif /* UNIFORMS_H */
530