diff --git a/src/mapi/glapi/gen/ARB_gpu_shader_fp64.xml b/src/mapi/glapi/gen/ARB_gpu_shader_fp64.xml
new file mode 100644
index 00000000000..4f860ef8c69
--- /dev/null
+++ b/src/mapi/glapi/gen/ARB_gpu_shader_fp64.xml
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mapi/glapi/gen/ARB_separate_shader_objects.xml b/src/mapi/glapi/gen/ARB_separate_shader_objects.xml
index d006917af70..96ae2b9cb62 100644
--- a/src/mapi/glapi/gen/ARB_separate_shader_objects.xml
+++ b/src/mapi/glapi/gen/ARB_separate_shader_objects.xml
@@ -282,7 +282,6 @@
-
diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am
index 28973c49f1c..1c4b86aab6f 100644
--- a/src/mapi/glapi/gen/Makefile.am
+++ b/src/mapi/glapi/gen/Makefile.am
@@ -132,6 +132,7 @@ API_XML = \
ARB_framebuffer_object.xml \
ARB_geometry_shader4.xml \
ARB_get_program_binary.xml \
+ ARB_gpu_shader_fp64.xml \
ARB_gpu_shader5.xml \
ARB_instanced_arrays.xml \
ARB_internalformat_query.xml \
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index 41b34014f1d..1ceb60a0f0c 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -8213,6 +8213,8 @@
+
+
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
index 1f1a3a842c6..c14ad32eb3e 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -669,24 +669,24 @@ const struct function gl_core_functions_possible[] = {
{ "glVertexAttribP4uiv", 43, -1 },
{ "glDrawArraysIndirect", 43, -1 },
{ "glDrawElementsIndirect", 43, -1 },
-// { "glUniform1d", 43, -1 }, // XXX: Add to xml
-// { "glUniform2d", 43, -1 }, // XXX: Add to xml
-// { "glUniform3d", 43, -1 }, // XXX: Add to xml
-// { "glUniform4d", 43, -1 }, // XXX: Add to xml
-// { "glUniform1dv", 43, -1 }, // XXX: Add to xml
-// { "glUniform2dv", 43, -1 }, // XXX: Add to xml
-// { "glUniform3dv", 43, -1 }, // XXX: Add to xml
-// { "glUniform4dv", 43, -1 }, // XXX: Add to xml
-// { "glUniformMatrix2dv", 43, -1 }, // XXX: Add to xml
-// { "glUniformMatrix3dv", 43, -1 }, // XXX: Add to xml
-// { "glUniformMatrix4dv", 43, -1 }, // XXX: Add to xml
-// { "glUniformMatrix2x3dv", 43, -1 }, // XXX: Add to xml
-// { "glUniformMatrix2x4dv", 43, -1 }, // XXX: Add to xml
-// { "glUniformMatrix3x2dv", 43, -1 }, // XXX: Add to xml
-// { "glUniformMatrix3x4dv", 43, -1 }, // XXX: Add to xml
-// { "glUniformMatrix4x2dv", 43, -1 }, // XXX: Add to xml
-// { "glUniformMatrix4x3dv", 43, -1 }, // XXX: Add to xml
-// { "glGetUniformdv", 43, -1 }, // XXX: Add to xml
+ { "glUniform1d", 40, -1 },
+ { "glUniform2d", 40, -1 },
+ { "glUniform3d", 40, -1 },
+ { "glUniform4d", 40, -1 },
+ { "glUniform1dv", 40, -1 },
+ { "glUniform2dv", 40, -1 },
+ { "glUniform3dv", 40, -1 },
+ { "glUniform4dv", 40, -1 },
+ { "glUniformMatrix2dv", 40, -1 },
+ { "glUniformMatrix3dv", 40, -1 },
+ { "glUniformMatrix4dv", 40, -1 },
+ { "glUniformMatrix2x3dv", 40, -1 },
+ { "glUniformMatrix2x4dv", 40, -1 },
+ { "glUniformMatrix3x2dv", 40, -1 },
+ { "glUniformMatrix3x4dv", 40, -1 },
+ { "glUniformMatrix4x2dv", 40, -1 },
+ { "glUniformMatrix4x3dv", 40, -1 },
+ { "glGetUniformdv", 43, -1 },
// { "glGetSubroutineUniformLocation", 43, -1 }, // XXX: Add to xml
// { "glGetSubroutineIndex", 43, -1 }, // XXX: Add to xml
// { "glGetActiveSubroutineUniformiv", 43, -1 }, // XXX: Add to xml
@@ -728,52 +728,52 @@ const struct function gl_core_functions_possible[] = {
{ "glProgramUniform1iv", 43, -1 },
{ "glProgramUniform1f", 43, -1 },
{ "glProgramUniform1fv", 43, -1 },
-// { "glProgramUniform1d", 43, -1 }, // XXX: Add to xml
-// { "glProgramUniform1dv", 43, -1 }, // XXX: Add to xml
+ { "glProgramUniform1d", 40, -1 },
+ { "glProgramUniform1dv", 40, -1 },
{ "glProgramUniform1ui", 43, -1 },
{ "glProgramUniform1uiv", 43, -1 },
{ "glProgramUniform2i", 43, -1 },
{ "glProgramUniform2iv", 43, -1 },
{ "glProgramUniform2f", 43, -1 },
{ "glProgramUniform2fv", 43, -1 },
-// { "glProgramUniform2d", 43, -1 }, // XXX: Add to xml
-// { "glProgramUniform2dv", 43, -1 }, // XXX: Add to xml
+ { "glProgramUniform2d", 40, -1 },
+ { "glProgramUniform2dv", 40, -1 },
{ "glProgramUniform2ui", 43, -1 },
{ "glProgramUniform2uiv", 43, -1 },
{ "glProgramUniform3i", 43, -1 },
{ "glProgramUniform3iv", 43, -1 },
{ "glProgramUniform3f", 43, -1 },
{ "glProgramUniform3fv", 43, -1 },
-// { "glProgramUniform3d", 43, -1 }, // XXX: Add to xml
-// { "glProgramUniform3dv", 43, -1 }, // XXX: Add to xml
+ { "glProgramUniform3d", 40, -1 },
+ { "glProgramUniform3dv", 40, -1 },
{ "glProgramUniform3ui", 43, -1 },
{ "glProgramUniform3uiv", 43, -1 },
{ "glProgramUniform4i", 43, -1 },
{ "glProgramUniform4iv", 43, -1 },
{ "glProgramUniform4f", 43, -1 },
{ "glProgramUniform4fv", 43, -1 },
-// { "glProgramUniform4d", 43, -1 }, // XXX: Add to xml
-// { "glProgramUniform4dv", 43, -1 }, // XXX: Add to xml
+ { "glProgramUniform4d", 40, -1 },
+ { "glProgramUniform4dv", 40, -1 },
{ "glProgramUniform4ui", 43, -1 },
{ "glProgramUniform4uiv", 43, -1 },
{ "glProgramUniformMatrix2fv", 43, -1 },
{ "glProgramUniformMatrix3fv", 43, -1 },
{ "glProgramUniformMatrix4fv", 43, -1 },
-// { "glProgramUniformMatrix2dv", 43, -1 }, // XXX: Add to xml
-// { "glProgramUniformMatrix3dv", 43, -1 }, // XXX: Add to xml
-// { "glProgramUniformMatrix4dv", 43, -1 }, // XXX: Add to xml
+ { "glProgramUniformMatrix2dv", 40, -1 },
+ { "glProgramUniformMatrix3dv", 40, -1 },
+ { "glProgramUniformMatrix4dv", 40, -1 },
{ "glProgramUniformMatrix2x3fv", 43, -1 },
{ "glProgramUniformMatrix3x2fv", 43, -1 },
{ "glProgramUniformMatrix2x4fv", 43, -1 },
{ "glProgramUniformMatrix4x2fv", 43, -1 },
{ "glProgramUniformMatrix3x4fv", 43, -1 },
{ "glProgramUniformMatrix4x3fv", 43, -1 },
-// { "glProgramUniformMatrix2x3dv", 43, -1 }, // XXX: Add to xml
-// { "glProgramUniformMatrix3x2dv", 43, -1 }, // XXX: Add to xml
-// { "glProgramUniformMatrix2x4dv", 43, -1 }, // XXX: Add to xml
-// { "glProgramUniformMatrix4x2dv", 43, -1 }, // XXX: Add to xml
-// { "glProgramUniformMatrix3x4dv", 43, -1 }, // XXX: Add to xml
-// { "glProgramUniformMatrix4x3dv", 43, -1 }, // XXX: Add to xml
+ { "glProgramUniformMatrix2x3dv", 40, -1 },
+ { "glProgramUniformMatrix3x2dv", 40, -1 },
+ { "glProgramUniformMatrix2x4dv", 40, -1 },
+ { "glProgramUniformMatrix4x2dv", 40, -1 },
+ { "glProgramUniformMatrix3x4dv", 40, -1 },
+ { "glProgramUniformMatrix4x3dv", 40, -1 },
{ "glValidateProgramPipeline", 43, -1 },
{ "glGetProgramPipelineInfoLog", 43, -1 },
// { "glVertexAttribL1d", 43, -1 }, // XXX: Add to xml
diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c
index d2d70e7f7a0..4e3c1abd920 100644
--- a/src/mesa/main/uniforms.c
+++ b/src/mesa/main/uniforms.c
@@ -1338,3 +1338,198 @@ _mesa_GetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex,
return;
}
}
+
+void GLAPIENTRY
+_mesa_Uniform1d(GLint location, GLdouble v0)
+{
+}
+
+void GLAPIENTRY
+_mesa_Uniform2d(GLint location, GLdouble v0, GLdouble v1)
+{
+}
+
+void GLAPIENTRY
+_mesa_Uniform3d(GLint location, GLdouble v0, GLdouble v1, GLdouble v2)
+{
+}
+
+void GLAPIENTRY
+_mesa_Uniform4d(GLint location, GLdouble v0, GLdouble v1, GLdouble v2,
+ GLdouble v3)
+{
+}
+
+void GLAPIENTRY
+_mesa_Uniform1dv(GLint location, GLsizei count, const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_Uniform2dv(GLint location, GLsizei count, const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_Uniform3dv(GLint location, GLsizei count, const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_Uniform4dv(GLint location, GLsizei count, const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_UniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_UniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_UniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_UniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble *value)
+{
+}
+
+void GLAPIENTRY
+_mesa_UniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble *value)
+{
+}
+
+void GLAPIENTRY
+_mesa_UniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble *value)
+{
+}
+
+void GLAPIENTRY
+_mesa_UniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble *value)
+{
+}
+
+void GLAPIENTRY
+_mesa_UniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble *value)
+{
+}
+
+void GLAPIENTRY
+_mesa_UniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble *value)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform1d(GLuint program, GLint location, GLdouble v0)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1,
+ GLdouble v2)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1,
+ GLdouble v2, GLdouble v3)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform1dv(GLuint program, GLint location, GLsizei count,
+ const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform2dv(GLuint program, GLint location, GLsizei count,
+ const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform3dv(GLuint program, GLint location, GLsizei count,
+ const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform4dv(GLuint program, GLint location, GLsizei count,
+ const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble * value)
+{
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble * value)
+{
+}
diff --git a/src/mesa/main/uniforms.h b/src/mesa/main/uniforms.h
index 0a9ee7de92c..520fbbf7887 100644
--- a/src/mesa/main/uniforms.h
+++ b/src/mesa/main/uniforms.h
@@ -254,6 +254,95 @@ _mesa_GetActiveUniformsiv(GLuint program,
void GLAPIENTRY
_mesa_GetUniformiv(GLuint, GLint, GLint *);
+void GLAPIENTRY
+_mesa_Uniform1d(GLint, GLdouble);
+void GLAPIENTRY
+_mesa_Uniform2d(GLint, GLdouble, GLdouble);
+void GLAPIENTRY
+_mesa_Uniform3d(GLint, GLdouble, GLdouble, GLdouble);
+void GLAPIENTRY
+_mesa_Uniform4d(GLint, GLdouble, GLdouble, GLdouble, GLdouble);
+
+void GLAPIENTRY
+_mesa_Uniform1dv(GLint, GLsizei, const GLdouble *);
+void GLAPIENTRY
+_mesa_Uniform2dv(GLint, GLsizei, const GLdouble *);
+void GLAPIENTRY
+_mesa_Uniform3dv(GLint, GLsizei, const GLdouble *);
+void GLAPIENTRY
+_mesa_Uniform4dv(GLint, GLsizei, const GLdouble *);
+
+void GLAPIENTRY
+_mesa_UniformMatrix2dv(GLint, GLsizei, GLboolean, const GLdouble *);
+void GLAPIENTRY
+_mesa_UniformMatrix3dv(GLint, GLsizei, GLboolean, const GLdouble *);
+void GLAPIENTRY
+_mesa_UniformMatrix4dv(GLint, GLsizei, GLboolean, const GLdouble *);
+void GLAPIENTRY
+_mesa_UniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble *value);
+void GLAPIENTRY
+_mesa_UniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble *value);
+void GLAPIENTRY
+_mesa_UniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble *value);
+void GLAPIENTRY
+_mesa_UniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble *value);
+void GLAPIENTRY
+_mesa_UniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble *value);
+void GLAPIENTRY
+_mesa_UniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose,
+ const GLdouble *value);
+
+void GLAPIENTRY
+_mesa_ProgramUniform1d(GLuint program, GLint, GLdouble);
+void GLAPIENTRY
+_mesa_ProgramUniform2d(GLuint program, GLint, GLdouble, GLdouble);
+void GLAPIENTRY
+_mesa_ProgramUniform3d(GLuint program, GLint, GLdouble, GLdouble, GLdouble);
+void GLAPIENTRY
+_mesa_ProgramUniform4d(GLuint program, GLint, GLdouble, GLdouble, GLdouble, GLdouble);
+
+void GLAPIENTRY
+_mesa_ProgramUniform1dv(GLuint program, GLint, GLsizei, const GLdouble *);
+void GLAPIENTRY
+_mesa_ProgramUniform2dv(GLuint program, GLint, GLsizei, const GLdouble *);
+void GLAPIENTRY
+_mesa_ProgramUniform3dv(GLuint program, GLint, GLsizei, const GLdouble *);
+void GLAPIENTRY
+_mesa_ProgramUniform4dv(GLuint program, GLint, GLsizei, const GLdouble *);
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix2dv(GLuint program, GLint, GLsizei, GLboolean,
+ const GLdouble *);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix3dv(GLuint program, GLint, GLsizei, GLboolean,
+ const GLdouble *);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix4dv(GLuint program, GLint, GLsizei, GLboolean,
+ const GLdouble *);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble *value);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble *value);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble *value);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble *value);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble *value);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLdouble *value);
+
long
_mesa_parse_program_resource_name(const GLchar *name,
const GLchar **out_base_name_end);