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/shaderapi.h"
42
#include "main/shaderobj.h"
43
#include "main/uniforms.h"
44
#include "main/enums.h"
45
#include "compiler/glsl/ir_uniform.h"
46
#include "compiler/glsl_types.h"
47
#include "program/program.h"
48
#include "util/bitscan.h"
49
#include "api_exec_decl.h"
51
#include "state_tracker/st_context.h"
54
* Update the vertex/fragment program's TexturesUsed array.
56
* This needs to be called after glUniform(set sampler var) is called.
57
* A call to glUniform(samplerVar, value) causes a sampler to point to a
58
* particular texture unit. We know the sampler's texture target
59
* (1D/2D/3D/etc) from compile time but the sampler's texture unit is
60
* set by glUniform() calls.
62
* So, scan the program->SamplerUnits[] and program->SamplerTargets[]
63
* information to update the prog->TexturesUsed[] values.
64
* Each value of TexturesUsed[unit] is one of zero, TEXTURE_1D_INDEX,
65
* TEXTURE_2D_INDEX, TEXTURE_3D_INDEX, etc.
66
* We'll use that info for state validation before rendering.
69
update_single_shader_texture_used(struct gl_shader_program *shProg,
70
struct gl_program *prog,
71
GLuint unit, GLuint target)
73
gl_shader_stage prog_stage =
74
_mesa_program_enum_to_shader_stage(prog->Target);
76
assert(unit < ARRAY_SIZE(prog->TexturesUsed));
77
assert(target < NUM_TEXTURE_TARGETS);
79
/* From section 7.10 (Samplers) of the OpenGL 4.5 spec:
81
* "It is not allowed to have variables of different sampler types pointing
82
* to the same texture image unit within a program object."
84
unsigned stages_mask = shProg->data->linked_stages;
86
const int stage = u_bit_scan(&stages_mask);
88
/* Skip validation if we are yet to update textures used in this
91
if (prog_stage < stage)
94
struct gl_program *glprog = shProg->_LinkedShaders[stage]->Program;
95
if (glprog->TexturesUsed[unit] & ~(1 << target))
96
shProg->SamplersValidated = GL_FALSE;
99
prog->TexturesUsed[unit] |= (1 << target);
103
_mesa_update_shader_textures_used(struct gl_shader_program *shProg,
104
struct gl_program *prog)
106
GLbitfield mask = prog->SamplersUsed;
107
ASSERTED gl_shader_stage prog_stage =
108
_mesa_program_enum_to_shader_stage(prog->Target);
111
assert(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_impl(GLuint programObj, const GLcharARB *name,
1006
struct gl_shader_program *shProg;
1008
GET_CURRENT_CONTEXT(ctx);
1010
shProg = _mesa_lookup_shader_program_err_glthread(ctx, programObj, glthread,
1011
"glGetUniformLocation");
1012
if (!shProg || !name)
1015
/* Page 80 (page 94 of the PDF) of the OpenGL 2.1 spec says:
1017
* "If program has not been successfully linked, the error
1018
* INVALID_OPERATION is generated."
1020
if (shProg->data->LinkStatus == LINKING_FAILURE) {
1021
_mesa_error_glthread_safe(ctx, GL_INVALID_OPERATION, glthread,
1022
"glGetUniformLocation(program not linked)");
1026
return _mesa_program_resource_location(shProg, GL_UNIFORM, name);
1030
_mesa_GetUniformLocation(GLuint programObj, const GLcharARB *name)
1032
return _mesa_GetUniformLocation_impl(programObj, name, false);
1036
_mesa_GetUniformLocation_no_error(GLuint programObj, const GLcharARB *name)
1038
GET_CURRENT_CONTEXT(ctx);
1040
struct gl_shader_program *shProg =
1041
_mesa_lookup_shader_program(ctx, programObj);
1043
return _mesa_program_resource_location(shProg, GL_UNIFORM, name);
1047
_mesa_GetUniformBlockIndex(GLuint program,
1048
const GLchar *uniformBlockName)
1050
GET_CURRENT_CONTEXT(ctx);
1051
struct gl_shader_program *shProg;
1053
if (!ctx->Extensions.ARB_uniform_buffer_object) {
1054
_mesa_error(ctx, GL_INVALID_OPERATION, "glGetUniformBlockIndex");
1055
return GL_INVALID_INDEX;
1058
shProg = _mesa_lookup_shader_program_err(ctx, program,
1059
"glGetUniformBlockIndex");
1061
return GL_INVALID_INDEX;
1063
struct gl_program_resource *res =
1064
_mesa_program_resource_find_name(shProg, GL_UNIFORM_BLOCK,
1065
uniformBlockName, NULL);
1067
return GL_INVALID_INDEX;
1069
return _mesa_program_resource_index(shProg, res);
1073
_mesa_GetUniformIndices(GLuint program,
1074
GLsizei uniformCount,
1075
const GLchar * const *uniformNames,
1076
GLuint *uniformIndices)
1078
GET_CURRENT_CONTEXT(ctx);
1080
struct gl_shader_program *shProg;
1082
if (!ctx->Extensions.ARB_uniform_buffer_object) {
1083
_mesa_error(ctx, GL_INVALID_OPERATION, "glGetUniformIndices");
1087
shProg = _mesa_lookup_shader_program_err(ctx, program,
1088
"glGetUniformIndices");
1092
if (uniformCount < 0) {
1093
_mesa_error(ctx, GL_INVALID_VALUE,
1094
"glGetUniformIndices(uniformCount < 0)");
1098
for (i = 0; i < uniformCount; i++) {
1099
struct gl_program_resource *res =
1100
_mesa_program_resource_find_name(shProg, GL_UNIFORM, uniformNames[i],
1102
uniformIndices[i] = _mesa_program_resource_index(shProg, res);
1107
uniform_block_binding(struct gl_context *ctx, struct gl_shader_program *shProg,
1108
GLuint uniformBlockIndex, GLuint uniformBlockBinding)
1110
if (shProg->data->UniformBlocks[uniformBlockIndex].Binding !=
1111
uniformBlockBinding) {
1113
FLUSH_VERTICES(ctx, 0, 0);
1114
ctx->NewDriverState |= ST_NEW_UNIFORM_BUFFER;
1116
shProg->data->UniformBlocks[uniformBlockIndex].Binding =
1117
uniformBlockBinding;
1122
_mesa_UniformBlockBinding_no_error(GLuint program, GLuint uniformBlockIndex,
1123
GLuint uniformBlockBinding)
1125
GET_CURRENT_CONTEXT(ctx);
1127
struct gl_shader_program *shProg = _mesa_lookup_shader_program(ctx, program);
1128
uniform_block_binding(ctx, shProg, uniformBlockIndex, uniformBlockBinding);
1132
_mesa_UniformBlockBinding(GLuint program,
1133
GLuint uniformBlockIndex,
1134
GLuint uniformBlockBinding)
1136
GET_CURRENT_CONTEXT(ctx);
1137
struct gl_shader_program *shProg;
1139
if (!ctx->Extensions.ARB_uniform_buffer_object) {
1140
_mesa_error(ctx, GL_INVALID_OPERATION, "glUniformBlockBinding");
1144
shProg = _mesa_lookup_shader_program_err(ctx, program,
1145
"glUniformBlockBinding");
1149
if (uniformBlockIndex >= shProg->data->NumUniformBlocks) {
1150
_mesa_error(ctx, GL_INVALID_VALUE,
1151
"glUniformBlockBinding(block index %u >= %u)",
1152
uniformBlockIndex, shProg->data->NumUniformBlocks);
1156
if (uniformBlockBinding >= ctx->Const.MaxUniformBufferBindings) {
1157
_mesa_error(ctx, GL_INVALID_VALUE,
1158
"glUniformBlockBinding(block binding %u >= %u)",
1159
uniformBlockBinding, ctx->Const.MaxUniformBufferBindings);
1163
uniform_block_binding(ctx, shProg, uniformBlockIndex, uniformBlockBinding);
1167
shader_storage_block_binding(struct gl_context *ctx,
1168
struct gl_shader_program *shProg,
1169
GLuint shaderStorageBlockIndex,
1170
GLuint shaderStorageBlockBinding)
1172
if (shProg->data->ShaderStorageBlocks[shaderStorageBlockIndex].Binding !=
1173
shaderStorageBlockBinding) {
1175
FLUSH_VERTICES(ctx, 0, 0);
1176
ctx->NewDriverState |= ST_NEW_STORAGE_BUFFER;
1178
shProg->data->ShaderStorageBlocks[shaderStorageBlockIndex].Binding =
1179
shaderStorageBlockBinding;
1184
_mesa_ShaderStorageBlockBinding_no_error(GLuint program,
1185
GLuint shaderStorageBlockIndex,
1186
GLuint shaderStorageBlockBinding)
1188
GET_CURRENT_CONTEXT(ctx);
1190
struct gl_shader_program *shProg = _mesa_lookup_shader_program(ctx, program);
1191
shader_storage_block_binding(ctx, shProg, shaderStorageBlockIndex,
1192
shaderStorageBlockBinding);
1196
_mesa_ShaderStorageBlockBinding(GLuint program,
1197
GLuint shaderStorageBlockIndex,
1198
GLuint shaderStorageBlockBinding)
1200
GET_CURRENT_CONTEXT(ctx);
1201
struct gl_shader_program *shProg;
1203
if (!ctx->Extensions.ARB_shader_storage_buffer_object) {
1204
_mesa_error(ctx, GL_INVALID_OPERATION, "glShaderStorageBlockBinding");
1208
shProg = _mesa_lookup_shader_program_err(ctx, program,
1209
"glShaderStorageBlockBinding");
1213
if (shaderStorageBlockIndex >= shProg->data->NumShaderStorageBlocks) {
1214
_mesa_error(ctx, GL_INVALID_VALUE,
1215
"glShaderStorageBlockBinding(block index %u >= %u)",
1216
shaderStorageBlockIndex,
1217
shProg->data->NumShaderStorageBlocks);
1221
if (shaderStorageBlockBinding >= ctx->Const.MaxShaderStorageBufferBindings) {
1222
_mesa_error(ctx, GL_INVALID_VALUE,
1223
"glShaderStorageBlockBinding(block binding %u >= %u)",
1224
shaderStorageBlockBinding,
1225
ctx->Const.MaxShaderStorageBufferBindings);
1229
shader_storage_block_binding(ctx, shProg, shaderStorageBlockIndex,
1230
shaderStorageBlockBinding);
1234
* Generic program resource property query.
1237
mesa_bufferiv(struct gl_shader_program *shProg, GLenum type,
1238
GLuint index, GLenum pname, GLint *params, const char *caller)
1240
GET_CURRENT_CONTEXT(ctx);
1241
struct gl_program_resource *res =
1242
_mesa_program_resource_find_index(shProg, type, index);
1245
_mesa_error(ctx, GL_INVALID_VALUE, "%s(bufferindex %d)", caller, index);
1250
case GL_UNIFORM_BLOCK_BINDING:
1251
case GL_ATOMIC_COUNTER_BUFFER_BINDING:
1252
_mesa_program_resource_prop(shProg, res, index, GL_BUFFER_BINDING,
1253
params, false, caller);
1255
case GL_UNIFORM_BLOCK_DATA_SIZE:
1256
case GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE:
1257
_mesa_program_resource_prop(shProg, res, index, GL_BUFFER_DATA_SIZE,
1258
params, false, caller);
1260
case GL_UNIFORM_BLOCK_NAME_LENGTH:
1261
_mesa_program_resource_prop(shProg, res, index, GL_NAME_LENGTH,
1262
params, false, caller);
1264
case GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS:
1265
case GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS:
1266
_mesa_program_resource_prop(shProg, res, index, GL_NUM_ACTIVE_VARIABLES,
1267
params, false, caller);
1269
case GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:
1270
case GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES:
1271
_mesa_program_resource_prop(shProg, res, index, GL_ACTIVE_VARIABLES,
1272
params, false, caller);
1274
case GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:
1275
case GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER:
1276
_mesa_program_resource_prop(shProg, res, index,
1277
GL_REFERENCED_BY_VERTEX_SHADER, params,
1281
case GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER:
1282
case GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER:
1283
_mesa_program_resource_prop(shProg, res, index,
1284
GL_REFERENCED_BY_TESS_CONTROL_SHADER, params,
1288
case GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER:
1289
case GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER:
1290
_mesa_program_resource_prop(shProg, res, index,
1291
GL_REFERENCED_BY_TESS_EVALUATION_SHADER, params,
1295
case GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER:
1296
case GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER:
1297
_mesa_program_resource_prop(shProg, res, index,
1298
GL_REFERENCED_BY_GEOMETRY_SHADER, params,
1301
case GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:
1302
case GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER:
1303
_mesa_program_resource_prop(shProg, res, index,
1304
GL_REFERENCED_BY_FRAGMENT_SHADER, params,
1307
case GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER:
1308
case GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER:
1309
_mesa_program_resource_prop(shProg, res, index,
1310
GL_REFERENCED_BY_COMPUTE_SHADER, params,
1314
_mesa_error(ctx, GL_INVALID_ENUM,
1315
"%s(pname 0x%x (%s))", caller, pname,
1316
_mesa_enum_to_string(pname));
1323
_mesa_GetActiveUniformBlockiv(GLuint program,
1324
GLuint uniformBlockIndex,
1328
GET_CURRENT_CONTEXT(ctx);
1329
struct gl_shader_program *shProg;
1331
if (!ctx->Extensions.ARB_uniform_buffer_object) {
1332
_mesa_error(ctx, GL_INVALID_OPERATION, "glGetActiveUniformBlockiv");
1336
shProg = _mesa_lookup_shader_program_err(ctx, program,
1337
"glGetActiveUniformBlockiv");
1341
mesa_bufferiv(shProg, GL_UNIFORM_BLOCK, uniformBlockIndex, pname, params,
1342
"glGetActiveUniformBlockiv");
1346
_mesa_GetActiveUniformBlockName(GLuint program,
1347
GLuint uniformBlockIndex,
1350
GLchar *uniformBlockName)
1352
GET_CURRENT_CONTEXT(ctx);
1353
struct gl_shader_program *shProg;
1355
if (!ctx->Extensions.ARB_uniform_buffer_object) {
1356
_mesa_error(ctx, GL_INVALID_OPERATION, "glGetActiveUniformBlockiv");
1361
_mesa_error(ctx, GL_INVALID_VALUE,
1362
"glGetActiveUniformBlockName(bufSize %d < 0)",
1367
shProg = _mesa_lookup_shader_program_err(ctx, program,
1368
"glGetActiveUniformBlockiv");
1372
if (uniformBlockName)
1373
_mesa_get_program_resource_name(shProg, GL_UNIFORM_BLOCK,
1374
uniformBlockIndex, bufSize, length,
1375
uniformBlockName, false,
1376
"glGetActiveUniformBlockName");
1380
_mesa_GetActiveUniformName(GLuint program, GLuint uniformIndex,
1381
GLsizei bufSize, GLsizei *length,
1382
GLchar *uniformName)
1384
GET_CURRENT_CONTEXT(ctx);
1385
struct gl_shader_program *shProg;
1387
if (!ctx->Extensions.ARB_uniform_buffer_object) {
1388
_mesa_error(ctx, GL_INVALID_OPERATION, "glGetActiveUniformName");
1393
_mesa_error(ctx, GL_INVALID_VALUE,
1394
"glGetActiveUniformName(bufSize %d < 0)",
1399
shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetActiveUniformName");
1404
_mesa_get_program_resource_name(shProg, GL_UNIFORM, uniformIndex, bufSize,
1405
length, uniformName, false,
1406
"glGetActiveUniformName");
1410
_mesa_GetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex,
1411
GLenum pname, GLint *params)
1413
GET_CURRENT_CONTEXT(ctx);
1414
struct gl_shader_program *shProg;
1416
if (!ctx->Extensions.ARB_shader_atomic_counters) {
1417
_mesa_error(ctx, GL_INVALID_OPERATION,
1418
"glGetActiveAtomicCounterBufferiv");
1422
shProg = _mesa_lookup_shader_program_err(ctx, program,
1423
"glGetActiveAtomicCounterBufferiv");
1427
mesa_bufferiv(shProg, GL_ATOMIC_COUNTER_BUFFER, bufferIndex, pname, params,
1428
"glGetActiveAtomicCounterBufferiv");
1432
_mesa_Uniform1d(GLint location, GLdouble v0)
1434
GET_CURRENT_CONTEXT(ctx);
1435
_mesa_uniform(location, 1, &v0, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 1);
1439
_mesa_Uniform2d(GLint location, GLdouble v0, GLdouble v1)
1441
GET_CURRENT_CONTEXT(ctx);
1445
_mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 2);
1449
_mesa_Uniform3d(GLint location, GLdouble v0, GLdouble v1, GLdouble v2)
1451
GET_CURRENT_CONTEXT(ctx);
1456
_mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 3);
1460
_mesa_Uniform4d(GLint location, GLdouble v0, GLdouble v1, GLdouble v2,
1463
GET_CURRENT_CONTEXT(ctx);
1469
_mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 4);
1473
_mesa_Uniform1dv(GLint location, GLsizei count, const GLdouble * value)
1475
GET_CURRENT_CONTEXT(ctx);
1476
_mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 1);
1480
_mesa_Uniform2dv(GLint location, GLsizei count, const GLdouble * value)
1482
GET_CURRENT_CONTEXT(ctx);
1483
_mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 2);
1487
_mesa_Uniform3dv(GLint location, GLsizei count, const GLdouble * value)
1489
GET_CURRENT_CONTEXT(ctx);
1490
_mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 3);
1494
_mesa_Uniform4dv(GLint location, GLsizei count, const GLdouble * value)
1496
GET_CURRENT_CONTEXT(ctx);
1497
_mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 4);
1501
_mesa_UniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose,
1502
const GLdouble * value)
1504
GET_CURRENT_CONTEXT(ctx);
1505
_mesa_uniform_matrix(location, count, transpose, value,
1506
ctx, ctx->_Shader->ActiveProgram, 2, 2, GLSL_TYPE_DOUBLE);
1510
_mesa_UniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose,
1511
const GLdouble * value)
1513
GET_CURRENT_CONTEXT(ctx);
1514
_mesa_uniform_matrix(location, count, transpose, value,
1515
ctx, ctx->_Shader->ActiveProgram, 3, 3, GLSL_TYPE_DOUBLE);
1519
_mesa_UniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose,
1520
const GLdouble * value)
1522
GET_CURRENT_CONTEXT(ctx);
1523
_mesa_uniform_matrix(location, count, transpose, value,
1524
ctx, ctx->_Shader->ActiveProgram, 4, 4, GLSL_TYPE_DOUBLE);
1528
_mesa_UniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose,
1529
const GLdouble *value)
1531
GET_CURRENT_CONTEXT(ctx);
1532
_mesa_uniform_matrix(location, count, transpose, value,
1533
ctx, ctx->_Shader->ActiveProgram, 2, 3, GLSL_TYPE_DOUBLE);
1537
_mesa_UniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose,
1538
const GLdouble *value)
1540
GET_CURRENT_CONTEXT(ctx);
1541
_mesa_uniform_matrix(location, count, transpose, value,
1542
ctx, ctx->_Shader->ActiveProgram, 3, 2, GLSL_TYPE_DOUBLE);
1546
_mesa_UniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose,
1547
const GLdouble *value)
1549
GET_CURRENT_CONTEXT(ctx);
1550
_mesa_uniform_matrix(location, count, transpose, value,
1551
ctx, ctx->_Shader->ActiveProgram, 2, 4, GLSL_TYPE_DOUBLE);
1555
_mesa_UniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose,
1556
const GLdouble *value)
1558
GET_CURRENT_CONTEXT(ctx);
1559
_mesa_uniform_matrix(location, count, transpose, value,
1560
ctx, ctx->_Shader->ActiveProgram, 4, 2, GLSL_TYPE_DOUBLE);
1564
_mesa_UniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose,
1565
const GLdouble *value)
1567
GET_CURRENT_CONTEXT(ctx);
1568
_mesa_uniform_matrix(location, count, transpose, value,
1569
ctx, ctx->_Shader->ActiveProgram, 3, 4, GLSL_TYPE_DOUBLE);
1573
_mesa_UniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose,
1574
const GLdouble *value)
1576
GET_CURRENT_CONTEXT(ctx);
1577
_mesa_uniform_matrix(location, count, transpose, value,
1578
ctx, ctx->_Shader->ActiveProgram, 4, 3, GLSL_TYPE_DOUBLE);
1582
_mesa_ProgramUniform1d(GLuint program, GLint location, GLdouble v0)
1584
GET_CURRENT_CONTEXT(ctx);
1585
struct gl_shader_program *shProg =
1586
_mesa_lookup_shader_program_err(ctx, program,
1587
"glProgramUniform1d");
1588
_mesa_uniform(location, 1, &v0, ctx, shProg, GLSL_TYPE_DOUBLE, 1);
1592
_mesa_ProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1)
1594
GET_CURRENT_CONTEXT(ctx);
1596
struct gl_shader_program *shProg;
1599
shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2d");
1600
_mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_DOUBLE, 2);
1604
_mesa_ProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1,
1607
GET_CURRENT_CONTEXT(ctx);
1609
struct gl_shader_program *shProg;
1613
shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3d");
1614
_mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_DOUBLE, 3);
1618
_mesa_ProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1,
1619
GLdouble v2, GLdouble v3)
1621
GET_CURRENT_CONTEXT(ctx);
1623
struct gl_shader_program *shProg;
1628
shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4d");
1629
_mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_DOUBLE, 4);
1633
_mesa_ProgramUniform1dv(GLuint program, GLint location, GLsizei count,
1634
const GLdouble * value)
1636
GET_CURRENT_CONTEXT(ctx);
1637
struct gl_shader_program *shProg =
1638
_mesa_lookup_shader_program_err(ctx, program,
1639
"glProgramUniform1dv");
1640
_mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_DOUBLE, 1);
1644
_mesa_ProgramUniform2dv(GLuint program, GLint location, GLsizei count,
1645
const GLdouble * value)
1647
GET_CURRENT_CONTEXT(ctx);
1648
struct gl_shader_program *shProg =
1649
_mesa_lookup_shader_program_err(ctx, program,
1650
"glProgramUniform2dv");
1651
_mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_DOUBLE, 2);
1655
_mesa_ProgramUniform3dv(GLuint program, GLint location, GLsizei count,
1656
const GLdouble * value)
1658
GET_CURRENT_CONTEXT(ctx);
1659
struct gl_shader_program *shProg =
1660
_mesa_lookup_shader_program_err(ctx, program,
1661
"glProgramUniform3dv");
1662
_mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_DOUBLE, 3);
1666
_mesa_ProgramUniform4dv(GLuint program, GLint location, GLsizei count,
1667
const GLdouble * value)
1669
GET_CURRENT_CONTEXT(ctx);
1670
struct gl_shader_program *shProg =
1671
_mesa_lookup_shader_program_err(ctx, program,
1672
"glProgramUniform4dv");
1673
_mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_DOUBLE, 4);
1677
_mesa_ProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count,
1678
GLboolean transpose, const GLdouble * value)
1680
GET_CURRENT_CONTEXT(ctx);
1681
struct gl_shader_program *shProg =
1682
_mesa_lookup_shader_program_err(ctx, program,
1683
"glProgramUniformMatrix2dv");
1684
_mesa_uniform_matrix(location, count, transpose, value,
1685
ctx, shProg, 2, 2, GLSL_TYPE_DOUBLE);
1689
_mesa_ProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count,
1690
GLboolean transpose, const GLdouble * value)
1692
GET_CURRENT_CONTEXT(ctx);
1693
struct gl_shader_program *shProg =
1694
_mesa_lookup_shader_program_err(ctx, program,
1695
"glProgramUniformMatrix3dv");
1696
_mesa_uniform_matrix(location, count, transpose, value,
1697
ctx, shProg, 3, 3, GLSL_TYPE_DOUBLE);
1701
_mesa_ProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count,
1702
GLboolean transpose, const GLdouble * value)
1704
GET_CURRENT_CONTEXT(ctx);
1705
struct gl_shader_program *shProg =
1706
_mesa_lookup_shader_program_err(ctx, program,
1707
"glProgramUniformMatrix4dv");
1708
_mesa_uniform_matrix(location, count, transpose, value,
1709
ctx, shProg, 4, 4, GLSL_TYPE_DOUBLE);
1713
_mesa_ProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count,
1714
GLboolean transpose, const GLdouble * value)
1716
GET_CURRENT_CONTEXT(ctx);
1717
struct gl_shader_program *shProg =
1718
_mesa_lookup_shader_program_err(ctx, program,
1719
"glProgramUniformMatrix2x3dv");
1720
_mesa_uniform_matrix(location, count, transpose, value,
1721
ctx, shProg, 2, 3, GLSL_TYPE_DOUBLE);
1725
_mesa_ProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count,
1726
GLboolean transpose, const GLdouble * value)
1728
GET_CURRENT_CONTEXT(ctx);
1729
struct gl_shader_program *shProg =
1730
_mesa_lookup_shader_program_err(ctx, program,
1731
"glProgramUniformMatrix3x2dv");
1732
_mesa_uniform_matrix(location, count, transpose, value,
1733
ctx, shProg, 3, 2, GLSL_TYPE_DOUBLE);
1737
_mesa_ProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count,
1738
GLboolean transpose, const GLdouble * value)
1740
GET_CURRENT_CONTEXT(ctx);
1741
struct gl_shader_program *shProg =
1742
_mesa_lookup_shader_program_err(ctx, program,
1743
"glProgramUniformMatrix2x4dv");
1744
_mesa_uniform_matrix(location, count, transpose, value,
1745
ctx, shProg, 2, 4, GLSL_TYPE_DOUBLE);
1749
_mesa_ProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count,
1750
GLboolean transpose, const GLdouble * value)
1752
GET_CURRENT_CONTEXT(ctx);
1753
struct gl_shader_program *shProg =
1754
_mesa_lookup_shader_program_err(ctx, program,
1755
"glProgramUniformMatrix4x2dv");
1756
_mesa_uniform_matrix(location, count, transpose, value,
1757
ctx, shProg, 4, 2, GLSL_TYPE_DOUBLE);
1761
_mesa_ProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count,
1762
GLboolean transpose, const GLdouble * value)
1764
GET_CURRENT_CONTEXT(ctx);
1765
struct gl_shader_program *shProg =
1766
_mesa_lookup_shader_program_err(ctx, program,
1767
"glProgramUniformMatrix3x4dv");
1768
_mesa_uniform_matrix(location, count, transpose, value,
1769
ctx, shProg, 3, 4, GLSL_TYPE_DOUBLE);
1773
_mesa_ProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count,
1774
GLboolean transpose, const GLdouble * value)
1776
GET_CURRENT_CONTEXT(ctx);
1777
struct gl_shader_program *shProg =
1778
_mesa_lookup_shader_program_err(ctx, program,
1779
"glProgramUniformMatrix4x3dv");
1780
_mesa_uniform_matrix(location, count, transpose, value,
1781
ctx, shProg, 4, 3, GLSL_TYPE_DOUBLE);
1785
_mesa_Uniform1i64ARB(GLint location, GLint64 v0)
1787
GET_CURRENT_CONTEXT(ctx);
1788
_mesa_uniform(location, 1, &v0, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 1);
1792
_mesa_Uniform2i64ARB(GLint location, GLint64 v0, GLint64 v1)
1794
GET_CURRENT_CONTEXT(ctx);
1798
_mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 2);
1802
_mesa_Uniform3i64ARB(GLint location, GLint64 v0, GLint64 v1, GLint64 v2)
1804
GET_CURRENT_CONTEXT(ctx);
1809
_mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 3);
1813
_mesa_Uniform4i64ARB(GLint location, GLint64 v0, GLint64 v1, GLint64 v2, GLint64 v3)
1815
GET_CURRENT_CONTEXT(ctx);
1821
_mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 4);
1825
_mesa_Uniform1i64vARB(GLint location, GLsizei count, const GLint64 *value)
1827
GET_CURRENT_CONTEXT(ctx);
1828
_mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 1);
1832
_mesa_Uniform2i64vARB(GLint location, GLsizei count, const GLint64 *value)
1834
GET_CURRENT_CONTEXT(ctx);
1835
_mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 2);
1839
_mesa_Uniform3i64vARB(GLint location, GLsizei count, const GLint64 *value)
1841
GET_CURRENT_CONTEXT(ctx);
1842
_mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 3);
1846
_mesa_Uniform4i64vARB(GLint location, GLsizei count, const GLint64 *value)
1848
GET_CURRENT_CONTEXT(ctx);
1849
_mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 4);
1853
_mesa_Uniform1ui64ARB(GLint location, GLuint64 v0)
1855
GET_CURRENT_CONTEXT(ctx);
1856
_mesa_uniform(location, 1, &v0, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 1);
1860
_mesa_Uniform2ui64ARB(GLint location, GLuint64 v0, GLuint64 v1)
1862
GET_CURRENT_CONTEXT(ctx);
1866
_mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 2);
1870
_mesa_Uniform3ui64ARB(GLint location, GLuint64 v0, GLuint64 v1, GLuint64 v2)
1872
GET_CURRENT_CONTEXT(ctx);
1877
_mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 3);
1881
_mesa_Uniform4ui64ARB(GLint location, GLuint64 v0, GLuint64 v1, GLuint64 v2, GLuint64 v3)
1883
GET_CURRENT_CONTEXT(ctx);
1889
_mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 4);
1893
_mesa_Uniform1ui64vARB(GLint location, GLsizei count, const GLuint64 *value)
1895
GET_CURRENT_CONTEXT(ctx);
1896
_mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 1);
1900
_mesa_Uniform2ui64vARB(GLint location, GLsizei count, const GLuint64 *value)
1902
GET_CURRENT_CONTEXT(ctx);
1903
_mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 2);
1907
_mesa_Uniform3ui64vARB(GLint location, GLsizei count, const GLuint64 *value)
1909
GET_CURRENT_CONTEXT(ctx);
1910
_mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 3);
1914
_mesa_Uniform4ui64vARB(GLint location, GLsizei count, const GLuint64 *value)
1916
GET_CURRENT_CONTEXT(ctx);
1917
_mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 4);
1920
/* DSA entrypoints */
1922
_mesa_ProgramUniform1i64ARB(GLuint program, GLint location, GLint64 v0)
1924
GET_CURRENT_CONTEXT(ctx);
1925
struct gl_shader_program *shProg =
1926
_mesa_lookup_shader_program_err(ctx, program,
1927
"glProgramUniform1i64ARB");
1928
_mesa_uniform(location, 1, &v0, ctx, shProg, GLSL_TYPE_INT64, 1);
1932
_mesa_ProgramUniform2i64ARB(GLuint program, GLint location, GLint64 v0, GLint64 v1)
1934
GET_CURRENT_CONTEXT(ctx);
1935
struct gl_shader_program *shProg =
1936
_mesa_lookup_shader_program_err(ctx, program,
1937
"glProgramUniform2i64ARB");
1941
_mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_INT64, 2);
1945
_mesa_ProgramUniform3i64ARB(GLuint program, GLint location, GLint64 v0, GLint64 v1, GLint64 v2)
1947
GET_CURRENT_CONTEXT(ctx);
1948
struct gl_shader_program *shProg =
1949
_mesa_lookup_shader_program_err(ctx, program,
1950
"glProgramUniform3i64ARB");
1955
_mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_INT64, 3);
1959
_mesa_ProgramUniform4i64ARB(GLuint program, GLint location, GLint64 v0, GLint64 v1, GLint64 v2, GLint64 v3)
1961
GET_CURRENT_CONTEXT(ctx);
1962
struct gl_shader_program *shProg =
1963
_mesa_lookup_shader_program_err(ctx, program,
1964
"glProgramUniform4i64ARB");
1970
_mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_INT64, 4);
1974
_mesa_ProgramUniform1i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value)
1976
GET_CURRENT_CONTEXT(ctx);
1977
struct gl_shader_program *shProg =
1978
_mesa_lookup_shader_program_err(ctx, program,
1979
"glProgramUniform1i64vARB");
1980
_mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_INT64, 1);
1984
_mesa_ProgramUniform2i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value)
1986
GET_CURRENT_CONTEXT(ctx);
1987
struct gl_shader_program *shProg =
1988
_mesa_lookup_shader_program_err(ctx, program,
1989
"glProgramUniform2i64vARB");
1990
_mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_INT64, 2);
1994
_mesa_ProgramUniform3i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value)
1996
GET_CURRENT_CONTEXT(ctx);
1997
struct gl_shader_program *shProg =
1998
_mesa_lookup_shader_program_err(ctx, program,
1999
"glProgramUniform3i64vARB");
2000
_mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_INT64, 3);
2004
_mesa_ProgramUniform4i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value)
2006
GET_CURRENT_CONTEXT(ctx);
2007
struct gl_shader_program *shProg =
2008
_mesa_lookup_shader_program_err(ctx, program,
2009
"glProgramUniform4i64vARB");
2010
_mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_INT64, 4);
2014
_mesa_ProgramUniform1ui64ARB(GLuint program, GLint location, GLuint64 v0)
2016
GET_CURRENT_CONTEXT(ctx);
2017
struct gl_shader_program *shProg =
2018
_mesa_lookup_shader_program_err(ctx, program,
2019
"glProgramUniform1ui64ARB");
2020
_mesa_uniform(location, 1, &v0, ctx, shProg, GLSL_TYPE_UINT64, 1);
2024
_mesa_ProgramUniform2ui64ARB(GLuint program, GLint location, GLuint64 v0, GLuint64 v1)
2026
GET_CURRENT_CONTEXT(ctx);
2027
struct gl_shader_program *shProg =
2028
_mesa_lookup_shader_program_err(ctx, program,
2029
"glProgramUniform2ui64ARB");
2033
_mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_UINT64, 2);
2037
_mesa_ProgramUniform3ui64ARB(GLuint program, GLint location, GLuint64 v0, GLuint64 v1, GLuint64 v2)
2039
GET_CURRENT_CONTEXT(ctx);
2040
struct gl_shader_program *shProg =
2041
_mesa_lookup_shader_program_err(ctx, program,
2042
"glProgramUniform3ui64ARB");
2047
_mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_UINT64, 3);
2051
_mesa_ProgramUniform4ui64ARB(GLuint program, GLint location, GLuint64 v0, GLuint64 v1, GLuint64 v2, GLuint64 v3)
2053
GET_CURRENT_CONTEXT(ctx);
2054
struct gl_shader_program *shProg =
2055
_mesa_lookup_shader_program_err(ctx, program,
2056
"glProgramUniform4ui64ARB");
2062
_mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_UINT64, 4);
2066
_mesa_ProgramUniform1ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value)
2068
GET_CURRENT_CONTEXT(ctx);
2069
struct gl_shader_program *shProg =
2070
_mesa_lookup_shader_program_err(ctx, program,
2071
"glProgramUniform1ui64vARB");
2072
_mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_UINT64, 1);
2076
_mesa_ProgramUniform2ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value)
2078
GET_CURRENT_CONTEXT(ctx);
2079
struct gl_shader_program *shProg =
2080
_mesa_lookup_shader_program_err(ctx, program,
2081
"glProgramUniform2ui64vARB");
2082
_mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_UINT64, 2);
2086
_mesa_ProgramUniform3ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value)
2088
GET_CURRENT_CONTEXT(ctx);
2089
struct gl_shader_program *shProg =
2090
_mesa_lookup_shader_program_err(ctx, program,
2091
"glProgramUniform3ui64vARB");
2092
_mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_UINT64, 3);
2096
_mesa_ProgramUniform4ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value)
2098
GET_CURRENT_CONTEXT(ctx);
2099
struct gl_shader_program *shProg =
2100
_mesa_lookup_shader_program_err(ctx, program,
2101
"glProgramUniform4ui64vARB");
2102
_mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_UINT64, 4);