summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPierre-Eric Pelloux-Prayer <[email protected]>2019-09-09 17:26:30 +0200
committerPierre-Eric Pelloux-Prayer <[email protected]>2019-10-18 10:26:26 +0200
commita4e935f2d70304a89104157378a4033ba10cd3e0 (patch)
tree54ea483ec003a18ccb4c3adbbf0c05780afba006 /src
parent78b65343e85accface55b60ee26d46df4933afa9 (diff)
mesa: add EXT_dsa + EXT_gpu_program_parameters functions
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/mapi/glapi/gen/EXT_direct_state_access.xml10
-rw-r--r--src/mapi/glapi/gen/static_data.py1
-rw-r--r--src/mesa/main/arbprogram.c55
-rw-r--r--src/mesa/main/arbprogram.h3
-rw-r--r--src/mesa/main/tests/dispatch_sanity.cpp2
5 files changed, 56 insertions, 15 deletions
diff --git a/src/mapi/glapi/gen/EXT_direct_state_access.xml b/src/mapi/glapi/gen/EXT_direct_state_access.xml
index 4e1bd241ee0..bf900eb9306 100644
--- a/src/mapi/glapi/gen/EXT_direct_state_access.xml
+++ b/src/mapi/glapi/gen/EXT_direct_state_access.xml
@@ -1162,5 +1162,15 @@
ProgramUniform*EXT functions are added in EXT_separate_shader_objects.xml
-->
+ <!-- EXT_gpu_program_parameters -->
+
+ <function name="NamedProgramLocalParameters4fvEXT">
+ <param name="program" type="GLuint" />
+ <param name="target" type="GLenum" />
+ <param name="index" type="GLuint" />
+ <param name="count" type="GLsizei" />
+ <param name="params" type="const GLfloat*" />
+ </function>
+
</category>
</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/static_data.py b/src/mapi/glapi/gen/static_data.py
index 938acbc0191..f4ad5da6f3e 100644
--- a/src/mapi/glapi/gen/static_data.py
+++ b/src/mapi/glapi/gen/static_data.py
@@ -1592,6 +1592,7 @@ offsets = {
"MultiTexParameterIuivEXT": 1556,
"GetMultiTexParameterIivEXT": 1557,
"GetMultiTexParameterIuivEXT": 1558,
+ "NamedProgramLocalParameters4fvEXT": 1559,
}
functions = [
diff --git a/src/mesa/main/arbprogram.c b/src/mesa/main/arbprogram.c
index 062052b5061..ac7aa49213e 100644
--- a/src/mesa/main/arbprogram.c
+++ b/src/mesa/main/arbprogram.c
@@ -680,32 +680,28 @@ _mesa_NamedProgramLocalParameter4fvEXT(GLuint program, GLenum target, GLuint ind
}
-void GLAPIENTRY
-_mesa_ProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count,
- const GLfloat *params)
+static void
+program_local_parameters4fv(struct gl_program* prog, GLuint index, GLsizei count,
+ const GLfloat *params, const char* caller)
{
GET_CURRENT_CONTEXT(ctx);
GLfloat *dest;
- struct gl_program* prog = get_current_program(ctx, target, "glProgramLocalParameters4fv");
- if (!prog) {
- return;
- }
-
- flush_vertices_for_program_constants(ctx, target);
+ flush_vertices_for_program_constants(ctx, prog->Target);
if (count <= 0) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glProgramLocalParameters4fv(count)");
+ _mesa_error(ctx, GL_INVALID_VALUE, "%s(count)", caller);
}
- if (get_local_param_pointer(ctx, "glProgramLocalParameters4fvEXT",
- prog, target, index, &dest)) {
- GLuint maxParams = target == GL_FRAGMENT_PROGRAM_ARB ?
+ if (get_local_param_pointer(ctx, caller,
+ prog, prog->Target, index, &dest)) {
+ GLuint maxParams = prog->Target == GL_FRAGMENT_PROGRAM_ARB ?
ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxLocalParams :
ctx->Const.Program[MESA_SHADER_VERTEX].MaxLocalParams;
if ((index + count) > maxParams) {
_mesa_error(ctx, GL_INVALID_VALUE,
- "glProgramLocalParameters4fvEXT(index + count)");
+ "%s(index + count)",
+ caller);
return;
}
@@ -715,6 +711,37 @@ _mesa_ProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count,
void GLAPIENTRY
+_mesa_ProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count,
+ const GLfloat *params)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_program* prog = get_current_program(ctx, target,
+ "glProgramLocalParameters4fv");
+ if (!prog) {
+ return;
+ }
+
+ program_local_parameters4fv(prog, index, count, params,
+ "glProgramLocalParameters4fv");
+}
+
+void GLAPIENTRY
+_mesa_NamedProgramLocalParameters4fvEXT(GLuint program, GLenum target, GLuint index,
+ GLsizei count, const GLfloat *params)
+{
+ struct gl_program* prog =
+ lookup_or_create_program(program, target,
+ "glNamedProgramLocalParameters4fvEXT");
+ if (!prog) {
+ return;
+ }
+
+ program_local_parameters4fv(prog, index, count, params,
+ "glNamedProgramLocalParameters4fvEXT");
+}
+
+
+void GLAPIENTRY
_mesa_ProgramLocalParameter4dARB(GLenum target, GLuint index,
GLdouble x, GLdouble y,
GLdouble z, GLdouble w)
diff --git a/src/mesa/main/arbprogram.h b/src/mesa/main/arbprogram.h
index 0a86e9d5e18..d7fa15ba570 100644
--- a/src/mesa/main/arbprogram.h
+++ b/src/mesa/main/arbprogram.h
@@ -121,6 +121,9 @@ extern void GLAPIENTRY
_mesa_ProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count,
const GLfloat *params);
+extern void GLAPIENTRY
+_mesa_NamedProgramLocalParameters4fvEXT(GLuint program, GLenum target, GLuint index,
+ GLsizei count, const GLfloat *params);
extern void GLAPIENTRY
_mesa_GetProgramEnvParameterdvARB(GLenum target, GLuint index,
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
index b87f2e298e6..6782e7504d6 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -1151,7 +1151,7 @@ const struct function common_desktop_functions_possible[] = {
/* GL_EXT_direct_state_access - EXT_gpu_shader4 */
/* Added glProgramUniform*u*EXT functions are aliases */
/* GL_EXT_direct_state_access - EXT_gpu_program_parameters */
- //{ "glNamedProgramLocalParameters4fvEXT", 10, -1 },
+ { "glNamedProgramLocalParameters4fvEXT", 10, -1 },
/* GL_EXT_direct_state_access - GL 3.0 */
//{ "glGetFloati_vEXT", 30, -1 },
//{ "glGetDoublei_vEXT", 30, -1 },