2 * Mesa 3-D graphics library
4 * Copyright (C) 2004-2008 Brian Paul All Rights Reserved.
5 * Copyright (C) 2009-2010 VMware, Inc. All Rights Reserved.
6 * Copyright © 2010 Intel Corporation
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
15 * The above copyright notice and this permission notice shall be included
16 * in all copies or substantial portions of the Software.
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
22 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
23 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24 * OTHER DEALINGS IN THE SOFTWARE.
29 * Functions related to GLSL uniform variables.
35 * 1. Check that the right error code is generated for all _mesa_error() calls.
36 * 2. Insert FLUSH_VERTICES calls in various places
39 #include "main/glheader.h"
40 #include "main/context.h"
41 #include "main/dispatch.h"
42 #include "main/shaderapi.h"
43 #include "main/shaderobj.h"
44 #include "main/uniforms.h"
45 #include "main/enums.h"
46 #include "compiler/glsl/ir_uniform.h"
47 #include "compiler/glsl_types.h"
48 #include "program/program.h"
49 #include "util/bitscan.h"
52 * Update the vertex/fragment program's TexturesUsed array.
54 * This needs to be called after glUniform(set sampler var) is called.
55 * A call to glUniform(samplerVar, value) causes a sampler to point to a
56 * particular texture unit. We know the sampler's texture target
57 * (1D/2D/3D/etc) from compile time but the sampler's texture unit is
58 * set by glUniform() calls.
60 * So, scan the program->SamplerUnits[] and program->SamplerTargets[]
61 * information to update the prog->TexturesUsed[] values.
62 * Each value of TexturesUsed[unit] is one of zero, TEXTURE_1D_INDEX,
63 * TEXTURE_2D_INDEX, TEXTURE_3D_INDEX, etc.
64 * We'll use that info for state validation before rendering.
67 update_single_shader_texture_used(struct gl_shader_program
*shProg
,
68 struct gl_program
*prog
,
69 GLuint unit
, GLuint target
)
71 gl_shader_stage prog_stage
=
72 _mesa_program_enum_to_shader_stage(prog
->Target
);
74 assert(unit
< ARRAY_SIZE(prog
->TexturesUsed
));
75 assert(target
< NUM_TEXTURE_TARGETS
);
77 /* From section 7.10 (Samplers) of the OpenGL 4.5 spec:
79 * "It is not allowed to have variables of different sampler types pointing
80 * to the same texture image unit within a program object."
82 unsigned stages_mask
= shProg
->data
->linked_stages
;
84 const int stage
= u_bit_scan(&stages_mask
);
86 /* Skip validation if we are yet to update textures used in this
89 if (prog_stage
< stage
)
92 struct gl_program
*glprog
= shProg
->_LinkedShaders
[stage
]->Program
;
93 if (glprog
->TexturesUsed
[unit
] & ~(1 << target
))
94 shProg
->SamplersValidated
= GL_FALSE
;
97 prog
->TexturesUsed
[unit
] |= (1 << target
);
101 _mesa_update_shader_textures_used(struct gl_shader_program
*shProg
,
102 struct gl_program
*prog
)
104 GLbitfield mask
= prog
->SamplersUsed
;
105 gl_shader_stage prog_stage
=
106 _mesa_program_enum_to_shader_stage(prog
->Target
);
107 MAYBE_UNUSED
struct gl_linked_shader
*shader
=
108 shProg
->_LinkedShaders
[prog_stage
];
113 memset(prog
->TexturesUsed
, 0, sizeof(prog
->TexturesUsed
));
116 s
= u_bit_scan(&mask
);
118 update_single_shader_texture_used(shProg
, prog
,
119 prog
->SamplerUnits
[s
],
120 prog
->sh
.SamplerTargets
[s
]);
123 if (unlikely(prog
->sh
.HasBoundBindlessSampler
)) {
124 /* Loop over bindless samplers bound to texture units.
126 for (s
= 0; s
< prog
->sh
.NumBindlessSamplers
; s
++) {
127 struct gl_bindless_sampler
*sampler
= &prog
->sh
.BindlessSamplers
[s
];
132 update_single_shader_texture_used(shProg
, prog
, sampler
->unit
,
139 * Connect a piece of driver storage with a part of a uniform
141 * \param uni The uniform with which the storage will be associated
142 * \param element_stride Byte-stride between array elements.
143 * \sa gl_uniform_driver_storage::element_stride.
144 * \param vector_stride Byte-stride between vectors (in a matrix).
145 * \sa gl_uniform_driver_storage::vector_stride.
146 * \param format Conversion from native format to driver format
147 * required by the driver.
148 * \param data Location to dump the data.
151 _mesa_uniform_attach_driver_storage(struct gl_uniform_storage
*uni
,
152 unsigned element_stride
,
153 unsigned vector_stride
,
154 enum gl_uniform_driver_format format
,
157 uni
->driver_storage
=
158 realloc(uni
->driver_storage
,
159 sizeof(struct gl_uniform_driver_storage
)
160 * (uni
->num_driver_storage
+ 1));
162 uni
->driver_storage
[uni
->num_driver_storage
].element_stride
= element_stride
;
163 uni
->driver_storage
[uni
->num_driver_storage
].vector_stride
= vector_stride
;
164 uni
->driver_storage
[uni
->num_driver_storage
].format
= format
;
165 uni
->driver_storage
[uni
->num_driver_storage
].data
= data
;
167 uni
->num_driver_storage
++;
171 * Sever all connections with all pieces of driver storage for all uniforms
174 * This function does \b not release any of the \c data pointers
175 * previously passed in to \c _mesa_uniform_attach_driver_stoarge.
178 _mesa_uniform_detach_all_driver_storage(struct gl_uniform_storage
*uni
)
180 free(uni
->driver_storage
);
181 uni
->driver_storage
= NULL
;
182 uni
->num_driver_storage
= 0;
186 _mesa_Uniform1f(GLint location
, GLfloat v0
)
188 GET_CURRENT_CONTEXT(ctx
);
189 _mesa_uniform(location
, 1, &v0
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_FLOAT
, 1);
193 _mesa_Uniform2f(GLint location
, GLfloat v0
, GLfloat v1
)
195 GET_CURRENT_CONTEXT(ctx
);
199 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_FLOAT
, 2);
203 _mesa_Uniform3f(GLint location
, GLfloat v0
, GLfloat v1
, GLfloat v2
)
205 GET_CURRENT_CONTEXT(ctx
);
210 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_FLOAT
, 3);
214 _mesa_Uniform4f(GLint location
, GLfloat v0
, GLfloat v1
, GLfloat v2
,
217 GET_CURRENT_CONTEXT(ctx
);
223 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_FLOAT
, 4);
227 _mesa_Uniform1i(GLint location
, GLint v0
)
229 GET_CURRENT_CONTEXT(ctx
);
230 _mesa_uniform(location
, 1, &v0
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT
, 1);
234 _mesa_Uniform2i(GLint location
, GLint v0
, GLint v1
)
236 GET_CURRENT_CONTEXT(ctx
);
240 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT
, 2);
244 _mesa_Uniform3i(GLint location
, GLint v0
, GLint v1
, GLint v2
)
246 GET_CURRENT_CONTEXT(ctx
);
251 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT
, 3);
255 _mesa_Uniform4i(GLint location
, GLint v0
, GLint v1
, GLint v2
, GLint v3
)
257 GET_CURRENT_CONTEXT(ctx
);
263 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT
, 4);
267 _mesa_Uniform1fv(GLint location
, GLsizei count
, const GLfloat
* value
)
269 GET_CURRENT_CONTEXT(ctx
);
270 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_FLOAT
, 1);
274 _mesa_Uniform2fv(GLint location
, GLsizei count
, const GLfloat
* value
)
276 GET_CURRENT_CONTEXT(ctx
);
277 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_FLOAT
, 2);
281 _mesa_Uniform3fv(GLint location
, GLsizei count
, const GLfloat
* value
)
283 GET_CURRENT_CONTEXT(ctx
);
284 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_FLOAT
, 3);
288 _mesa_Uniform4fv(GLint location
, GLsizei count
, const GLfloat
* value
)
290 GET_CURRENT_CONTEXT(ctx
);
291 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_FLOAT
, 4);
295 _mesa_Uniform1iv(GLint location
, GLsizei count
, const GLint
* value
)
297 GET_CURRENT_CONTEXT(ctx
);
298 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT
, 1);
302 _mesa_Uniform2iv(GLint location
, GLsizei count
, const GLint
* value
)
304 GET_CURRENT_CONTEXT(ctx
);
305 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT
, 2);
309 _mesa_Uniform3iv(GLint location
, GLsizei count
, const GLint
* value
)
311 GET_CURRENT_CONTEXT(ctx
);
312 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT
, 3);
316 _mesa_Uniform4iv(GLint location
, GLsizei count
, const GLint
* value
)
318 GET_CURRENT_CONTEXT(ctx
);
319 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT
, 4);
323 _mesa_UniformHandleui64ARB(GLint location
, GLuint64 value
)
325 GET_CURRENT_CONTEXT(ctx
);
326 _mesa_uniform_handle(location
, 1, &value
, ctx
, ctx
->_Shader
->ActiveProgram
);
330 _mesa_UniformHandleui64vARB(GLint location
, GLsizei count
,
331 const GLuint64
*value
)
333 GET_CURRENT_CONTEXT(ctx
);
334 _mesa_uniform_handle(location
, count
, value
, ctx
,
335 ctx
->_Shader
->ActiveProgram
);
339 /** Same as above with direct state access **/
341 _mesa_ProgramUniform1f(GLuint program
, GLint location
, GLfloat v0
)
343 GET_CURRENT_CONTEXT(ctx
);
344 struct gl_shader_program
*shProg
=
345 _mesa_lookup_shader_program_err(ctx
, program
,
346 "glProgramUniform1f");
347 _mesa_uniform(location
, 1, &v0
, ctx
, shProg
, GLSL_TYPE_FLOAT
, 1);
351 _mesa_ProgramUniform2f(GLuint program
, GLint location
, GLfloat v0
, GLfloat v1
)
353 GET_CURRENT_CONTEXT(ctx
);
355 struct gl_shader_program
*shProg
;
358 shProg
= _mesa_lookup_shader_program_err(ctx
, program
, "glProgramUniform2f");
359 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_FLOAT
, 2);
363 _mesa_ProgramUniform3f(GLuint program
, GLint location
, GLfloat v0
, GLfloat v1
,
366 GET_CURRENT_CONTEXT(ctx
);
368 struct gl_shader_program
*shProg
;
372 shProg
= _mesa_lookup_shader_program_err(ctx
, program
, "glProgramUniform3f");
373 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_FLOAT
, 3);
377 _mesa_ProgramUniform4f(GLuint program
, GLint location
, GLfloat v0
, GLfloat v1
,
378 GLfloat v2
, GLfloat v3
)
380 GET_CURRENT_CONTEXT(ctx
);
382 struct gl_shader_program
*shProg
;
387 shProg
= _mesa_lookup_shader_program_err(ctx
, program
, "glProgramUniform4f");
388 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_FLOAT
, 4);
392 _mesa_ProgramUniform1i(GLuint program
, GLint location
, GLint v0
)
394 GET_CURRENT_CONTEXT(ctx
);
395 struct gl_shader_program
*shProg
=
396 _mesa_lookup_shader_program_err(ctx
, program
,
397 "glProgramUniform1i");
398 _mesa_uniform(location
, 1, &v0
, ctx
, shProg
, GLSL_TYPE_INT
, 1);
402 _mesa_ProgramUniform2i(GLuint program
, GLint location
, GLint v0
, GLint v1
)
404 GET_CURRENT_CONTEXT(ctx
);
406 struct gl_shader_program
*shProg
;
409 shProg
= _mesa_lookup_shader_program_err(ctx
, program
, "glProgramUniform2i");
410 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_INT
, 2);
414 _mesa_ProgramUniform3i(GLuint program
, GLint location
, GLint v0
, GLint v1
,
417 GET_CURRENT_CONTEXT(ctx
);
419 struct gl_shader_program
*shProg
;
423 shProg
= _mesa_lookup_shader_program_err(ctx
, program
, "glProgramUniform3i");
424 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_INT
, 3);
428 _mesa_ProgramUniform4i(GLuint program
, GLint location
, GLint v0
, GLint v1
,
431 GET_CURRENT_CONTEXT(ctx
);
433 struct gl_shader_program
*shProg
;
438 shProg
= _mesa_lookup_shader_program_err(ctx
, program
, "glProgramUniform4i");
439 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_INT
, 4);
443 _mesa_ProgramUniform1fv(GLuint program
, GLint location
, GLsizei count
,
444 const GLfloat
* value
)
446 GET_CURRENT_CONTEXT(ctx
);
447 struct gl_shader_program
*shProg
=
448 _mesa_lookup_shader_program_err(ctx
, program
,
449 "glProgramUniform1fv");
450 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_FLOAT
, 1);
454 _mesa_ProgramUniform2fv(GLuint program
, GLint location
, GLsizei count
,
455 const GLfloat
* value
)
457 GET_CURRENT_CONTEXT(ctx
);
458 struct gl_shader_program
*shProg
=
459 _mesa_lookup_shader_program_err(ctx
, program
,
460 "glProgramUniform2fv");
461 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_FLOAT
, 2);
465 _mesa_ProgramUniform3fv(GLuint program
, GLint location
, GLsizei count
,
466 const GLfloat
* value
)
468 GET_CURRENT_CONTEXT(ctx
);
469 struct gl_shader_program
*shProg
=
470 _mesa_lookup_shader_program_err(ctx
, program
,
471 "glProgramUniform3fv");
472 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_FLOAT
, 3);
476 _mesa_ProgramUniform4fv(GLuint program
, GLint location
, GLsizei count
,
477 const GLfloat
* value
)
479 GET_CURRENT_CONTEXT(ctx
);
480 struct gl_shader_program
*shProg
=
481 _mesa_lookup_shader_program_err(ctx
, program
,
482 "glProgramUniform4fv");
483 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_FLOAT
, 4);
487 _mesa_ProgramUniform1iv(GLuint program
, GLint location
, GLsizei count
,
490 GET_CURRENT_CONTEXT(ctx
);
491 struct gl_shader_program
*shProg
=
492 _mesa_lookup_shader_program_err(ctx
, program
,
493 "glProgramUniform1iv");
494 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_INT
, 1);
498 _mesa_ProgramUniform2iv(GLuint program
, GLint location
, GLsizei count
,
501 GET_CURRENT_CONTEXT(ctx
);
502 struct gl_shader_program
*shProg
=
503 _mesa_lookup_shader_program_err(ctx
, program
,
504 "glProgramUniform2iv");
505 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_INT
, 2);
509 _mesa_ProgramUniform3iv(GLuint program
, GLint location
, GLsizei count
,
512 GET_CURRENT_CONTEXT(ctx
);
513 struct gl_shader_program
*shProg
=
514 _mesa_lookup_shader_program_err(ctx
, program
,
515 "glProgramUniform3iv");
516 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_INT
, 3);
520 _mesa_ProgramUniform4iv(GLuint program
, GLint location
, GLsizei count
,
523 GET_CURRENT_CONTEXT(ctx
);
524 struct gl_shader_program
*shProg
=
525 _mesa_lookup_shader_program_err(ctx
, program
,
526 "glProgramUniform4iv");
527 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_INT
, 4);
531 _mesa_ProgramUniformHandleui64ARB(GLuint program
, GLint location
,
534 GET_CURRENT_CONTEXT(ctx
);
535 struct gl_shader_program
*shProg
=
536 _mesa_lookup_shader_program_err(ctx
, program
,
537 "glProgramUniformHandleui64ARB");
538 _mesa_uniform_handle(location
, 1, &value
, ctx
, shProg
);
542 _mesa_ProgramUniformHandleui64vARB(GLuint program
, GLint location
,
543 GLsizei count
, const GLuint64
*values
)
545 GET_CURRENT_CONTEXT(ctx
);
546 struct gl_shader_program
*shProg
=
547 _mesa_lookup_shader_program_err(ctx
, program
,
548 "glProgramUniformHandleui64vARB");
549 _mesa_uniform_handle(location
, count
, values
, ctx
, shProg
);
553 /** OpenGL 3.0 GLuint-valued functions **/
555 _mesa_Uniform1ui(GLint location
, GLuint v0
)
557 GET_CURRENT_CONTEXT(ctx
);
558 _mesa_uniform(location
, 1, &v0
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT
, 1);
562 _mesa_Uniform2ui(GLint location
, GLuint v0
, GLuint v1
)
564 GET_CURRENT_CONTEXT(ctx
);
568 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT
, 2);
572 _mesa_Uniform3ui(GLint location
, GLuint v0
, GLuint v1
, GLuint v2
)
574 GET_CURRENT_CONTEXT(ctx
);
579 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT
, 3);
583 _mesa_Uniform4ui(GLint location
, GLuint v0
, GLuint v1
, GLuint v2
, GLuint v3
)
585 GET_CURRENT_CONTEXT(ctx
);
591 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT
, 4);
595 _mesa_Uniform1uiv(GLint location
, GLsizei count
, const GLuint
*value
)
597 GET_CURRENT_CONTEXT(ctx
);
598 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT
, 1);
602 _mesa_Uniform2uiv(GLint location
, GLsizei count
, const GLuint
*value
)
604 GET_CURRENT_CONTEXT(ctx
);
605 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT
, 2);
609 _mesa_Uniform3uiv(GLint location
, GLsizei count
, const GLuint
*value
)
611 GET_CURRENT_CONTEXT(ctx
);
612 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT
, 3);
616 _mesa_Uniform4uiv(GLint location
, GLsizei count
, const GLuint
*value
)
618 GET_CURRENT_CONTEXT(ctx
);
619 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT
, 4);
625 _mesa_UniformMatrix2fv(GLint location
, GLsizei count
, GLboolean transpose
,
626 const GLfloat
* value
)
628 GET_CURRENT_CONTEXT(ctx
);
629 _mesa_uniform_matrix(location
, count
, transpose
, value
,
630 ctx
, ctx
->_Shader
->ActiveProgram
, 2, 2, GLSL_TYPE_FLOAT
);
634 _mesa_UniformMatrix3fv(GLint location
, GLsizei count
, GLboolean transpose
,
635 const GLfloat
* value
)
637 GET_CURRENT_CONTEXT(ctx
);
638 _mesa_uniform_matrix(location
, count
, transpose
, value
,
639 ctx
, ctx
->_Shader
->ActiveProgram
, 3, 3, GLSL_TYPE_FLOAT
);
643 _mesa_UniformMatrix4fv(GLint location
, GLsizei count
, GLboolean transpose
,
644 const GLfloat
* value
)
646 GET_CURRENT_CONTEXT(ctx
);
647 _mesa_uniform_matrix(location
, count
, transpose
, value
,
648 ctx
, ctx
->_Shader
->ActiveProgram
, 4, 4, GLSL_TYPE_FLOAT
);
651 /** Same as above with direct state access **/
654 _mesa_ProgramUniform1ui(GLuint program
, GLint location
, GLuint v0
)
656 GET_CURRENT_CONTEXT(ctx
);
657 struct gl_shader_program
*shProg
=
658 _mesa_lookup_shader_program_err(ctx
, program
,
659 "glProgramUniform1ui");
660 _mesa_uniform(location
, 1, &v0
, ctx
, shProg
, GLSL_TYPE_UINT
, 1);
664 _mesa_ProgramUniform2ui(GLuint program
, GLint location
, GLuint v0
, GLuint v1
)
666 GET_CURRENT_CONTEXT(ctx
);
668 struct gl_shader_program
*shProg
;
671 shProg
= _mesa_lookup_shader_program_err(ctx
, program
,
672 "glProgramUniform2ui");
673 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_UINT
, 2);
677 _mesa_ProgramUniform3ui(GLuint program
, GLint location
, GLuint v0
, GLuint v1
,
680 GET_CURRENT_CONTEXT(ctx
);
682 struct gl_shader_program
*shProg
;
686 shProg
= _mesa_lookup_shader_program_err(ctx
, program
,
687 "glProgramUniform3ui");
688 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_UINT
, 3);
692 _mesa_ProgramUniform4ui(GLuint program
, GLint location
, GLuint v0
, GLuint v1
,
693 GLuint v2
, GLuint v3
)
695 GET_CURRENT_CONTEXT(ctx
);
697 struct gl_shader_program
*shProg
;
702 shProg
= _mesa_lookup_shader_program_err(ctx
, program
, "glProgramUniform4ui");
703 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_UINT
, 4);
707 _mesa_ProgramUniform1uiv(GLuint program
, GLint location
, GLsizei count
,
710 GET_CURRENT_CONTEXT(ctx
);
711 struct gl_shader_program
*shProg
=
712 _mesa_lookup_shader_program_err(ctx
, program
,
713 "glProgramUniform1uiv");
714 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_UINT
, 1);
718 _mesa_ProgramUniform2uiv(GLuint program
, GLint location
, GLsizei count
,
721 GET_CURRENT_CONTEXT(ctx
);
722 struct gl_shader_program
*shProg
=
723 _mesa_lookup_shader_program_err(ctx
, program
,
724 "glProgramUniform2uiv");
725 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_UINT
, 2);
729 _mesa_ProgramUniform3uiv(GLuint program
, GLint location
, GLsizei count
,
732 GET_CURRENT_CONTEXT(ctx
);
733 struct gl_shader_program
*shProg
=
734 _mesa_lookup_shader_program_err(ctx
, program
,
735 "glProgramUniform3uiv");
736 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_UINT
, 3);
740 _mesa_ProgramUniform4uiv(GLuint program
, GLint location
, GLsizei count
,
743 GET_CURRENT_CONTEXT(ctx
);
744 struct gl_shader_program
*shProg
=
745 _mesa_lookup_shader_program_err(ctx
, program
,
746 "glProgramUniform4uiv");
747 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_UINT
, 4);
753 _mesa_ProgramUniformMatrix2fv(GLuint program
, GLint location
, GLsizei count
,
754 GLboolean transpose
, const GLfloat
* value
)
756 GET_CURRENT_CONTEXT(ctx
);
757 struct gl_shader_program
*shProg
=
758 _mesa_lookup_shader_program_err(ctx
, program
,
759 "glProgramUniformMatrix2fv");
760 _mesa_uniform_matrix(location
, count
, transpose
, value
, ctx
, shProg
, 2, 2, GLSL_TYPE_FLOAT
);
764 _mesa_ProgramUniformMatrix3fv(GLuint program
, GLint location
, GLsizei count
,
765 GLboolean transpose
, const GLfloat
* value
)
767 GET_CURRENT_CONTEXT(ctx
);
768 struct gl_shader_program
*shProg
=
769 _mesa_lookup_shader_program_err(ctx
, program
,
770 "glProgramUniformMatrix3fv");
771 _mesa_uniform_matrix(location
, count
, transpose
, value
, ctx
, shProg
, 3, 3, GLSL_TYPE_FLOAT
);
775 _mesa_ProgramUniformMatrix4fv(GLuint program
, GLint location
, GLsizei count
,
776 GLboolean transpose
, const GLfloat
* value
)
778 GET_CURRENT_CONTEXT(ctx
);
779 struct gl_shader_program
*shProg
=
780 _mesa_lookup_shader_program_err(ctx
, program
,
781 "glProgramUniformMatrix4fv");
782 _mesa_uniform_matrix(location
, count
, transpose
, value
, ctx
, shProg
, 4, 4, GLSL_TYPE_FLOAT
);
787 * Non-square UniformMatrix are OpenGL 2.1
790 _mesa_UniformMatrix2x3fv(GLint location
, GLsizei count
, GLboolean transpose
,
791 const GLfloat
*value
)
793 GET_CURRENT_CONTEXT(ctx
);
794 _mesa_uniform_matrix(location
, count
, transpose
, value
,
795 ctx
, ctx
->_Shader
->ActiveProgram
, 2, 3, GLSL_TYPE_FLOAT
);
799 _mesa_UniformMatrix3x2fv(GLint location
, GLsizei count
, GLboolean transpose
,
800 const GLfloat
*value
)
802 GET_CURRENT_CONTEXT(ctx
);
803 _mesa_uniform_matrix(location
, count
, transpose
, value
,
804 ctx
, ctx
->_Shader
->ActiveProgram
, 3, 2, GLSL_TYPE_FLOAT
);
808 _mesa_UniformMatrix2x4fv(GLint location
, GLsizei count
, GLboolean transpose
,
809 const GLfloat
*value
)
811 GET_CURRENT_CONTEXT(ctx
);
812 _mesa_uniform_matrix(location
, count
, transpose
, value
,
813 ctx
, ctx
->_Shader
->ActiveProgram
, 2, 4, GLSL_TYPE_FLOAT
);
817 _mesa_UniformMatrix4x2fv(GLint location
, GLsizei count
, GLboolean transpose
,
818 const GLfloat
*value
)
820 GET_CURRENT_CONTEXT(ctx
);
821 _mesa_uniform_matrix(location
, count
, transpose
, value
,
822 ctx
, ctx
->_Shader
->ActiveProgram
, 4, 2, GLSL_TYPE_FLOAT
);
826 _mesa_UniformMatrix3x4fv(GLint location
, GLsizei count
, GLboolean transpose
,
827 const GLfloat
*value
)
829 GET_CURRENT_CONTEXT(ctx
);
830 _mesa_uniform_matrix(location
, count
, transpose
, value
,
831 ctx
, ctx
->_Shader
->ActiveProgram
, 3, 4, GLSL_TYPE_FLOAT
);
835 _mesa_UniformMatrix4x3fv(GLint location
, GLsizei count
, GLboolean transpose
,
836 const GLfloat
*value
)
838 GET_CURRENT_CONTEXT(ctx
);
839 _mesa_uniform_matrix(location
, count
, transpose
, value
,
840 ctx
, ctx
->_Shader
->ActiveProgram
, 4, 3, GLSL_TYPE_FLOAT
);
843 /** Same as above with direct state access **/
846 _mesa_ProgramUniformMatrix2x3fv(GLuint program
, GLint location
, GLsizei count
,
847 GLboolean transpose
, const GLfloat
* value
)
849 GET_CURRENT_CONTEXT(ctx
);
850 struct gl_shader_program
*shProg
=
851 _mesa_lookup_shader_program_err(ctx
, program
,
852 "glProgramUniformMatrix2x3fv");
853 _mesa_uniform_matrix(location
, count
, transpose
, value
, ctx
, shProg
, 2, 3, GLSL_TYPE_FLOAT
);
857 _mesa_ProgramUniformMatrix3x2fv(GLuint program
, GLint location
, GLsizei count
,
858 GLboolean transpose
, const GLfloat
* value
)
860 GET_CURRENT_CONTEXT(ctx
);
861 struct gl_shader_program
*shProg
=
862 _mesa_lookup_shader_program_err(ctx
, program
,
863 "glProgramUniformMatrix3x2fv");
864 _mesa_uniform_matrix(location
, count
, transpose
, value
, ctx
, shProg
, 3, 2, GLSL_TYPE_FLOAT
);
868 _mesa_ProgramUniformMatrix2x4fv(GLuint program
, GLint location
, GLsizei count
,
869 GLboolean transpose
, const GLfloat
* value
)
871 GET_CURRENT_CONTEXT(ctx
);
872 struct gl_shader_program
*shProg
=
873 _mesa_lookup_shader_program_err(ctx
, program
,
874 "glProgramUniformMatrix2x4fv");
875 _mesa_uniform_matrix(location
, count
, transpose
, value
, ctx
, shProg
, 2, 4, GLSL_TYPE_FLOAT
);
879 _mesa_ProgramUniformMatrix4x2fv(GLuint program
, GLint location
, GLsizei count
,
880 GLboolean transpose
, const GLfloat
* value
)
882 GET_CURRENT_CONTEXT(ctx
);
883 struct gl_shader_program
*shProg
=
884 _mesa_lookup_shader_program_err(ctx
, program
,
885 "glProgramUniformMatrix4x2fv");
886 _mesa_uniform_matrix(location
, count
, transpose
, value
, ctx
, shProg
, 4, 2, GLSL_TYPE_FLOAT
);
890 _mesa_ProgramUniformMatrix3x4fv(GLuint program
, GLint location
, GLsizei count
,
891 GLboolean transpose
, const GLfloat
* value
)
893 GET_CURRENT_CONTEXT(ctx
);
894 struct gl_shader_program
*shProg
=
895 _mesa_lookup_shader_program_err(ctx
, program
,
896 "glProgramUniformMatrix3x4fv");
897 _mesa_uniform_matrix(location
, count
, transpose
, value
, ctx
, shProg
, 3, 4, GLSL_TYPE_FLOAT
);
901 _mesa_ProgramUniformMatrix4x3fv(GLuint program
, GLint location
, GLsizei count
,
902 GLboolean transpose
, const GLfloat
* value
)
904 GET_CURRENT_CONTEXT(ctx
);
905 struct gl_shader_program
*shProg
=
906 _mesa_lookup_shader_program_err(ctx
, program
,
907 "glProgramUniformMatrix4x3fv");
908 _mesa_uniform_matrix(location
, count
, transpose
, value
, ctx
, shProg
, 4, 3, GLSL_TYPE_FLOAT
);
913 _mesa_GetnUniformfvARB(GLuint program
, GLint location
,
914 GLsizei bufSize
, GLfloat
*params
)
916 GET_CURRENT_CONTEXT(ctx
);
917 _mesa_get_uniform(ctx
, program
, location
, bufSize
, GLSL_TYPE_FLOAT
, params
);
921 _mesa_GetUniformfv(GLuint program
, GLint location
, GLfloat
*params
)
923 _mesa_GetnUniformfvARB(program
, location
, INT_MAX
, params
);
928 _mesa_GetnUniformivARB(GLuint program
, GLint location
,
929 GLsizei bufSize
, GLint
*params
)
931 GET_CURRENT_CONTEXT(ctx
);
932 _mesa_get_uniform(ctx
, program
, location
, bufSize
, GLSL_TYPE_INT
, params
);
936 _mesa_GetUniformiv(GLuint program
, GLint location
, GLint
*params
)
938 _mesa_GetnUniformivARB(program
, location
, INT_MAX
, params
);
944 _mesa_GetnUniformuivARB(GLuint program
, GLint location
,
945 GLsizei bufSize
, GLuint
*params
)
947 GET_CURRENT_CONTEXT(ctx
);
948 _mesa_get_uniform(ctx
, program
, location
, bufSize
, GLSL_TYPE_UINT
, params
);
952 _mesa_GetUniformuiv(GLuint program
, GLint location
, GLuint
*params
)
954 _mesa_GetnUniformuivARB(program
, location
, INT_MAX
, params
);
960 _mesa_GetnUniformdvARB(GLuint program
, GLint location
,
961 GLsizei bufSize
, GLdouble
*params
)
963 GET_CURRENT_CONTEXT(ctx
);
965 _mesa_get_uniform(ctx
, program
, location
, bufSize
, GLSL_TYPE_DOUBLE
, params
);
969 _mesa_GetUniformdv(GLuint program
, GLint location
, GLdouble
*params
)
971 _mesa_GetnUniformdvARB(program
, location
, INT_MAX
, params
);
975 _mesa_GetnUniformi64vARB(GLuint program
, GLint location
,
976 GLsizei bufSize
, GLint64
*params
)
978 GET_CURRENT_CONTEXT(ctx
);
979 _mesa_get_uniform(ctx
, program
, location
, bufSize
, GLSL_TYPE_INT64
, params
);
982 _mesa_GetUniformi64vARB(GLuint program
, GLint location
, GLint64
*params
)
984 _mesa_GetnUniformi64vARB(program
, location
, INT_MAX
, params
);
988 _mesa_GetnUniformui64vARB(GLuint program
, GLint location
,
989 GLsizei bufSize
, GLuint64
*params
)
991 GET_CURRENT_CONTEXT(ctx
);
992 _mesa_get_uniform(ctx
, program
, location
, bufSize
, GLSL_TYPE_UINT64
, params
);
996 _mesa_GetUniformui64vARB(GLuint program
, GLint location
, GLuint64
*params
)
998 _mesa_GetnUniformui64vARB(program
, location
, INT_MAX
, params
);
1003 _mesa_GetUniformLocation(GLuint programObj
, const GLcharARB
*name
)
1005 struct gl_shader_program
*shProg
;
1007 GET_CURRENT_CONTEXT(ctx
);
1009 shProg
= _mesa_lookup_shader_program_err(ctx
, programObj
,
1010 "glGetUniformLocation");
1014 /* Page 80 (page 94 of the PDF) of the OpenGL 2.1 spec says:
1016 * "If program has not been successfully linked, the error
1017 * INVALID_OPERATION is generated."
1019 if (shProg
->data
->LinkStatus
== linking_failure
) {
1020 _mesa_error(ctx
, GL_INVALID_OPERATION
,
1021 "glGetUniformLocation(program not linked)");
1025 return _mesa_program_resource_location(shProg
, GL_UNIFORM
, name
);
1029 _mesa_GetUniformBlockIndex(GLuint program
,
1030 const GLchar
*uniformBlockName
)
1032 GET_CURRENT_CONTEXT(ctx
);
1033 struct gl_shader_program
*shProg
;
1035 if (!ctx
->Extensions
.ARB_uniform_buffer_object
) {
1036 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGetUniformBlockIndex");
1037 return GL_INVALID_INDEX
;
1040 shProg
= _mesa_lookup_shader_program_err(ctx
, program
,
1041 "glGetUniformBlockIndex");
1043 return GL_INVALID_INDEX
;
1045 struct gl_program_resource
*res
=
1046 _mesa_program_resource_find_name(shProg
, GL_UNIFORM_BLOCK
,
1047 uniformBlockName
, NULL
);
1049 return GL_INVALID_INDEX
;
1051 return _mesa_program_resource_index(shProg
, res
);
1055 _mesa_GetUniformIndices(GLuint program
,
1056 GLsizei uniformCount
,
1057 const GLchar
* const *uniformNames
,
1058 GLuint
*uniformIndices
)
1060 GET_CURRENT_CONTEXT(ctx
);
1062 struct gl_shader_program
*shProg
;
1064 if (!ctx
->Extensions
.ARB_uniform_buffer_object
) {
1065 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGetUniformIndices");
1069 shProg
= _mesa_lookup_shader_program_err(ctx
, program
,
1070 "glGetUniformIndices");
1074 if (uniformCount
< 0) {
1075 _mesa_error(ctx
, GL_INVALID_VALUE
,
1076 "glGetUniformIndices(uniformCount < 0)");
1080 for (i
= 0; i
< uniformCount
; i
++) {
1081 struct gl_program_resource
*res
=
1082 _mesa_program_resource_find_name(shProg
, GL_UNIFORM
, uniformNames
[i
],
1084 uniformIndices
[i
] = _mesa_program_resource_index(shProg
, res
);
1089 _mesa_UniformBlockBinding(GLuint program
,
1090 GLuint uniformBlockIndex
,
1091 GLuint uniformBlockBinding
)
1093 GET_CURRENT_CONTEXT(ctx
);
1094 struct gl_shader_program
*shProg
;
1096 if (!ctx
->Extensions
.ARB_uniform_buffer_object
) {
1097 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glUniformBlockBinding");
1101 shProg
= _mesa_lookup_shader_program_err(ctx
, program
,
1102 "glUniformBlockBinding");
1106 if (uniformBlockIndex
>= shProg
->data
->NumUniformBlocks
) {
1107 _mesa_error(ctx
, GL_INVALID_VALUE
,
1108 "glUniformBlockBinding(block index %u >= %u)",
1109 uniformBlockIndex
, shProg
->data
->NumUniformBlocks
);
1113 if (uniformBlockBinding
>= ctx
->Const
.MaxUniformBufferBindings
) {
1114 _mesa_error(ctx
, GL_INVALID_VALUE
,
1115 "glUniformBlockBinding(block binding %u >= %u)",
1116 uniformBlockBinding
, ctx
->Const
.MaxUniformBufferBindings
);
1120 if (shProg
->data
->UniformBlocks
[uniformBlockIndex
].Binding
!=
1121 uniformBlockBinding
) {
1123 FLUSH_VERTICES(ctx
, 0);
1124 ctx
->NewDriverState
|= ctx
->DriverFlags
.NewUniformBuffer
;
1126 shProg
->data
->UniformBlocks
[uniformBlockIndex
].Binding
=
1127 uniformBlockBinding
;
1132 _mesa_ShaderStorageBlockBinding(GLuint program
,
1133 GLuint shaderStorageBlockIndex
,
1134 GLuint shaderStorageBlockBinding
)
1136 GET_CURRENT_CONTEXT(ctx
);
1137 struct gl_shader_program
*shProg
;
1139 if (!ctx
->Extensions
.ARB_shader_storage_buffer_object
) {
1140 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glShaderStorageBlockBinding");
1144 shProg
= _mesa_lookup_shader_program_err(ctx
, program
,
1145 "glShaderStorageBlockBinding");
1149 if (shaderStorageBlockIndex
>= shProg
->data
->NumShaderStorageBlocks
) {
1150 _mesa_error(ctx
, GL_INVALID_VALUE
,
1151 "glShaderStorageBlockBinding(block index %u >= %u)",
1152 shaderStorageBlockIndex
,
1153 shProg
->data
->NumShaderStorageBlocks
);
1157 if (shaderStorageBlockBinding
>= ctx
->Const
.MaxShaderStorageBufferBindings
) {
1158 _mesa_error(ctx
, GL_INVALID_VALUE
,
1159 "glShaderStorageBlockBinding(block binding %u >= %u)",
1160 shaderStorageBlockBinding
,
1161 ctx
->Const
.MaxShaderStorageBufferBindings
);
1165 if (shProg
->data
->ShaderStorageBlocks
[shaderStorageBlockIndex
].Binding
!=
1166 shaderStorageBlockBinding
) {
1168 FLUSH_VERTICES(ctx
, 0);
1169 ctx
->NewDriverState
|= ctx
->DriverFlags
.NewShaderStorageBuffer
;
1171 shProg
->data
->ShaderStorageBlocks
[shaderStorageBlockIndex
].Binding
=
1172 shaderStorageBlockBinding
;
1177 * Generic program resource property query.
1180 mesa_bufferiv(struct gl_shader_program
*shProg
, GLenum type
,
1181 GLuint index
, GLenum pname
, GLint
*params
, const char *caller
)
1183 GET_CURRENT_CONTEXT(ctx
);
1184 struct gl_program_resource
*res
=
1185 _mesa_program_resource_find_index(shProg
, type
, index
);
1188 _mesa_error(ctx
, GL_INVALID_VALUE
, "%s(bufferindex %d)", caller
, index
);
1193 case GL_UNIFORM_BLOCK_BINDING
:
1194 case GL_ATOMIC_COUNTER_BUFFER_BINDING
:
1195 _mesa_program_resource_prop(shProg
, res
, index
, GL_BUFFER_BINDING
,
1198 case GL_UNIFORM_BLOCK_DATA_SIZE
:
1199 case GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE
:
1200 _mesa_program_resource_prop(shProg
, res
, index
, GL_BUFFER_DATA_SIZE
,
1203 case GL_UNIFORM_BLOCK_NAME_LENGTH
:
1204 _mesa_program_resource_prop(shProg
, res
, index
, GL_NAME_LENGTH
,
1207 case GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS
:
1208 case GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS
:
1209 _mesa_program_resource_prop(shProg
, res
, index
, GL_NUM_ACTIVE_VARIABLES
,
1212 case GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES
:
1213 case GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES
:
1214 _mesa_program_resource_prop(shProg
, res
, index
, GL_ACTIVE_VARIABLES
,
1217 case GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER
:
1218 case GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER
:
1219 _mesa_program_resource_prop(shProg
, res
, index
,
1220 GL_REFERENCED_BY_VERTEX_SHADER
, params
,
1224 case GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER
:
1225 case GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER
:
1226 _mesa_program_resource_prop(shProg
, res
, index
,
1227 GL_REFERENCED_BY_TESS_CONTROL_SHADER
, params
,
1231 case GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER
:
1232 case GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER
:
1233 _mesa_program_resource_prop(shProg
, res
, index
,
1234 GL_REFERENCED_BY_TESS_EVALUATION_SHADER
, params
,
1238 case GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER
:
1239 case GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER
:
1240 _mesa_program_resource_prop(shProg
, res
, index
,
1241 GL_REFERENCED_BY_GEOMETRY_SHADER
, params
,
1244 case GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER
:
1245 case GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER
:
1246 _mesa_program_resource_prop(shProg
, res
, index
,
1247 GL_REFERENCED_BY_FRAGMENT_SHADER
, params
,
1250 case GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER
:
1251 case GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER
:
1252 _mesa_program_resource_prop(shProg
, res
, index
,
1253 GL_REFERENCED_BY_COMPUTE_SHADER
, params
,
1257 _mesa_error(ctx
, GL_INVALID_ENUM
,
1258 "%s(pname 0x%x (%s))", caller
, pname
,
1259 _mesa_enum_to_string(pname
));
1266 _mesa_GetActiveUniformBlockiv(GLuint program
,
1267 GLuint uniformBlockIndex
,
1271 GET_CURRENT_CONTEXT(ctx
);
1272 struct gl_shader_program
*shProg
;
1274 if (!ctx
->Extensions
.ARB_uniform_buffer_object
) {
1275 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGetActiveUniformBlockiv");
1279 shProg
= _mesa_lookup_shader_program_err(ctx
, program
,
1280 "glGetActiveUniformBlockiv");
1284 mesa_bufferiv(shProg
, GL_UNIFORM_BLOCK
, uniformBlockIndex
, pname
, params
,
1285 "glGetActiveUniformBlockiv");
1289 _mesa_GetActiveUniformBlockName(GLuint program
,
1290 GLuint uniformBlockIndex
,
1293 GLchar
*uniformBlockName
)
1295 GET_CURRENT_CONTEXT(ctx
);
1296 struct gl_shader_program
*shProg
;
1298 if (!ctx
->Extensions
.ARB_uniform_buffer_object
) {
1299 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGetActiveUniformBlockiv");
1304 _mesa_error(ctx
, GL_INVALID_VALUE
,
1305 "glGetActiveUniformBlockName(bufSize %d < 0)",
1310 shProg
= _mesa_lookup_shader_program_err(ctx
, program
,
1311 "glGetActiveUniformBlockiv");
1315 if (uniformBlockName
)
1316 _mesa_get_program_resource_name(shProg
, GL_UNIFORM_BLOCK
,
1317 uniformBlockIndex
, bufSize
, length
,
1319 "glGetActiveUniformBlockName");
1323 _mesa_GetActiveUniformName(GLuint program
, GLuint uniformIndex
,
1324 GLsizei bufSize
, GLsizei
*length
,
1325 GLchar
*uniformName
)
1327 GET_CURRENT_CONTEXT(ctx
);
1328 struct gl_shader_program
*shProg
;
1330 if (!ctx
->Extensions
.ARB_uniform_buffer_object
) {
1331 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGetActiveUniformName");
1336 _mesa_error(ctx
, GL_INVALID_VALUE
,
1337 "glGetActiveUniformName(bufSize %d < 0)",
1342 shProg
= _mesa_lookup_shader_program_err(ctx
, program
, "glGetActiveUniformName");
1347 _mesa_get_program_resource_name(shProg
, GL_UNIFORM
, uniformIndex
, bufSize
,
1348 length
, uniformName
, "glGetActiveUniformName");
1352 _mesa_GetActiveAtomicCounterBufferiv(GLuint program
, GLuint bufferIndex
,
1353 GLenum pname
, GLint
*params
)
1355 GET_CURRENT_CONTEXT(ctx
);
1356 struct gl_shader_program
*shProg
;
1358 if (!ctx
->Extensions
.ARB_shader_atomic_counters
) {
1359 _mesa_error(ctx
, GL_INVALID_OPERATION
,
1360 "glGetActiveAtomicCounterBufferiv");
1364 shProg
= _mesa_lookup_shader_program_err(ctx
, program
,
1365 "glGetActiveAtomicCounterBufferiv");
1369 mesa_bufferiv(shProg
, GL_ATOMIC_COUNTER_BUFFER
, bufferIndex
, pname
, params
,
1370 "glGetActiveAtomicCounterBufferiv");
1374 _mesa_Uniform1d(GLint location
, GLdouble v0
)
1376 GET_CURRENT_CONTEXT(ctx
);
1377 _mesa_uniform(location
, 1, &v0
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_DOUBLE
, 1);
1381 _mesa_Uniform2d(GLint location
, GLdouble v0
, GLdouble v1
)
1383 GET_CURRENT_CONTEXT(ctx
);
1387 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_DOUBLE
, 2);
1391 _mesa_Uniform3d(GLint location
, GLdouble v0
, GLdouble v1
, GLdouble v2
)
1393 GET_CURRENT_CONTEXT(ctx
);
1398 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_DOUBLE
, 3);
1402 _mesa_Uniform4d(GLint location
, GLdouble v0
, GLdouble v1
, GLdouble v2
,
1405 GET_CURRENT_CONTEXT(ctx
);
1411 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_DOUBLE
, 4);
1415 _mesa_Uniform1dv(GLint location
, GLsizei count
, const GLdouble
* value
)
1417 GET_CURRENT_CONTEXT(ctx
);
1418 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_DOUBLE
, 1);
1422 _mesa_Uniform2dv(GLint location
, GLsizei count
, const GLdouble
* value
)
1424 GET_CURRENT_CONTEXT(ctx
);
1425 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_DOUBLE
, 2);
1429 _mesa_Uniform3dv(GLint location
, GLsizei count
, const GLdouble
* value
)
1431 GET_CURRENT_CONTEXT(ctx
);
1432 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_DOUBLE
, 3);
1436 _mesa_Uniform4dv(GLint location
, GLsizei count
, const GLdouble
* value
)
1438 GET_CURRENT_CONTEXT(ctx
);
1439 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_DOUBLE
, 4);
1443 _mesa_UniformMatrix2dv(GLint location
, GLsizei count
, GLboolean transpose
,
1444 const GLdouble
* value
)
1446 GET_CURRENT_CONTEXT(ctx
);
1447 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1448 ctx
, ctx
->_Shader
->ActiveProgram
, 2, 2, GLSL_TYPE_DOUBLE
);
1452 _mesa_UniformMatrix3dv(GLint location
, GLsizei count
, GLboolean transpose
,
1453 const GLdouble
* value
)
1455 GET_CURRENT_CONTEXT(ctx
);
1456 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1457 ctx
, ctx
->_Shader
->ActiveProgram
, 3, 3, GLSL_TYPE_DOUBLE
);
1461 _mesa_UniformMatrix4dv(GLint location
, GLsizei count
, GLboolean transpose
,
1462 const GLdouble
* value
)
1464 GET_CURRENT_CONTEXT(ctx
);
1465 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1466 ctx
, ctx
->_Shader
->ActiveProgram
, 4, 4, GLSL_TYPE_DOUBLE
);
1470 _mesa_UniformMatrix2x3dv(GLint location
, GLsizei count
, GLboolean transpose
,
1471 const GLdouble
*value
)
1473 GET_CURRENT_CONTEXT(ctx
);
1474 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1475 ctx
, ctx
->_Shader
->ActiveProgram
, 2, 3, GLSL_TYPE_DOUBLE
);
1479 _mesa_UniformMatrix3x2dv(GLint location
, GLsizei count
, GLboolean transpose
,
1480 const GLdouble
*value
)
1482 GET_CURRENT_CONTEXT(ctx
);
1483 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1484 ctx
, ctx
->_Shader
->ActiveProgram
, 3, 2, GLSL_TYPE_DOUBLE
);
1488 _mesa_UniformMatrix2x4dv(GLint location
, GLsizei count
, GLboolean transpose
,
1489 const GLdouble
*value
)
1491 GET_CURRENT_CONTEXT(ctx
);
1492 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1493 ctx
, ctx
->_Shader
->ActiveProgram
, 2, 4, GLSL_TYPE_DOUBLE
);
1497 _mesa_UniformMatrix4x2dv(GLint location
, GLsizei count
, GLboolean transpose
,
1498 const GLdouble
*value
)
1500 GET_CURRENT_CONTEXT(ctx
);
1501 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1502 ctx
, ctx
->_Shader
->ActiveProgram
, 4, 2, GLSL_TYPE_DOUBLE
);
1506 _mesa_UniformMatrix3x4dv(GLint location
, GLsizei count
, GLboolean transpose
,
1507 const GLdouble
*value
)
1509 GET_CURRENT_CONTEXT(ctx
);
1510 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1511 ctx
, ctx
->_Shader
->ActiveProgram
, 3, 4, GLSL_TYPE_DOUBLE
);
1515 _mesa_UniformMatrix4x3dv(GLint location
, GLsizei count
, GLboolean transpose
,
1516 const GLdouble
*value
)
1518 GET_CURRENT_CONTEXT(ctx
);
1519 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1520 ctx
, ctx
->_Shader
->ActiveProgram
, 4, 3, GLSL_TYPE_DOUBLE
);
1524 _mesa_ProgramUniform1d(GLuint program
, GLint location
, GLdouble v0
)
1526 GET_CURRENT_CONTEXT(ctx
);
1527 struct gl_shader_program
*shProg
=
1528 _mesa_lookup_shader_program_err(ctx
, program
,
1529 "glProgramUniform1d");
1530 _mesa_uniform(location
, 1, &v0
, ctx
, shProg
, GLSL_TYPE_DOUBLE
, 1);
1534 _mesa_ProgramUniform2d(GLuint program
, GLint location
, GLdouble v0
, GLdouble v1
)
1536 GET_CURRENT_CONTEXT(ctx
);
1538 struct gl_shader_program
*shProg
;
1541 shProg
= _mesa_lookup_shader_program_err(ctx
, program
, "glProgramUniform2d");
1542 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_DOUBLE
, 2);
1546 _mesa_ProgramUniform3d(GLuint program
, GLint location
, GLdouble v0
, GLdouble v1
,
1549 GET_CURRENT_CONTEXT(ctx
);
1551 struct gl_shader_program
*shProg
;
1555 shProg
= _mesa_lookup_shader_program_err(ctx
, program
, "glProgramUniform3d");
1556 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_DOUBLE
, 3);
1560 _mesa_ProgramUniform4d(GLuint program
, GLint location
, GLdouble v0
, GLdouble v1
,
1561 GLdouble v2
, GLdouble v3
)
1563 GET_CURRENT_CONTEXT(ctx
);
1565 struct gl_shader_program
*shProg
;
1570 shProg
= _mesa_lookup_shader_program_err(ctx
, program
, "glProgramUniform4d");
1571 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_DOUBLE
, 4);
1575 _mesa_ProgramUniform1dv(GLuint program
, GLint location
, GLsizei count
,
1576 const GLdouble
* value
)
1578 GET_CURRENT_CONTEXT(ctx
);
1579 struct gl_shader_program
*shProg
=
1580 _mesa_lookup_shader_program_err(ctx
, program
,
1581 "glProgramUniform1dv");
1582 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_DOUBLE
, 1);
1586 _mesa_ProgramUniform2dv(GLuint program
, GLint location
, GLsizei count
,
1587 const GLdouble
* value
)
1589 GET_CURRENT_CONTEXT(ctx
);
1590 struct gl_shader_program
*shProg
=
1591 _mesa_lookup_shader_program_err(ctx
, program
,
1592 "glProgramUniform2dv");
1593 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_DOUBLE
, 2);
1597 _mesa_ProgramUniform3dv(GLuint program
, GLint location
, GLsizei count
,
1598 const GLdouble
* value
)
1600 GET_CURRENT_CONTEXT(ctx
);
1601 struct gl_shader_program
*shProg
=
1602 _mesa_lookup_shader_program_err(ctx
, program
,
1603 "glProgramUniform3dv");
1604 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_DOUBLE
, 3);
1608 _mesa_ProgramUniform4dv(GLuint program
, GLint location
, GLsizei count
,
1609 const GLdouble
* value
)
1611 GET_CURRENT_CONTEXT(ctx
);
1612 struct gl_shader_program
*shProg
=
1613 _mesa_lookup_shader_program_err(ctx
, program
,
1614 "glProgramUniform4dv");
1615 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_DOUBLE
, 4);
1619 _mesa_ProgramUniformMatrix2dv(GLuint program
, GLint location
, GLsizei count
,
1620 GLboolean transpose
, const GLdouble
* value
)
1622 GET_CURRENT_CONTEXT(ctx
);
1623 struct gl_shader_program
*shProg
=
1624 _mesa_lookup_shader_program_err(ctx
, program
,
1625 "glProgramUniformMatrix2dv");
1626 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1627 ctx
, shProg
, 2, 2, GLSL_TYPE_DOUBLE
);
1631 _mesa_ProgramUniformMatrix3dv(GLuint program
, GLint location
, GLsizei count
,
1632 GLboolean transpose
, const GLdouble
* value
)
1634 GET_CURRENT_CONTEXT(ctx
);
1635 struct gl_shader_program
*shProg
=
1636 _mesa_lookup_shader_program_err(ctx
, program
,
1637 "glProgramUniformMatrix3dv");
1638 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1639 ctx
, shProg
, 3, 3, GLSL_TYPE_DOUBLE
);
1643 _mesa_ProgramUniformMatrix4dv(GLuint program
, GLint location
, GLsizei count
,
1644 GLboolean transpose
, const GLdouble
* value
)
1646 GET_CURRENT_CONTEXT(ctx
);
1647 struct gl_shader_program
*shProg
=
1648 _mesa_lookup_shader_program_err(ctx
, program
,
1649 "glProgramUniformMatrix4dv");
1650 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1651 ctx
, shProg
, 4, 4, GLSL_TYPE_DOUBLE
);
1655 _mesa_ProgramUniformMatrix2x3dv(GLuint program
, GLint location
, GLsizei count
,
1656 GLboolean transpose
, const GLdouble
* value
)
1658 GET_CURRENT_CONTEXT(ctx
);
1659 struct gl_shader_program
*shProg
=
1660 _mesa_lookup_shader_program_err(ctx
, program
,
1661 "glProgramUniformMatrix2x3dv");
1662 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1663 ctx
, shProg
, 2, 3, GLSL_TYPE_DOUBLE
);
1667 _mesa_ProgramUniformMatrix3x2dv(GLuint program
, GLint location
, GLsizei count
,
1668 GLboolean transpose
, const GLdouble
* value
)
1670 GET_CURRENT_CONTEXT(ctx
);
1671 struct gl_shader_program
*shProg
=
1672 _mesa_lookup_shader_program_err(ctx
, program
,
1673 "glProgramUniformMatrix3x2dv");
1674 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1675 ctx
, shProg
, 3, 2, GLSL_TYPE_DOUBLE
);
1679 _mesa_ProgramUniformMatrix2x4dv(GLuint program
, GLint location
, GLsizei count
,
1680 GLboolean transpose
, const GLdouble
* value
)
1682 GET_CURRENT_CONTEXT(ctx
);
1683 struct gl_shader_program
*shProg
=
1684 _mesa_lookup_shader_program_err(ctx
, program
,
1685 "glProgramUniformMatrix2x4dv");
1686 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1687 ctx
, shProg
, 2, 4, GLSL_TYPE_DOUBLE
);
1691 _mesa_ProgramUniformMatrix4x2dv(GLuint program
, GLint location
, GLsizei count
,
1692 GLboolean transpose
, const GLdouble
* value
)
1694 GET_CURRENT_CONTEXT(ctx
);
1695 struct gl_shader_program
*shProg
=
1696 _mesa_lookup_shader_program_err(ctx
, program
,
1697 "glProgramUniformMatrix4x2dv");
1698 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1699 ctx
, shProg
, 4, 2, GLSL_TYPE_DOUBLE
);
1703 _mesa_ProgramUniformMatrix3x4dv(GLuint program
, GLint location
, GLsizei count
,
1704 GLboolean transpose
, const GLdouble
* value
)
1706 GET_CURRENT_CONTEXT(ctx
);
1707 struct gl_shader_program
*shProg
=
1708 _mesa_lookup_shader_program_err(ctx
, program
,
1709 "glProgramUniformMatrix3x4dv");
1710 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1711 ctx
, shProg
, 3, 4, GLSL_TYPE_DOUBLE
);
1715 _mesa_ProgramUniformMatrix4x3dv(GLuint program
, GLint location
, GLsizei count
,
1716 GLboolean transpose
, const GLdouble
* value
)
1718 GET_CURRENT_CONTEXT(ctx
);
1719 struct gl_shader_program
*shProg
=
1720 _mesa_lookup_shader_program_err(ctx
, program
,
1721 "glProgramUniformMatrix4x3dv");
1722 _mesa_uniform_matrix(location
, count
, transpose
, value
,
1723 ctx
, shProg
, 4, 3, GLSL_TYPE_DOUBLE
);
1727 _mesa_Uniform1i64ARB(GLint location
, GLint64 v0
)
1729 GET_CURRENT_CONTEXT(ctx
);
1730 _mesa_uniform(location
, 1, &v0
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT64
, 1);
1734 _mesa_Uniform2i64ARB(GLint location
, GLint64 v0
, GLint64 v1
)
1736 GET_CURRENT_CONTEXT(ctx
);
1740 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT64
, 2);
1744 _mesa_Uniform3i64ARB(GLint location
, GLint64 v0
, GLint64 v1
, GLint64 v2
)
1746 GET_CURRENT_CONTEXT(ctx
);
1751 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT64
, 3);
1755 _mesa_Uniform4i64ARB(GLint location
, GLint64 v0
, GLint64 v1
, GLint64 v2
, GLint64 v3
)
1757 GET_CURRENT_CONTEXT(ctx
);
1763 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT64
, 4);
1767 _mesa_Uniform1i64vARB(GLint location
, GLsizei count
, const GLint64
*value
)
1769 GET_CURRENT_CONTEXT(ctx
);
1770 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT64
, 1);
1774 _mesa_Uniform2i64vARB(GLint location
, GLsizei count
, const GLint64
*value
)
1776 GET_CURRENT_CONTEXT(ctx
);
1777 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT64
, 2);
1781 _mesa_Uniform3i64vARB(GLint location
, GLsizei count
, const GLint64
*value
)
1783 GET_CURRENT_CONTEXT(ctx
);
1784 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT64
, 3);
1788 _mesa_Uniform4i64vARB(GLint location
, GLsizei count
, const GLint64
*value
)
1790 GET_CURRENT_CONTEXT(ctx
);
1791 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_INT64
, 4);
1795 _mesa_Uniform1ui64ARB(GLint location
, GLuint64 v0
)
1797 GET_CURRENT_CONTEXT(ctx
);
1798 _mesa_uniform(location
, 1, &v0
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT64
, 1);
1802 _mesa_Uniform2ui64ARB(GLint location
, GLuint64 v0
, GLuint64 v1
)
1804 GET_CURRENT_CONTEXT(ctx
);
1808 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT64
, 2);
1812 _mesa_Uniform3ui64ARB(GLint location
, GLuint64 v0
, GLuint64 v1
, GLuint64 v2
)
1814 GET_CURRENT_CONTEXT(ctx
);
1819 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT64
, 3);
1823 _mesa_Uniform4ui64ARB(GLint location
, GLuint64 v0
, GLuint64 v1
, GLuint64 v2
, GLuint64 v3
)
1825 GET_CURRENT_CONTEXT(ctx
);
1831 _mesa_uniform(location
, 1, v
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT64
, 4);
1835 _mesa_Uniform1ui64vARB(GLint location
, GLsizei count
, const GLuint64
*value
)
1837 GET_CURRENT_CONTEXT(ctx
);
1838 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT64
, 1);
1842 _mesa_Uniform2ui64vARB(GLint location
, GLsizei count
, const GLuint64
*value
)
1844 GET_CURRENT_CONTEXT(ctx
);
1845 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT64
, 2);
1849 _mesa_Uniform3ui64vARB(GLint location
, GLsizei count
, const GLuint64
*value
)
1851 GET_CURRENT_CONTEXT(ctx
);
1852 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT64
, 3);
1856 _mesa_Uniform4ui64vARB(GLint location
, GLsizei count
, const GLuint64
*value
)
1858 GET_CURRENT_CONTEXT(ctx
);
1859 _mesa_uniform(location
, count
, value
, ctx
, ctx
->_Shader
->ActiveProgram
, GLSL_TYPE_UINT64
, 4);
1862 /* DSA entrypoints */
1864 _mesa_ProgramUniform1i64ARB(GLuint program
, GLint location
, GLint64 v0
)
1866 GET_CURRENT_CONTEXT(ctx
);
1867 struct gl_shader_program
*shProg
=
1868 _mesa_lookup_shader_program_err(ctx
, program
,
1869 "glProgramUniform1i64ARB");
1870 _mesa_uniform(location
, 1, &v0
, ctx
, shProg
, GLSL_TYPE_INT64
, 1);
1874 _mesa_ProgramUniform2i64ARB(GLuint program
, GLint location
, GLint64 v0
, GLint64 v1
)
1876 GET_CURRENT_CONTEXT(ctx
);
1877 struct gl_shader_program
*shProg
=
1878 _mesa_lookup_shader_program_err(ctx
, program
,
1879 "glProgramUniform2i64ARB");
1883 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_INT64
, 2);
1887 _mesa_ProgramUniform3i64ARB(GLuint program
, GLint location
, GLint64 v0
, GLint64 v1
, GLint64 v2
)
1889 GET_CURRENT_CONTEXT(ctx
);
1890 struct gl_shader_program
*shProg
=
1891 _mesa_lookup_shader_program_err(ctx
, program
,
1892 "glProgramUniform3i64ARB");
1897 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_INT64
, 3);
1901 _mesa_ProgramUniform4i64ARB(GLuint program
, GLint location
, GLint64 v0
, GLint64 v1
, GLint64 v2
, GLint64 v3
)
1903 GET_CURRENT_CONTEXT(ctx
);
1904 struct gl_shader_program
*shProg
=
1905 _mesa_lookup_shader_program_err(ctx
, program
,
1906 "glProgramUniform4i64ARB");
1912 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_INT64
, 4);
1916 _mesa_ProgramUniform1i64vARB(GLuint program
, GLint location
, GLsizei count
, const GLint64
*value
)
1918 GET_CURRENT_CONTEXT(ctx
);
1919 struct gl_shader_program
*shProg
=
1920 _mesa_lookup_shader_program_err(ctx
, program
,
1921 "glProgramUniform1i64vARB");
1922 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_INT64
, 1);
1926 _mesa_ProgramUniform2i64vARB(GLuint program
, GLint location
, GLsizei count
, const GLint64
*value
)
1928 GET_CURRENT_CONTEXT(ctx
);
1929 struct gl_shader_program
*shProg
=
1930 _mesa_lookup_shader_program_err(ctx
, program
,
1931 "glProgramUniform2i64vARB");
1932 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_INT64
, 2);
1936 _mesa_ProgramUniform3i64vARB(GLuint program
, GLint location
, GLsizei count
, const GLint64
*value
)
1938 GET_CURRENT_CONTEXT(ctx
);
1939 struct gl_shader_program
*shProg
=
1940 _mesa_lookup_shader_program_err(ctx
, program
,
1941 "glProgramUniform3i64vARB");
1942 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_INT64
, 3);
1946 _mesa_ProgramUniform4i64vARB(GLuint program
, GLint location
, GLsizei count
, const GLint64
*value
)
1948 GET_CURRENT_CONTEXT(ctx
);
1949 struct gl_shader_program
*shProg
=
1950 _mesa_lookup_shader_program_err(ctx
, program
,
1951 "glProgramUniform4i64vARB");
1952 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_INT64
, 4);
1956 _mesa_ProgramUniform1ui64ARB(GLuint program
, GLint location
, GLuint64 v0
)
1958 GET_CURRENT_CONTEXT(ctx
);
1959 struct gl_shader_program
*shProg
=
1960 _mesa_lookup_shader_program_err(ctx
, program
,
1961 "glProgramUniform1ui64ARB");
1962 _mesa_uniform(location
, 1, &v0
, ctx
, shProg
, GLSL_TYPE_UINT64
, 1);
1966 _mesa_ProgramUniform2ui64ARB(GLuint program
, GLint location
, GLuint64 v0
, GLuint64 v1
)
1968 GET_CURRENT_CONTEXT(ctx
);
1969 struct gl_shader_program
*shProg
=
1970 _mesa_lookup_shader_program_err(ctx
, program
,
1971 "glProgramUniform2ui64ARB");
1975 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_UINT64
, 2);
1979 _mesa_ProgramUniform3ui64ARB(GLuint program
, GLint location
, GLuint64 v0
, GLuint64 v1
, GLuint64 v2
)
1981 GET_CURRENT_CONTEXT(ctx
);
1982 struct gl_shader_program
*shProg
=
1983 _mesa_lookup_shader_program_err(ctx
, program
,
1984 "glProgramUniform3ui64ARB");
1989 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_UINT64
, 3);
1993 _mesa_ProgramUniform4ui64ARB(GLuint program
, GLint location
, GLuint64 v0
, GLuint64 v1
, GLuint64 v2
, GLuint64 v3
)
1995 GET_CURRENT_CONTEXT(ctx
);
1996 struct gl_shader_program
*shProg
=
1997 _mesa_lookup_shader_program_err(ctx
, program
,
1998 "glProgramUniform4ui64ARB");
2004 _mesa_uniform(location
, 1, v
, ctx
, shProg
, GLSL_TYPE_UINT64
, 4);
2008 _mesa_ProgramUniform1ui64vARB(GLuint program
, GLint location
, GLsizei count
, const GLuint64
*value
)
2010 GET_CURRENT_CONTEXT(ctx
);
2011 struct gl_shader_program
*shProg
=
2012 _mesa_lookup_shader_program_err(ctx
, program
,
2013 "glProgramUniform1ui64vARB");
2014 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_UINT64
, 1);
2018 _mesa_ProgramUniform2ui64vARB(GLuint program
, GLint location
, GLsizei count
, const GLuint64
*value
)
2020 GET_CURRENT_CONTEXT(ctx
);
2021 struct gl_shader_program
*shProg
=
2022 _mesa_lookup_shader_program_err(ctx
, program
,
2023 "glProgramUniform2ui64vARB");
2024 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_UINT64
, 2);
2028 _mesa_ProgramUniform3ui64vARB(GLuint program
, GLint location
, GLsizei count
, const GLuint64
*value
)
2030 GET_CURRENT_CONTEXT(ctx
);
2031 struct gl_shader_program
*shProg
=
2032 _mesa_lookup_shader_program_err(ctx
, program
,
2033 "glProgramUniform3ui64vARB");
2034 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_UINT64
, 3);
2038 _mesa_ProgramUniform4ui64vARB(GLuint program
, GLint location
, GLsizei count
, const GLuint64
*value
)
2040 GET_CURRENT_CONTEXT(ctx
);
2041 struct gl_shader_program
*shProg
=
2042 _mesa_lookup_shader_program_err(ctx
, program
,
2043 "glProgramUniform4ui64vARB");
2044 _mesa_uniform(location
, count
, value
, ctx
, shProg
, GLSL_TYPE_UINT64
, 4);