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 "main/glheader.h"
30 #include "compiler/glsl_types.h"
31 #include "compiler/glsl/ir_uniform.h"
32 #include "program/prog_parameter.h"
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 
39 struct gl_program;
40 struct _glapi_table;
41 
42 void GLAPIENTRY
43 _mesa_Uniform1f(GLint, GLfloat);
44 void GLAPIENTRY
45 _mesa_Uniform2f(GLint, GLfloat, GLfloat);
46 void GLAPIENTRY
47 _mesa_Uniform3f(GLint, GLfloat, GLfloat, GLfloat);
48 void GLAPIENTRY
49 _mesa_Uniform4f(GLint, GLfloat, GLfloat, GLfloat, GLfloat);
50 void GLAPIENTRY
51 _mesa_Uniform1i(GLint, GLint);
52 void GLAPIENTRY
53 _mesa_Uniform2i(GLint, GLint, GLint);
54 void GLAPIENTRY
55 _mesa_Uniform3i(GLint, GLint, GLint, GLint);
56 void GLAPIENTRY
57 _mesa_Uniform4i(GLint, GLint, GLint, GLint, GLint);
58 void GLAPIENTRY
59 _mesa_Uniform1fv(GLint, GLsizei, const GLfloat *);
60 void GLAPIENTRY
61 _mesa_Uniform2fv(GLint, GLsizei, const GLfloat *);
62 void GLAPIENTRY
63 _mesa_Uniform3fv(GLint, GLsizei, const GLfloat *);
64 void GLAPIENTRY
65 _mesa_Uniform4fv(GLint, GLsizei, const GLfloat *);
66 void GLAPIENTRY
67 _mesa_Uniform1iv(GLint, GLsizei, const GLint *);
68 void GLAPIENTRY
69 _mesa_Uniform2iv(GLint, GLsizei, const GLint *);
70 void GLAPIENTRY
71 _mesa_Uniform3iv(GLint, GLsizei, const GLint *);
72 void GLAPIENTRY
73 _mesa_Uniform4iv(GLint, GLsizei, const GLint *);
74 void GLAPIENTRY
75 _mesa_Uniform1ui(GLint location, GLuint v0);
76 void GLAPIENTRY
77 _mesa_Uniform2ui(GLint location, GLuint v0, GLuint v1);
78 void GLAPIENTRY
79 _mesa_Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2);
80 void GLAPIENTRY
81 _mesa_Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
82 void GLAPIENTRY
83 _mesa_Uniform1uiv(GLint location, GLsizei count, const GLuint *value);
84 void GLAPIENTRY
85 _mesa_Uniform2uiv(GLint location, GLsizei count, const GLuint *value);
86 void GLAPIENTRY
87 _mesa_Uniform3uiv(GLint location, GLsizei count, const GLuint *value);
88 void GLAPIENTRY
89 _mesa_Uniform4uiv(GLint location, GLsizei count, const GLuint *value);
90 void GLAPIENTRY
91 _mesa_UniformMatrix2fv(GLint, GLsizei, GLboolean, const GLfloat *);
92 void GLAPIENTRY
93 _mesa_UniformMatrix3fv(GLint, GLsizei, GLboolean, const GLfloat *);
94 void GLAPIENTRY
95 _mesa_UniformMatrix4fv(GLint, GLsizei, GLboolean, const GLfloat *);
96 void GLAPIENTRY
97 _mesa_UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose,
98                          const GLfloat *value);
99 void GLAPIENTRY
100 _mesa_UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose,
101                          const GLfloat *value);
102 void GLAPIENTRY
103 _mesa_UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose,
104                          const GLfloat *value);
105 void GLAPIENTRY
106 _mesa_UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose,
107                          const GLfloat *value);
108 void GLAPIENTRY
109 _mesa_UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose,
110                          const GLfloat *value);
111 void GLAPIENTRY
112 _mesa_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose,
113                          const GLfloat *value);
114 
115 void GLAPIENTRY
116 _mesa_UniformHandleui64ARB(GLint location, GLuint64 value);
117 void GLAPIENTRY
118 _mesa_UniformHandleui64vARB(GLint location, GLsizei count,
119                             const GLuint64 *value);
120 void GLAPIENTRY
121 _mesa_ProgramUniformHandleui64ARB(GLuint program, GLint location,
122                                   GLuint64 value);
123 void GLAPIENTRY
124 _mesa_ProgramUniformHandleui64vARB(GLuint program, GLint location,
125                                    GLsizei count, const GLuint64 *values);
126 
127 void GLAPIENTRY
128 _mesa_ProgramUniform1f(GLuint program, GLint, GLfloat);
129 void GLAPIENTRY
130 _mesa_ProgramUniform2f(GLuint program, GLint, GLfloat, GLfloat);
131 void GLAPIENTRY
132 _mesa_ProgramUniform3f(GLuint program, GLint, GLfloat, GLfloat, GLfloat);
133 void GLAPIENTRY
134 _mesa_ProgramUniform4f(GLuint program, GLint, GLfloat, GLfloat, GLfloat, GLfloat);
135 void GLAPIENTRY
136 _mesa_ProgramUniform1i(GLuint program, GLint, GLint);
137 void GLAPIENTRY
138 _mesa_ProgramUniform2i(GLuint program, GLint, GLint, GLint);
139 void GLAPIENTRY
140 _mesa_ProgramUniform3i(GLuint program, GLint, GLint, GLint, GLint);
141 void GLAPIENTRY
142 _mesa_ProgramUniform4i(GLuint program, GLint, GLint, GLint, GLint, GLint);
143 void GLAPIENTRY
144 _mesa_ProgramUniform1fv(GLuint program, GLint, GLsizei, const GLfloat *);
145 void GLAPIENTRY
146 _mesa_ProgramUniform2fv(GLuint program, GLint, GLsizei, const GLfloat *);
147 void GLAPIENTRY
148 _mesa_ProgramUniform3fv(GLuint program, GLint, GLsizei, const GLfloat *);
149 void GLAPIENTRY
150 _mesa_ProgramUniform4fv(GLuint program, GLint, GLsizei, const GLfloat *);
151 void GLAPIENTRY
152 _mesa_ProgramUniform1iv(GLuint program, GLint, GLsizei, const GLint *);
153 void GLAPIENTRY
154 _mesa_ProgramUniform2iv(GLuint program, GLint, GLsizei, const GLint *);
155 void GLAPIENTRY
156 _mesa_ProgramUniform3iv(GLuint program, GLint, GLsizei, const GLint *);
157 void GLAPIENTRY
158 _mesa_ProgramUniform4iv(GLuint program, GLint, GLsizei, const GLint *);
159 void GLAPIENTRY
160 _mesa_ProgramUniform1ui(GLuint program, GLint location, GLuint v0);
161 void GLAPIENTRY
162 _mesa_ProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1);
163 void GLAPIENTRY
164 _mesa_ProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1,
165                         GLuint v2);
166 void GLAPIENTRY
167 _mesa_ProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1,
168                         GLuint v2, GLuint v3);
169 void GLAPIENTRY
170 _mesa_ProgramUniform1uiv(GLuint program, GLint location, GLsizei count,
171                          const GLuint *value);
172 void GLAPIENTRY
173 _mesa_ProgramUniform2uiv(GLuint program, GLint location, GLsizei count,
174                          const GLuint *value);
175 void GLAPIENTRY
176 _mesa_ProgramUniform3uiv(GLuint program, GLint location, GLsizei count,
177                          const GLuint *value);
178 void GLAPIENTRY
179 _mesa_ProgramUniform4uiv(GLuint program, GLint location, GLsizei count,
180                          const GLuint *value);
181 void GLAPIENTRY
182 _mesa_ProgramUniformMatrix2fv(GLuint program, GLint, GLsizei, GLboolean,
183                               const GLfloat *);
184 void GLAPIENTRY
185 _mesa_ProgramUniformMatrix3fv(GLuint program, GLint, GLsizei, GLboolean,
186                               const GLfloat *);
187 void GLAPIENTRY
188 _mesa_ProgramUniformMatrix4fv(GLuint program, GLint, GLsizei, GLboolean,
189                               const GLfloat *);
190 void GLAPIENTRY
191 _mesa_ProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count,
192                                 GLboolean transpose, const GLfloat *value);
193 void GLAPIENTRY
194 _mesa_ProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count,
195                                 GLboolean transpose, const GLfloat *value);
196 void GLAPIENTRY
197 _mesa_ProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count,
198                                 GLboolean transpose, const GLfloat *value);
199 void GLAPIENTRY
200 _mesa_ProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count,
201                                 GLboolean transpose, const GLfloat *value);
202 void GLAPIENTRY
203 _mesa_ProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count,
204                                 GLboolean transpose, const GLfloat *value);
205 void GLAPIENTRY
206 _mesa_ProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count,
207                                 GLboolean transpose, const GLfloat *value);
208 
209 void GLAPIENTRY
210 _mesa_GetnUniformfvARB(GLuint, GLint, GLsizei, GLfloat *);
211 void GLAPIENTRY
212 _mesa_GetUniformfv(GLuint, GLint, GLfloat *);
213 void GLAPIENTRY
214 _mesa_GetnUniformivARB(GLuint, GLint, GLsizei, GLint *);
215 void GLAPIENTRY
216 _mesa_GetUniformuiv(GLuint, GLint, GLuint *);
217 void GLAPIENTRY
218 _mesa_GetnUniformuivARB(GLuint, GLint, GLsizei, GLuint *);
219 void GLAPIENTRY
220 _mesa_GetUniformuiv(GLuint program, GLint location, GLuint *params);
221 void GLAPIENTRY
222 _mesa_GetnUniformdvARB(GLuint, GLint, GLsizei, GLdouble *);
223 void GLAPIENTRY
224 _mesa_GetUniformdv(GLuint, GLint, GLdouble *);
225 GLint
226 _mesa_GetUniformLocation_impl(GLuint, const GLcharARB *, bool glthread);
227 GLint GLAPIENTRY
228 _mesa_GetUniformLocation(GLuint, const GLcharARB *);
229 GLint GLAPIENTRY
230 _mesa_GetUniformLocation_no_error(GLuint, const GLcharARB *);
231 GLuint GLAPIENTRY
232 _mesa_GetUniformBlockIndex(GLuint program,
233 			   const GLchar *uniformBlockName);
234 void GLAPIENTRY
235 _mesa_GetUniformIndices(GLuint program,
236 			GLsizei uniformCount,
237 			const GLchar * const *uniformNames,
238 			GLuint *uniformIndices);
239 
240 void GLAPIENTRY
241 _mesa_UniformBlockBinding_no_error(GLuint program, GLuint uniformBlockIndex,
242                                    GLuint uniformBlockBinding);
243 
244 void GLAPIENTRY
245 _mesa_UniformBlockBinding(GLuint program,
246 			  GLuint uniformBlockIndex,
247 			  GLuint uniformBlockBinding);
248 
249 void GLAPIENTRY
250 _mesa_ShaderStorageBlockBinding_no_error(GLuint program,
251                                          GLuint shaderStorageBlockIndex,
252                                          GLuint shaderStorageBlockBinding);
253 
254 void GLAPIENTRY
255 _mesa_ShaderStorageBlockBinding(GLuint program,
256                                 GLuint shaderStorageBlockIndex,
257                                 GLuint shaderStorageBlockBinding);
258 void GLAPIENTRY
259 _mesa_GetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex,
260                                      GLenum pname, GLint *params);
261 void GLAPIENTRY
262 _mesa_GetActiveUniformBlockiv(GLuint program,
263 			      GLuint uniformBlockIndex,
264 			      GLenum pname,
265 			      GLint *params);
266 void GLAPIENTRY
267 _mesa_GetActiveUniformBlockName(GLuint program,
268 				GLuint uniformBlockIndex,
269 				GLsizei bufSize,
270 				GLsizei *length,
271 				GLchar *uniformBlockName);
272 void GLAPIENTRY
273 _mesa_GetActiveUniformName(GLuint program, GLuint uniformIndex,
274 			   GLsizei bufSize, GLsizei *length,
275 			   GLchar *uniformName);
276 void
277 _mesa_GetActiveUniform_impl(GLuint, GLuint, GLsizei, GLsizei *,
278                             GLint *, GLenum *, GLcharARB *,
279                             bool glthread);
280 void GLAPIENTRY
281 _mesa_GetActiveUniform(GLuint, GLuint, GLsizei, GLsizei *,
282                        GLint *, GLenum *, GLcharARB *);
283 void GLAPIENTRY
284 _mesa_GetActiveUniformsiv(GLuint program,
285 			  GLsizei uniformCount,
286 			  const GLuint *uniformIndices,
287 			  GLenum pname,
288 			  GLint *params);
289 void GLAPIENTRY
290 _mesa_GetUniformiv(GLuint, GLint, GLint *);
291 
292 void GLAPIENTRY
293 _mesa_Uniform1d(GLint, GLdouble);
294 void GLAPIENTRY
295 _mesa_Uniform2d(GLint, GLdouble, GLdouble);
296 void GLAPIENTRY
297 _mesa_Uniform3d(GLint, GLdouble, GLdouble, GLdouble);
298 void GLAPIENTRY
299 _mesa_Uniform4d(GLint, GLdouble, GLdouble, GLdouble, GLdouble);
300 
301 void GLAPIENTRY
302 _mesa_Uniform1dv(GLint, GLsizei, const GLdouble *);
303 void GLAPIENTRY
304 _mesa_Uniform2dv(GLint, GLsizei, const GLdouble *);
305 void GLAPIENTRY
306 _mesa_Uniform3dv(GLint, GLsizei, const GLdouble *);
307 void GLAPIENTRY
308 _mesa_Uniform4dv(GLint, GLsizei, const GLdouble *);
309 
310 void GLAPIENTRY
311 _mesa_GetUniformi64vARB(GLuint, GLint, GLint64 *);
312 void GLAPIENTRY
313 _mesa_GetUniformui64vARB(GLuint, GLint, GLuint64 *);
314 
315 void GLAPIENTRY
316 _mesa_GetnUniformi64vARB(GLuint, GLint, GLsizei, GLint64 *);
317 void GLAPIENTRY
318 _mesa_GetnUniformui64vARB(GLuint, GLint, GLsizei, GLuint64 *);
319 
320 void GLAPIENTRY
321 _mesa_UniformMatrix2dv(GLint, GLsizei, GLboolean, const GLdouble *);
322 void GLAPIENTRY
323 _mesa_UniformMatrix3dv(GLint, GLsizei, GLboolean, const GLdouble *);
324 void GLAPIENTRY
325 _mesa_UniformMatrix4dv(GLint, GLsizei, GLboolean, const GLdouble *);
326 void GLAPIENTRY
327 _mesa_UniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose,
328                          const GLdouble *value);
329 void GLAPIENTRY
330 _mesa_UniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose,
331                          const GLdouble *value);
332 void GLAPIENTRY
333 _mesa_UniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose,
334                          const GLdouble *value);
335 void GLAPIENTRY
336 _mesa_UniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose,
337                          const GLdouble *value);
338 void GLAPIENTRY
339 _mesa_UniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose,
340                          const GLdouble *value);
341 void GLAPIENTRY
342 _mesa_UniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose,
343                          const GLdouble *value);
344 
345 void GLAPIENTRY
346 _mesa_ProgramUniform1d(GLuint program, GLint, GLdouble);
347 void GLAPIENTRY
348 _mesa_ProgramUniform2d(GLuint program, GLint, GLdouble, GLdouble);
349 void GLAPIENTRY
350 _mesa_ProgramUniform3d(GLuint program, GLint, GLdouble, GLdouble, GLdouble);
351 void GLAPIENTRY
352 _mesa_ProgramUniform4d(GLuint program, GLint, GLdouble, GLdouble, GLdouble, GLdouble);
353 
354 void GLAPIENTRY
355 _mesa_ProgramUniform1dv(GLuint program, GLint, GLsizei, const GLdouble *);
356 void GLAPIENTRY
357 _mesa_ProgramUniform2dv(GLuint program, GLint, GLsizei, const GLdouble *);
358 void GLAPIENTRY
359 _mesa_ProgramUniform3dv(GLuint program, GLint, GLsizei, const GLdouble *);
360 void GLAPIENTRY
361 _mesa_ProgramUniform4dv(GLuint program, GLint, GLsizei, const GLdouble *);
362 
363 void GLAPIENTRY
364 _mesa_ProgramUniformMatrix2dv(GLuint program, GLint, GLsizei, GLboolean,
365                               const GLdouble *);
366 void GLAPIENTRY
367 _mesa_ProgramUniformMatrix3dv(GLuint program, GLint, GLsizei, GLboolean,
368                               const GLdouble *);
369 void GLAPIENTRY
370 _mesa_ProgramUniformMatrix4dv(GLuint program, GLint, GLsizei, GLboolean,
371                               const GLdouble *);
372 void GLAPIENTRY
373 _mesa_ProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count,
374                                 GLboolean transpose, const GLdouble *value);
375 void GLAPIENTRY
376 _mesa_ProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count,
377                                 GLboolean transpose, const GLdouble *value);
378 void GLAPIENTRY
379 _mesa_ProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count,
380                                 GLboolean transpose, const GLdouble *value);
381 void GLAPIENTRY
382 _mesa_ProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count,
383                                 GLboolean transpose, const GLdouble *value);
384 void GLAPIENTRY
385 _mesa_ProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count,
386                                 GLboolean transpose, const GLdouble *value);
387 void GLAPIENTRY
388 _mesa_ProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count,
389                                 GLboolean transpose, const GLdouble *value);
390 
391 void GLAPIENTRY
392 _mesa_Uniform1i64ARB(GLint, GLint64);
393 void GLAPIENTRY
394 _mesa_Uniform2i64ARB(GLint, GLint64, GLint64);
395 void GLAPIENTRY
396 _mesa_Uniform3i64ARB(GLint, GLint64, GLint64, GLint64);
397 void GLAPIENTRY
398 _mesa_Uniform4i64ARB(GLint, GLint64, GLint64, GLint64, GLint64);
399 
400 void GLAPIENTRY
401 _mesa_Uniform1i64vARB(GLint, GLsizei, const GLint64 *);
402 void GLAPIENTRY
403 _mesa_Uniform2i64vARB(GLint, GLsizei, const GLint64 *);
404 void GLAPIENTRY
405 _mesa_Uniform3i64vARB(GLint, GLsizei, const GLint64 *);
406 void GLAPIENTRY
407 _mesa_Uniform4i64vARB(GLint, GLsizei, const GLint64 *);
408 
409 void GLAPIENTRY
410 _mesa_Uniform1ui64ARB(GLint, GLuint64);
411 void GLAPIENTRY
412 _mesa_Uniform2ui64ARB(GLint, GLuint64, GLuint64);
413 void GLAPIENTRY
414 _mesa_Uniform3ui64ARB(GLint, GLuint64, GLuint64, GLuint64);
415 void GLAPIENTRY
416 _mesa_Uniform4ui64ARB(GLint, GLuint64, GLuint64, GLuint64, GLuint64);
417 
418 void GLAPIENTRY
419 _mesa_Uniform1ui64vARB(GLint, GLsizei, const GLuint64 *);
420 void GLAPIENTRY
421 _mesa_Uniform2ui64vARB(GLint, GLsizei, const GLuint64 *);
422 void GLAPIENTRY
423 _mesa_Uniform3ui64vARB(GLint, GLsizei, const GLuint64 *);
424 void GLAPIENTRY
425 _mesa_Uniform4ui64vARB(GLint, GLsizei, const GLuint64 *);
426 
427 void GLAPIENTRY
428 _mesa_ProgramUniform1i64ARB(GLuint, GLint, GLint64);
429 void GLAPIENTRY
430 _mesa_ProgramUniform2i64ARB(GLuint, GLint, GLint64, GLint64);
431 void GLAPIENTRY
432 _mesa_ProgramUniform3i64ARB(GLuint, GLint, GLint64, GLint64, GLint64);
433 void GLAPIENTRY
434 _mesa_ProgramUniform4i64ARB(GLuint, GLint, GLint64, GLint64, GLint64, GLint64);
435 
436 void GLAPIENTRY
437 _mesa_ProgramUniform1i64vARB(GLuint, GLint, GLsizei, const GLint64 *);
438 void GLAPIENTRY
439 _mesa_ProgramUniform2i64vARB(GLuint, GLint, GLsizei, const GLint64 *);
440 void GLAPIENTRY
441 _mesa_ProgramUniform3i64vARB(GLuint, GLint, GLsizei, const GLint64 *);
442 void GLAPIENTRY
443 _mesa_ProgramUniform4i64vARB(GLuint, GLint, GLsizei, const GLint64 *);
444 
445 void GLAPIENTRY
446 _mesa_ProgramUniform1ui64ARB(GLuint, GLint, GLuint64);
447 void GLAPIENTRY
448 _mesa_ProgramUniform2ui64ARB(GLuint, GLint, GLuint64, GLuint64);
449 void GLAPIENTRY
450 _mesa_ProgramUniform3ui64ARB(GLuint, GLint, GLuint64, GLuint64, GLuint64);
451 void GLAPIENTRY
452 _mesa_ProgramUniform4ui64ARB(GLuint, GLint, GLuint64, GLuint64, GLuint64, GLuint64);
453 
454 void GLAPIENTRY
455 _mesa_ProgramUniform1ui64vARB(GLuint, GLint, GLsizei, const GLuint64 *);
456 void GLAPIENTRY
457 _mesa_ProgramUniform2ui64vARB(GLuint, GLint, GLsizei, const GLuint64 *);
458 void GLAPIENTRY
459 _mesa_ProgramUniform3ui64vARB(GLuint, GLint, GLsizei, const GLuint64 *);
460 void GLAPIENTRY
461 _mesa_ProgramUniform4ui64vARB(GLuint, GLint, GLsizei, const GLuint64 *);
462 
463 void
464 _mesa_uniform(GLint location, GLsizei count, const GLvoid *values,
465               struct gl_context *, struct gl_shader_program *,
466               enum glsl_base_type basicType, unsigned src_components);
467 
468 void
469 _mesa_uniform_matrix(GLint location, GLsizei count,
470                      GLboolean transpose, const void *values,
471                      struct gl_context *, struct gl_shader_program *,
472                      GLuint cols, GLuint rows, enum glsl_base_type basicType);
473 
474 void
475 _mesa_uniform_handle(GLint location, GLsizei count, const GLvoid *values,
476                      struct gl_context *, struct gl_shader_program *);
477 
478 void
479 _mesa_get_uniform(struct gl_context *ctx, GLuint program, GLint location,
480 		  GLsizei bufSize, enum glsl_base_type returnType,
481 		  GLvoid *paramsOut);
482 
483 extern void
484 _mesa_uniform_attach_driver_storage(struct gl_uniform_storage *,
485 				    unsigned element_stride,
486 				    unsigned vector_stride,
487 				    enum gl_uniform_driver_format format,
488 				    void *data);
489 
490 extern void
491 _mesa_uniform_detach_all_driver_storage(struct gl_uniform_storage *uni);
492 
493 extern void
494 _mesa_propagate_uniforms_to_driver_storage(struct gl_uniform_storage *uni,
495 					   unsigned array_index,
496 					   unsigned count);
497 
498 extern void
499 _mesa_update_shader_textures_used(struct gl_shader_program *shProg,
500 				  struct gl_program *prog);
501 
502 extern bool
503 _mesa_sampler_uniforms_are_valid(const struct gl_shader_program *shProg,
504 				 char *errMsg, size_t errMsgLength);
505 extern bool
506 _mesa_sampler_uniforms_pipeline_are_valid(struct gl_pipeline_object *);
507 
508 extern void
509 _mesa_flush_vertices_for_uniforms(struct gl_context *ctx,
510                                   const struct gl_uniform_storage *uni);
511 
512 struct gl_builtin_uniform_element {
513    const char *field;
514    gl_state_index16 tokens[STATE_LENGTH];
515    int swizzle;
516 };
517 
518 struct gl_builtin_uniform_desc {
519    const char *name;
520    const struct gl_builtin_uniform_element *elements;
521    unsigned int num_elements;
522 };
523 
524 #ifdef __cplusplus
525 }
526 #endif
527 
528 
529 #endif /* UNIFORMS_H */
530