mesa: add EXT_dsa + EXT_gpu_program_parameters functions

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Pierre-Eric Pelloux-Prayer 2019-09-09 17:26:30 +02:00
parent 78b65343e8
commit a4e935f2d7
5 changed files with 56 additions and 15 deletions

View file

@ -1162,5 +1162,15 @@
ProgramUniform*EXT functions are added in EXT_separate_shader_objects.xml 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> </category>
</OpenGLAPI> </OpenGLAPI>

View file

@ -1592,6 +1592,7 @@ offsets = {
"MultiTexParameterIuivEXT": 1556, "MultiTexParameterIuivEXT": 1556,
"GetMultiTexParameterIivEXT": 1557, "GetMultiTexParameterIivEXT": 1557,
"GetMultiTexParameterIuivEXT": 1558, "GetMultiTexParameterIuivEXT": 1558,
"NamedProgramLocalParameters4fvEXT": 1559,
} }
functions = [ functions = [

View file

@ -680,32 +680,28 @@ _mesa_NamedProgramLocalParameter4fvEXT(GLuint program, GLenum target, GLuint ind
} }
void GLAPIENTRY static void
_mesa_ProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count, program_local_parameters4fv(struct gl_program* prog, GLuint index, GLsizei count,
const GLfloat *params) const GLfloat *params, const char* caller)
{ {
GET_CURRENT_CONTEXT(ctx); GET_CURRENT_CONTEXT(ctx);
GLfloat *dest; GLfloat *dest;
struct gl_program* prog = get_current_program(ctx, target, "glProgramLocalParameters4fv"); flush_vertices_for_program_constants(ctx, prog->Target);
if (!prog) {
return;
}
flush_vertices_for_program_constants(ctx, target);
if (count <= 0) { 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", if (get_local_param_pointer(ctx, caller,
prog, target, index, &dest)) { prog, prog->Target, index, &dest)) {
GLuint maxParams = target == GL_FRAGMENT_PROGRAM_ARB ? GLuint maxParams = prog->Target == GL_FRAGMENT_PROGRAM_ARB ?
ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxLocalParams : ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxLocalParams :
ctx->Const.Program[MESA_SHADER_VERTEX].MaxLocalParams; ctx->Const.Program[MESA_SHADER_VERTEX].MaxLocalParams;
if ((index + count) > maxParams) { if ((index + count) > maxParams) {
_mesa_error(ctx, GL_INVALID_VALUE, _mesa_error(ctx, GL_INVALID_VALUE,
"glProgramLocalParameters4fvEXT(index + count)"); "%s(index + count)",
caller);
return; return;
} }
@ -714,6 +710,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 void GLAPIENTRY
_mesa_ProgramLocalParameter4dARB(GLenum target, GLuint index, _mesa_ProgramLocalParameter4dARB(GLenum target, GLuint index,
GLdouble x, GLdouble y, GLdouble x, GLdouble y,

View file

@ -121,6 +121,9 @@ extern void GLAPIENTRY
_mesa_ProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count, _mesa_ProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count,
const GLfloat *params); const GLfloat *params);
extern void GLAPIENTRY
_mesa_NamedProgramLocalParameters4fvEXT(GLuint program, GLenum target, GLuint index,
GLsizei count, const GLfloat *params);
extern void GLAPIENTRY extern void GLAPIENTRY
_mesa_GetProgramEnvParameterdvARB(GLenum target, GLuint index, _mesa_GetProgramEnvParameterdvARB(GLenum target, GLuint index,

View file

@ -1151,7 +1151,7 @@ const struct function common_desktop_functions_possible[] = {
/* GL_EXT_direct_state_access - EXT_gpu_shader4 */ /* GL_EXT_direct_state_access - EXT_gpu_shader4 */
/* Added glProgramUniform*u*EXT functions are aliases */ /* Added glProgramUniform*u*EXT functions are aliases */
/* GL_EXT_direct_state_access - EXT_gpu_program_parameters */ /* GL_EXT_direct_state_access - EXT_gpu_program_parameters */
//{ "glNamedProgramLocalParameters4fvEXT", 10, -1 }, { "glNamedProgramLocalParameters4fvEXT", 10, -1 },
/* GL_EXT_direct_state_access - GL 3.0 */ /* GL_EXT_direct_state_access - GL 3.0 */
//{ "glGetFloati_vEXT", 30, -1 }, //{ "glGetFloati_vEXT", 30, -1 },
//{ "glGetDoublei_vEXT", 30, -1 }, //{ "glGetDoublei_vEXT", 30, -1 },