mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 02:30:12 +01:00
mesa: add EXT_dsa + EXT_gpu_program_parameters functions
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
78b65343e8
commit
a4e935f2d7
5 changed files with 56 additions and 15 deletions
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -1592,6 +1592,7 @@ offsets = {
|
||||||
"MultiTexParameterIuivEXT": 1556,
|
"MultiTexParameterIuivEXT": 1556,
|
||||||
"GetMultiTexParameterIivEXT": 1557,
|
"GetMultiTexParameterIivEXT": 1557,
|
||||||
"GetMultiTexParameterIuivEXT": 1558,
|
"GetMultiTexParameterIuivEXT": 1558,
|
||||||
|
"NamedProgramLocalParameters4fvEXT": 1559,
|
||||||
}
|
}
|
||||||
|
|
||||||
functions = [
|
functions = [
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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 },
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue