X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Funiforms.c;h=ba87d3900aff45ef4c30f3d1137ffc4a4776c76c;hb=a0d667036d8c8b77fa62f74263583b07909f8637;hp=c1d951ad605d86e9e34fa01a0abac2b614a922fd;hpb=9f7ac45ce46f18b53777fc5c040e38049c1cbb47;p=mesa.git diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c index c1d951ad605..ba87d3900af 100644 --- a/src/mesa/main/uniforms.c +++ b/src/mesa/main/uniforms.c @@ -38,7 +38,6 @@ #include "main/glheader.h" #include "main/context.h" -#include "main/dispatch.h" #include "main/shaderapi.h" #include "main/shaderobj.h" #include "main/uniforms.h" @@ -63,39 +62,73 @@ * TEXTURE_2D_INDEX, TEXTURE_3D_INDEX, etc. * We'll use that info for state validation before rendering. */ +static inline void +update_single_shader_texture_used(struct gl_shader_program *shProg, + struct gl_program *prog, + GLuint unit, GLuint target) +{ + gl_shader_stage prog_stage = + _mesa_program_enum_to_shader_stage(prog->Target); + + assert(unit < ARRAY_SIZE(prog->TexturesUsed)); + assert(target < NUM_TEXTURE_TARGETS); + + /* From section 7.10 (Samplers) of the OpenGL 4.5 spec: + * + * "It is not allowed to have variables of different sampler types pointing + * to the same texture image unit within a program object." + */ + unsigned stages_mask = shProg->data->linked_stages; + while (stages_mask) { + const int stage = u_bit_scan(&stages_mask); + + /* Skip validation if we are yet to update textures used in this + * stage. + */ + if (prog_stage < stage) + break; + + struct gl_program *glprog = shProg->_LinkedShaders[stage]->Program; + if (glprog->TexturesUsed[unit] & ~(1 << target)) + shProg->SamplersValidated = GL_FALSE; + } + + prog->TexturesUsed[unit] |= (1 << target); +} + void _mesa_update_shader_textures_used(struct gl_shader_program *shProg, - struct gl_program *prog) + struct gl_program *prog) { GLbitfield mask = prog->SamplersUsed; - struct gl_linked_shader *shader = - shProg->_LinkedShaders[_mesa_program_enum_to_shader_stage(prog->Target)]; + ASSERTED gl_shader_stage prog_stage = + _mesa_program_enum_to_shader_stage(prog->Target); + GLuint s; - assert(shader); + assert(shProg->_LinkedShaders[prog_stage]); memset(prog->TexturesUsed, 0, sizeof(prog->TexturesUsed)); - shProg->SamplersValidated = GL_TRUE; - while (mask) { - const int s = u_bit_scan(&mask); - GLuint unit = prog->SamplerUnits[s]; - GLuint tgt = prog->sh.SamplerTargets[s]; - assert(unit < ARRAY_SIZE(prog->TexturesUsed)); - assert(tgt < NUM_TEXTURE_TARGETS); - - /* The types of the samplers associated with a particular texture - * unit must be an exact match. Page 74 (page 89 of the PDF) of the - * OpenGL 3.3 core spec says: - * - * "It is not allowed to have variables of different sampler - * types pointing to the same texture image unit within a program - * object." + s = u_bit_scan(&mask); + + update_single_shader_texture_used(shProg, prog, + prog->SamplerUnits[s], + prog->sh.SamplerTargets[s]); + } + + if (unlikely(prog->sh.HasBoundBindlessSampler)) { + /* Loop over bindless samplers bound to texture units. */ - if (prog->TexturesUsed[unit] & ~(1 << tgt)) - shProg->SamplersValidated = GL_FALSE; + for (s = 0; s < prog->sh.NumBindlessSamplers; s++) { + struct gl_bindless_sampler *sampler = &prog->sh.BindlessSamplers[s]; + + if (!sampler->bound) + continue; - prog->TexturesUsed[unit] |= (1 << tgt); + update_single_shader_texture_used(shProg, prog, sampler->unit, + sampler->target); + } } } @@ -150,7 +183,7 @@ void GLAPIENTRY _mesa_Uniform1f(GLint location, GLfloat v0) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, &v0, GLSL_TYPE_FLOAT, 1); + _mesa_uniform(location, 1, &v0, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_FLOAT, 1); } void GLAPIENTRY @@ -160,7 +193,7 @@ _mesa_Uniform2f(GLint location, GLfloat v0, GLfloat v1) GLfloat v[2]; v[0] = v0; v[1] = v1; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_FLOAT, 2); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_FLOAT, 2); } void GLAPIENTRY @@ -171,7 +204,7 @@ _mesa_Uniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) v[0] = v0; v[1] = v1; v[2] = v2; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_FLOAT, 3); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_FLOAT, 3); } void GLAPIENTRY @@ -184,14 +217,14 @@ _mesa_Uniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, v[1] = v1; v[2] = v2; v[3] = v3; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_FLOAT, 4); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_FLOAT, 4); } void GLAPIENTRY _mesa_Uniform1i(GLint location, GLint v0) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, &v0, GLSL_TYPE_INT, 1); + _mesa_uniform(location, 1, &v0, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT, 1); } void GLAPIENTRY @@ -201,7 +234,7 @@ _mesa_Uniform2i(GLint location, GLint v0, GLint v1) GLint v[2]; v[0] = v0; v[1] = v1; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_INT, 2); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT, 2); } void GLAPIENTRY @@ -212,7 +245,7 @@ _mesa_Uniform3i(GLint location, GLint v0, GLint v1, GLint v2) v[0] = v0; v[1] = v1; v[2] = v2; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_INT, 3); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT, 3); } void GLAPIENTRY @@ -224,65 +257,82 @@ _mesa_Uniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) v[1] = v1; v[2] = v2; v[3] = v3; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_INT, 4); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT, 4); } void GLAPIENTRY _mesa_Uniform1fv(GLint location, GLsizei count, const GLfloat * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_FLOAT, 1); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_FLOAT, 1); } void GLAPIENTRY _mesa_Uniform2fv(GLint location, GLsizei count, const GLfloat * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_FLOAT, 2); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_FLOAT, 2); } void GLAPIENTRY _mesa_Uniform3fv(GLint location, GLsizei count, const GLfloat * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_FLOAT, 3); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_FLOAT, 3); } void GLAPIENTRY _mesa_Uniform4fv(GLint location, GLsizei count, const GLfloat * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_FLOAT, 4); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_FLOAT, 4); } void GLAPIENTRY _mesa_Uniform1iv(GLint location, GLsizei count, const GLint * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_INT, 1); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT, 1); } void GLAPIENTRY _mesa_Uniform2iv(GLint location, GLsizei count, const GLint * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_INT, 2); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT, 2); } void GLAPIENTRY _mesa_Uniform3iv(GLint location, GLsizei count, const GLint * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_INT, 3); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT, 3); } void GLAPIENTRY _mesa_Uniform4iv(GLint location, GLsizei count, const GLint * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_INT, 4); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT, 4); } +void GLAPIENTRY +_mesa_UniformHandleui64ARB(GLint location, GLuint64 value) +{ + GET_CURRENT_CONTEXT(ctx); + _mesa_uniform_handle(location, 1, &value, ctx, ctx->_Shader->ActiveProgram); +} + +void GLAPIENTRY +_mesa_UniformHandleui64vARB(GLint location, GLsizei count, + const GLuint64 *value) +{ + GET_CURRENT_CONTEXT(ctx); + _mesa_uniform_handle(location, count, value, ctx, + ctx->_Shader->ActiveProgram); +} + + /** Same as above with direct state access **/ void GLAPIENTRY _mesa_ProgramUniform1f(GLuint program, GLint location, GLfloat v0) @@ -291,7 +341,7 @@ _mesa_ProgramUniform1f(GLuint program, GLint location, GLfloat v0) struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform1f"); - _mesa_uniform(ctx, shProg, location, 1, &v0, GLSL_TYPE_FLOAT, 1); + _mesa_uniform(location, 1, &v0, ctx, shProg, GLSL_TYPE_FLOAT, 1); } void GLAPIENTRY @@ -303,7 +353,7 @@ _mesa_ProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) v[0] = v0; v[1] = v1; shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2f"); - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_FLOAT, 2); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_FLOAT, 2); } void GLAPIENTRY @@ -317,7 +367,7 @@ _mesa_ProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, v[1] = v1; v[2] = v2; shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3f"); - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_FLOAT, 3); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_FLOAT, 3); } void GLAPIENTRY @@ -332,7 +382,7 @@ _mesa_ProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, v[2] = v2; v[3] = v3; shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4f"); - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_FLOAT, 4); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_FLOAT, 4); } void GLAPIENTRY @@ -342,7 +392,7 @@ _mesa_ProgramUniform1i(GLuint program, GLint location, GLint v0) struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform1i"); - _mesa_uniform(ctx, shProg, location, 1, &v0, GLSL_TYPE_INT, 1); + _mesa_uniform(location, 1, &v0, ctx, shProg, GLSL_TYPE_INT, 1); } void GLAPIENTRY @@ -354,7 +404,7 @@ _mesa_ProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) v[0] = v0; v[1] = v1; shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2i"); - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_INT, 2); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_INT, 2); } void GLAPIENTRY @@ -368,7 +418,7 @@ _mesa_ProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, v[1] = v1; v[2] = v2; shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3i"); - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_INT, 3); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_INT, 3); } void GLAPIENTRY @@ -383,7 +433,7 @@ _mesa_ProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, v[2] = v2; v[3] = v3; shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4i"); - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_INT, 4); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_INT, 4); } void GLAPIENTRY @@ -394,7 +444,7 @@ _mesa_ProgramUniform1fv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform1fv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_FLOAT, 1); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_FLOAT, 1); } void GLAPIENTRY @@ -405,7 +455,7 @@ _mesa_ProgramUniform2fv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2fv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_FLOAT, 2); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_FLOAT, 2); } void GLAPIENTRY @@ -416,7 +466,7 @@ _mesa_ProgramUniform3fv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3fv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_FLOAT, 3); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_FLOAT, 3); } void GLAPIENTRY @@ -427,7 +477,7 @@ _mesa_ProgramUniform4fv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4fv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_FLOAT, 4); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_FLOAT, 4); } void GLAPIENTRY @@ -438,7 +488,7 @@ _mesa_ProgramUniform1iv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform1iv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_INT, 1); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_INT, 1); } void GLAPIENTRY @@ -449,7 +499,7 @@ _mesa_ProgramUniform2iv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2iv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_INT, 2); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_INT, 2); } void GLAPIENTRY @@ -460,7 +510,7 @@ _mesa_ProgramUniform3iv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3iv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_INT, 3); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_INT, 3); } void GLAPIENTRY @@ -471,7 +521,29 @@ _mesa_ProgramUniform4iv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4iv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_INT, 4); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_INT, 4); +} + +void GLAPIENTRY +_mesa_ProgramUniformHandleui64ARB(GLuint program, GLint location, + GLuint64 value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniformHandleui64ARB"); + _mesa_uniform_handle(location, 1, &value, ctx, shProg); +} + +void GLAPIENTRY +_mesa_ProgramUniformHandleui64vARB(GLuint program, GLint location, + GLsizei count, const GLuint64 *values) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniformHandleui64vARB"); + _mesa_uniform_handle(location, count, values, ctx, shProg); } @@ -480,7 +552,7 @@ void GLAPIENTRY _mesa_Uniform1ui(GLint location, GLuint v0) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, &v0, GLSL_TYPE_UINT, 1); + _mesa_uniform(location, 1, &v0, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT, 1); } void GLAPIENTRY @@ -490,7 +562,7 @@ _mesa_Uniform2ui(GLint location, GLuint v0, GLuint v1) GLuint v[2]; v[0] = v0; v[1] = v1; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_UINT, 2); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT, 2); } void GLAPIENTRY @@ -501,7 +573,7 @@ _mesa_Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) v[0] = v0; v[1] = v1; v[2] = v2; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_UINT, 3); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT, 3); } void GLAPIENTRY @@ -513,35 +585,35 @@ _mesa_Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) v[1] = v1; v[2] = v2; v[3] = v3; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_UINT, 4); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT, 4); } void GLAPIENTRY _mesa_Uniform1uiv(GLint location, GLsizei count, const GLuint *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_UINT, 1); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT, 1); } void GLAPIENTRY _mesa_Uniform2uiv(GLint location, GLsizei count, const GLuint *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_UINT, 2); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT, 2); } void GLAPIENTRY _mesa_Uniform3uiv(GLint location, GLsizei count, const GLuint *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_UINT, 3); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT, 3); } void GLAPIENTRY _mesa_Uniform4uiv(GLint location, GLsizei count, const GLuint *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_UINT, 4); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT, 4); } @@ -582,7 +654,7 @@ _mesa_ProgramUniform1ui(GLuint program, GLint location, GLuint v0) struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform1ui"); - _mesa_uniform(ctx, shProg, location, 1, &v0, GLSL_TYPE_UINT, 1); + _mesa_uniform(location, 1, &v0, ctx, shProg, GLSL_TYPE_UINT, 1); } void GLAPIENTRY @@ -595,7 +667,7 @@ _mesa_ProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) v[1] = v1; shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2ui"); - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_UINT, 2); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_UINT, 2); } void GLAPIENTRY @@ -610,7 +682,7 @@ _mesa_ProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, v[2] = v2; shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3ui"); - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_UINT, 3); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_UINT, 3); } void GLAPIENTRY @@ -625,7 +697,7 @@ _mesa_ProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, v[2] = v2; v[3] = v3; shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4ui"); - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_UINT, 4); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_UINT, 4); } void GLAPIENTRY @@ -636,7 +708,7 @@ _mesa_ProgramUniform1uiv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform1uiv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_UINT, 1); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_UINT, 1); } void GLAPIENTRY @@ -647,7 +719,7 @@ _mesa_ProgramUniform2uiv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2uiv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_UINT, 2); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_UINT, 2); } void GLAPIENTRY @@ -658,7 +730,7 @@ _mesa_ProgramUniform3uiv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3uiv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_UINT, 3); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_UINT, 3); } void GLAPIENTRY @@ -669,7 +741,7 @@ _mesa_ProgramUniform4uiv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4uiv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_UINT, 4); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_UINT, 4); } @@ -933,7 +1005,7 @@ _mesa_GetUniformLocation(GLuint programObj, const GLcharARB *name) shProg = _mesa_lookup_shader_program_err(ctx, programObj, "glGetUniformLocation"); - if (!shProg) + if (!shProg || !name) return -1; /* Page 80 (page 94 of the PDF) of the OpenGL 2.1 spec says: @@ -941,7 +1013,7 @@ _mesa_GetUniformLocation(GLuint programObj, const GLcharARB *name) * "If program has not been successfully linked, the error * INVALID_OPERATION is generated." */ - if (shProg->data->LinkStatus == GL_FALSE) { + if (shProg->data->LinkStatus == LINKING_FAILURE) { _mesa_error(ctx, GL_INVALID_OPERATION, "glGetUniformLocation(program not linked)"); return -1; @@ -950,6 +1022,17 @@ _mesa_GetUniformLocation(GLuint programObj, const GLcharARB *name) return _mesa_program_resource_location(shProg, GL_UNIFORM, name); } +GLint GLAPIENTRY +_mesa_GetUniformLocation_no_error(GLuint programObj, const GLcharARB *name) +{ + GET_CURRENT_CONTEXT(ctx); + + struct gl_shader_program *shProg = + _mesa_lookup_shader_program(ctx, programObj); + + return _mesa_program_resource_location(shProg, GL_UNIFORM, name); +} + GLuint GLAPIENTRY _mesa_GetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) @@ -1010,6 +1093,31 @@ _mesa_GetUniformIndices(GLuint program, } } +static void +uniform_block_binding(struct gl_context *ctx, struct gl_shader_program *shProg, + GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + if (shProg->data->UniformBlocks[uniformBlockIndex].Binding != + uniformBlockBinding) { + + FLUSH_VERTICES(ctx, 0); + ctx->NewDriverState |= ctx->DriverFlags.NewUniformBuffer; + + shProg->data->UniformBlocks[uniformBlockIndex].Binding = + uniformBlockBinding; + } +} + +void GLAPIENTRY +_mesa_UniformBlockBinding_no_error(GLuint program, GLuint uniformBlockIndex, + GLuint uniformBlockBinding) +{ + GET_CURRENT_CONTEXT(ctx); + + struct gl_shader_program *shProg = _mesa_lookup_shader_program(ctx, program); + uniform_block_binding(ctx, shProg, uniformBlockIndex, uniformBlockBinding); +} + void GLAPIENTRY _mesa_UniformBlockBinding(GLuint program, GLuint uniformBlockIndex, @@ -1042,17 +1150,38 @@ _mesa_UniformBlockBinding(GLuint program, return; } - if (shProg->data->UniformBlocks[uniformBlockIndex].Binding != - uniformBlockBinding) { + uniform_block_binding(ctx, shProg, uniformBlockIndex, uniformBlockBinding); +} + +static void +shader_storage_block_binding(struct gl_context *ctx, + struct gl_shader_program *shProg, + GLuint shaderStorageBlockIndex, + GLuint shaderStorageBlockBinding) +{ + if (shProg->data->ShaderStorageBlocks[shaderStorageBlockIndex].Binding != + shaderStorageBlockBinding) { FLUSH_VERTICES(ctx, 0); - ctx->NewDriverState |= ctx->DriverFlags.NewUniformBuffer; + ctx->NewDriverState |= ctx->DriverFlags.NewShaderStorageBuffer; - shProg->data->UniformBlocks[uniformBlockIndex].Binding = - uniformBlockBinding; + shProg->data->ShaderStorageBlocks[shaderStorageBlockIndex].Binding = + shaderStorageBlockBinding; } } +void GLAPIENTRY +_mesa_ShaderStorageBlockBinding_no_error(GLuint program, + GLuint shaderStorageBlockIndex, + GLuint shaderStorageBlockBinding) +{ + GET_CURRENT_CONTEXT(ctx); + + struct gl_shader_program *shProg = _mesa_lookup_shader_program(ctx, program); + shader_storage_block_binding(ctx, shProg, shaderStorageBlockIndex, + shaderStorageBlockBinding); +} + void GLAPIENTRY _mesa_ShaderStorageBlockBinding(GLuint program, GLuint shaderStorageBlockIndex, @@ -1087,15 +1216,8 @@ _mesa_ShaderStorageBlockBinding(GLuint program, return; } - if (shProg->data->ShaderStorageBlocks[shaderStorageBlockIndex].Binding != - shaderStorageBlockBinding) { - - FLUSH_VERTICES(ctx, 0); - ctx->NewDriverState |= ctx->DriverFlags.NewShaderStorageBuffer; - - shProg->data->ShaderStorageBlocks[shaderStorageBlockIndex].Binding = - shaderStorageBlockBinding; - } + shader_storage_block_binding(ctx, shProg, shaderStorageBlockIndex, + shaderStorageBlockBinding); } /** @@ -1299,7 +1421,7 @@ void GLAPIENTRY _mesa_Uniform1d(GLint location, GLdouble v0) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, &v0, GLSL_TYPE_DOUBLE, 1); + _mesa_uniform(location, 1, &v0, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 1); } void GLAPIENTRY @@ -1309,7 +1431,7 @@ _mesa_Uniform2d(GLint location, GLdouble v0, GLdouble v1) GLdouble v[2]; v[0] = v0; v[1] = v1; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_DOUBLE, 2); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 2); } void GLAPIENTRY @@ -1320,7 +1442,7 @@ _mesa_Uniform3d(GLint location, GLdouble v0, GLdouble v1, GLdouble v2) v[0] = v0; v[1] = v1; v[2] = v2; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_DOUBLE, 3); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 3); } void GLAPIENTRY @@ -1333,35 +1455,35 @@ _mesa_Uniform4d(GLint location, GLdouble v0, GLdouble v1, GLdouble v2, v[1] = v1; v[2] = v2; v[3] = v3; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_DOUBLE, 4); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 4); } void GLAPIENTRY _mesa_Uniform1dv(GLint location, GLsizei count, const GLdouble * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_DOUBLE, 1); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 1); } void GLAPIENTRY _mesa_Uniform2dv(GLint location, GLsizei count, const GLdouble * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_DOUBLE, 2); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 2); } void GLAPIENTRY _mesa_Uniform3dv(GLint location, GLsizei count, const GLdouble * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_DOUBLE, 3); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 3); } void GLAPIENTRY _mesa_Uniform4dv(GLint location, GLsizei count, const GLdouble * value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_DOUBLE, 4); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_DOUBLE, 4); } void GLAPIENTRY @@ -1452,7 +1574,7 @@ _mesa_ProgramUniform1d(GLuint program, GLint location, GLdouble v0) struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform1d"); - _mesa_uniform(ctx, shProg, location, 1, &v0, GLSL_TYPE_DOUBLE, 1); + _mesa_uniform(location, 1, &v0, ctx, shProg, GLSL_TYPE_DOUBLE, 1); } void GLAPIENTRY @@ -1464,7 +1586,7 @@ _mesa_ProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) v[0] = v0; v[1] = v1; shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2d"); - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_DOUBLE, 2); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_DOUBLE, 2); } void GLAPIENTRY @@ -1478,7 +1600,7 @@ _mesa_ProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, v[1] = v1; v[2] = v2; shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3d"); - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_DOUBLE, 3); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_DOUBLE, 3); } void GLAPIENTRY @@ -1493,7 +1615,7 @@ _mesa_ProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, v[2] = v2; v[3] = v3; shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4d"); - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_DOUBLE, 4); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_DOUBLE, 4); } void GLAPIENTRY @@ -1504,7 +1626,7 @@ _mesa_ProgramUniform1dv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform1dv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_DOUBLE, 1); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_DOUBLE, 1); } void GLAPIENTRY @@ -1515,7 +1637,7 @@ _mesa_ProgramUniform2dv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2dv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_DOUBLE, 2); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_DOUBLE, 2); } void GLAPIENTRY @@ -1526,7 +1648,7 @@ _mesa_ProgramUniform3dv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3dv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_DOUBLE, 3); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_DOUBLE, 3); } void GLAPIENTRY @@ -1537,7 +1659,7 @@ _mesa_ProgramUniform4dv(GLuint program, GLint location, GLsizei count, struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4dv"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_DOUBLE, 4); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_DOUBLE, 4); } void GLAPIENTRY @@ -1652,7 +1774,7 @@ void GLAPIENTRY _mesa_Uniform1i64ARB(GLint location, GLint64 v0) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, &v0, GLSL_TYPE_INT64, 1); + _mesa_uniform(location, 1, &v0, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 1); } void GLAPIENTRY @@ -1662,7 +1784,7 @@ _mesa_Uniform2i64ARB(GLint location, GLint64 v0, GLint64 v1) int64_t v[2]; v[0] = v0; v[1] = v1; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_INT64, 2); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 2); } void GLAPIENTRY @@ -1673,7 +1795,7 @@ _mesa_Uniform3i64ARB(GLint location, GLint64 v0, GLint64 v1, GLint64 v2) v[0] = v0; v[1] = v1; v[2] = v2; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_INT64, 3); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 3); } void GLAPIENTRY @@ -1685,42 +1807,42 @@ _mesa_Uniform4i64ARB(GLint location, GLint64 v0, GLint64 v1, GLint64 v2, GLint6 v[1] = v1; v[2] = v2; v[3] = v3; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_INT64, 4); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 4); } void GLAPIENTRY _mesa_Uniform1i64vARB(GLint location, GLsizei count, const GLint64 *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_INT64, 1); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 1); } void GLAPIENTRY _mesa_Uniform2i64vARB(GLint location, GLsizei count, const GLint64 *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_INT64, 2); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 2); } void GLAPIENTRY _mesa_Uniform3i64vARB(GLint location, GLsizei count, const GLint64 *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_INT64, 3); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 3); } void GLAPIENTRY _mesa_Uniform4i64vARB(GLint location, GLsizei count, const GLint64 *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_INT64, 4); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_INT64, 4); } void GLAPIENTRY _mesa_Uniform1ui64ARB(GLint location, GLuint64 v0) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, &v0, GLSL_TYPE_UINT64, 1); + _mesa_uniform(location, 1, &v0, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 1); } void GLAPIENTRY @@ -1730,7 +1852,7 @@ _mesa_Uniform2ui64ARB(GLint location, GLuint64 v0, GLuint64 v1) uint64_t v[2]; v[0] = v0; v[1] = v1; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_UINT64, 2); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 2); } void GLAPIENTRY @@ -1741,7 +1863,7 @@ _mesa_Uniform3ui64ARB(GLint location, GLuint64 v0, GLuint64 v1, GLuint64 v2) v[0] = v0; v[1] = v1; v[2] = v2; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_UINT64, 3); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 3); } void GLAPIENTRY @@ -1753,35 +1875,35 @@ _mesa_Uniform4ui64ARB(GLint location, GLuint64 v0, GLuint64 v1, GLuint64 v2, GL v[1] = v1; v[2] = v2; v[3] = v3; - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, 1, v, GLSL_TYPE_UINT64, 4); + _mesa_uniform(location, 1, v, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 4); } void GLAPIENTRY _mesa_Uniform1ui64vARB(GLint location, GLsizei count, const GLuint64 *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_UINT64, 1); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 1); } void GLAPIENTRY _mesa_Uniform2ui64vARB(GLint location, GLsizei count, const GLuint64 *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_UINT64, 2); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 2); } void GLAPIENTRY _mesa_Uniform3ui64vARB(GLint location, GLsizei count, const GLuint64 *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_UINT64, 3); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 3); } void GLAPIENTRY _mesa_Uniform4ui64vARB(GLint location, GLsizei count, const GLuint64 *value) { GET_CURRENT_CONTEXT(ctx); - _mesa_uniform(ctx, ctx->_Shader->ActiveProgram, location, count, value, GLSL_TYPE_UINT64, 4); + _mesa_uniform(location, count, value, ctx, ctx->_Shader->ActiveProgram, GLSL_TYPE_UINT64, 4); } /* DSA entrypoints */ @@ -1792,7 +1914,7 @@ _mesa_ProgramUniform1i64ARB(GLuint program, GLint location, GLint64 v0) struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform1i64ARB"); - _mesa_uniform(ctx, shProg, location, 1, &v0, GLSL_TYPE_INT64, 1); + _mesa_uniform(location, 1, &v0, ctx, shProg, GLSL_TYPE_INT64, 1); } void GLAPIENTRY @@ -1805,7 +1927,7 @@ _mesa_ProgramUniform2i64ARB(GLuint program, GLint location, GLint64 v0, GLint64 int64_t v[2]; v[0] = v0; v[1] = v1; - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_INT64, 2); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_INT64, 2); } void GLAPIENTRY @@ -1819,7 +1941,7 @@ _mesa_ProgramUniform3i64ARB(GLuint program, GLint location, GLint64 v0, GLint64 v[0] = v0; v[1] = v1; v[2] = v2; - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_INT64, 3); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_INT64, 3); } void GLAPIENTRY @@ -1834,7 +1956,7 @@ _mesa_ProgramUniform4i64ARB(GLuint program, GLint location, GLint64 v0, GLint64 v[1] = v1; v[2] = v2; v[3] = v3; - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_INT64, 4); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_INT64, 4); } void GLAPIENTRY @@ -1844,7 +1966,7 @@ _mesa_ProgramUniform1i64vARB(GLuint program, GLint location, GLsizei count, cons struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform1i64vARB"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_INT64, 1); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_INT64, 1); } void GLAPIENTRY @@ -1854,7 +1976,7 @@ _mesa_ProgramUniform2i64vARB(GLuint program, GLint location, GLsizei count, con struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2i64vARB"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_INT64, 2); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_INT64, 2); } void GLAPIENTRY @@ -1864,7 +1986,7 @@ _mesa_ProgramUniform3i64vARB(GLuint program, GLint location, GLsizei count, con struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3i64vARB"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_INT64, 3); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_INT64, 3); } void GLAPIENTRY @@ -1874,7 +1996,7 @@ _mesa_ProgramUniform4i64vARB(GLuint program, GLint location, GLsizei count, con struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4i64vARB"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_INT64, 4); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_INT64, 4); } void GLAPIENTRY @@ -1884,7 +2006,7 @@ _mesa_ProgramUniform1ui64ARB(GLuint program, GLint location, GLuint64 v0) struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform1ui64ARB"); - _mesa_uniform(ctx, shProg, location, 1, &v0, GLSL_TYPE_UINT64, 1); + _mesa_uniform(location, 1, &v0, ctx, shProg, GLSL_TYPE_UINT64, 1); } void GLAPIENTRY @@ -1897,7 +2019,7 @@ _mesa_ProgramUniform2ui64ARB(GLuint program, GLint location, GLuint64 v0, GLuin uint64_t v[2]; v[0] = v0; v[1] = v1; - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_UINT64, 2); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_UINT64, 2); } void GLAPIENTRY @@ -1911,7 +2033,7 @@ _mesa_ProgramUniform3ui64ARB(GLuint program, GLint location, GLuint64 v0, GLuint v[0] = v0; v[1] = v1; v[2] = v2; - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_UINT64, 3); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_UINT64, 3); } void GLAPIENTRY @@ -1926,7 +2048,7 @@ _mesa_ProgramUniform4ui64ARB(GLuint program, GLint location, GLuint64 v0, GLuin v[1] = v1; v[2] = v2; v[3] = v3; - _mesa_uniform(ctx, shProg, location, 1, v, GLSL_TYPE_UINT64, 4); + _mesa_uniform(location, 1, v, ctx, shProg, GLSL_TYPE_UINT64, 4); } void GLAPIENTRY @@ -1936,7 +2058,7 @@ _mesa_ProgramUniform1ui64vARB(GLuint program, GLint location, GLsizei count, co struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform1ui64vARB"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_UINT64, 1); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_UINT64, 1); } void GLAPIENTRY @@ -1946,7 +2068,7 @@ _mesa_ProgramUniform2ui64vARB(GLuint program, GLint location, GLsizei count, co struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2ui64vARB"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_UINT64, 2); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_UINT64, 2); } void GLAPIENTRY @@ -1956,7 +2078,7 @@ _mesa_ProgramUniform3ui64vARB(GLuint program, GLint location, GLsizei count, co struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3ui64vARB"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_UINT64, 3); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_UINT64, 3); } void GLAPIENTRY @@ -1966,5 +2088,5 @@ _mesa_ProgramUniform4ui64vARB(GLuint program, GLint location, GLsizei count, co struct gl_shader_program *shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4ui64vARB"); - _mesa_uniform(ctx, shProg, location, count, value, GLSL_TYPE_UINT64, 4); + _mesa_uniform(location, count, value, ctx, shProg, GLSL_TYPE_UINT64, 4); }