sso: Add display list support for ARB_separate_shader_objects new functions
With this patch, the piglit arb_separate_shader_object-dlist test passes. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
7ff937e579
commit
0939d3d097
|
@ -364,6 +364,42 @@ typedef enum
|
|||
OPCODE_UNIFORM_3UIV,
|
||||
OPCODE_UNIFORM_4UIV,
|
||||
|
||||
/* OpenGL 4.2 / GL_ARB_separate_shader_objects */
|
||||
OPCODE_USE_PROGRAM_STAGES,
|
||||
OPCODE_PROGRAM_UNIFORM_1F,
|
||||
OPCODE_PROGRAM_UNIFORM_2F,
|
||||
OPCODE_PROGRAM_UNIFORM_3F,
|
||||
OPCODE_PROGRAM_UNIFORM_4F,
|
||||
OPCODE_PROGRAM_UNIFORM_1FV,
|
||||
OPCODE_PROGRAM_UNIFORM_2FV,
|
||||
OPCODE_PROGRAM_UNIFORM_3FV,
|
||||
OPCODE_PROGRAM_UNIFORM_4FV,
|
||||
OPCODE_PROGRAM_UNIFORM_1I,
|
||||
OPCODE_PROGRAM_UNIFORM_2I,
|
||||
OPCODE_PROGRAM_UNIFORM_3I,
|
||||
OPCODE_PROGRAM_UNIFORM_4I,
|
||||
OPCODE_PROGRAM_UNIFORM_1IV,
|
||||
OPCODE_PROGRAM_UNIFORM_2IV,
|
||||
OPCODE_PROGRAM_UNIFORM_3IV,
|
||||
OPCODE_PROGRAM_UNIFORM_4IV,
|
||||
OPCODE_PROGRAM_UNIFORM_1UI,
|
||||
OPCODE_PROGRAM_UNIFORM_2UI,
|
||||
OPCODE_PROGRAM_UNIFORM_3UI,
|
||||
OPCODE_PROGRAM_UNIFORM_4UI,
|
||||
OPCODE_PROGRAM_UNIFORM_1UIV,
|
||||
OPCODE_PROGRAM_UNIFORM_2UIV,
|
||||
OPCODE_PROGRAM_UNIFORM_3UIV,
|
||||
OPCODE_PROGRAM_UNIFORM_4UIV,
|
||||
OPCODE_PROGRAM_UNIFORM_MATRIX22F,
|
||||
OPCODE_PROGRAM_UNIFORM_MATRIX33F,
|
||||
OPCODE_PROGRAM_UNIFORM_MATRIX44F,
|
||||
OPCODE_PROGRAM_UNIFORM_MATRIX23F,
|
||||
OPCODE_PROGRAM_UNIFORM_MATRIX32F,
|
||||
OPCODE_PROGRAM_UNIFORM_MATRIX24F,
|
||||
OPCODE_PROGRAM_UNIFORM_MATRIX42F,
|
||||
OPCODE_PROGRAM_UNIFORM_MATRIX34F,
|
||||
OPCODE_PROGRAM_UNIFORM_MATRIX43F,
|
||||
|
||||
/* GL_ARB_color_buffer_float */
|
||||
OPCODE_CLAMP_COLOR,
|
||||
|
||||
|
@ -765,6 +801,33 @@ _mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist)
|
|||
free(get_pointer(&n[4]));
|
||||
n += InstSize[n[0].opcode];
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_1FV:
|
||||
case OPCODE_PROGRAM_UNIFORM_2FV:
|
||||
case OPCODE_PROGRAM_UNIFORM_3FV:
|
||||
case OPCODE_PROGRAM_UNIFORM_4FV:
|
||||
case OPCODE_PROGRAM_UNIFORM_1IV:
|
||||
case OPCODE_PROGRAM_UNIFORM_2IV:
|
||||
case OPCODE_PROGRAM_UNIFORM_3IV:
|
||||
case OPCODE_PROGRAM_UNIFORM_4IV:
|
||||
case OPCODE_PROGRAM_UNIFORM_1UIV:
|
||||
case OPCODE_PROGRAM_UNIFORM_2UIV:
|
||||
case OPCODE_PROGRAM_UNIFORM_3UIV:
|
||||
case OPCODE_PROGRAM_UNIFORM_4UIV:
|
||||
free(get_pointer(&n[4]));
|
||||
n += InstSize[n[0].opcode];
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX22F:
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX33F:
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX44F:
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX24F:
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX42F:
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX23F:
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX32F:
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX34F:
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX43F:
|
||||
free(get_pointer(&n[5]));
|
||||
n += InstSize[n[0].opcode];
|
||||
break;
|
||||
case OPCODE_PIXEL_MAP:
|
||||
free(get_pointer(&n[3]));
|
||||
n += InstSize[n[0].opcode];
|
||||
|
@ -6509,6 +6572,677 @@ save_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose,
|
|||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_UseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_USE_PROGRAM_STAGES, 3);
|
||||
if (n) {
|
||||
n[1].ui = pipeline;
|
||||
n[2].ui = stages;
|
||||
n[3].ui = program;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_UseProgramStages(ctx->Exec, (pipeline, stages, program));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform1f(GLuint program, GLint location, GLfloat x)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_1F, 3);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].f = x;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform1f(ctx->Exec, (program, location, x));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform2f(GLuint program, GLint location, GLfloat x, GLfloat y)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_2F, 4);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].f = x;
|
||||
n[4].f = y;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform2f(ctx->Exec, (program, location, x, y));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform3f(GLuint program, GLint location,
|
||||
GLfloat x, GLfloat y, GLfloat z)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_3F, 5);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].f = x;
|
||||
n[4].f = y;
|
||||
n[5].f = z;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform3f(ctx->Exec, (program, location, x, y, z));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform4f(GLuint program, GLint location,
|
||||
GLfloat x, GLfloat y, GLfloat z, GLfloat w)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_4F, 6);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].f = x;
|
||||
n[4].f = y;
|
||||
n[5].f = z;
|
||||
n[6].f = w;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform4f(ctx->Exec, (program, location, x, y, z, w));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform1fv(GLuint program, GLint location, GLsizei count,
|
||||
const GLfloat *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_1FV, 3 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
save_pointer(&n[4], memdup(v, count * 1 * sizeof(GLfloat)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform1fv(ctx->Exec, (program, location, count, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform2fv(GLuint program, GLint location, GLsizei count,
|
||||
const GLfloat *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_2FV, 3 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
save_pointer(&n[4], memdup(v, count * 2 * sizeof(GLfloat)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform2fv(ctx->Exec, (program, location, count, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform3fv(GLuint program, GLint location, GLsizei count,
|
||||
const GLfloat *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_3FV, 3 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
save_pointer(&n[4], memdup(v, count * 3 * sizeof(GLfloat)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform3fv(ctx->Exec, (program, location, count, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform4fv(GLuint program, GLint location, GLsizei count,
|
||||
const GLfloat *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_4FV, 3 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
save_pointer(&n[4], memdup(v, count * 4 * sizeof(GLfloat)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform4fv(ctx->Exec, (program, location, count, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform1i(GLuint program, GLint location, GLint x)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_1I, 3);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = x;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform1i(ctx->Exec, (program, location, x));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform2i(GLuint program, GLint location, GLint x, GLint y)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_2I, 4);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = x;
|
||||
n[4].i = y;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform2i(ctx->Exec, (program, location, x, y));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform3i(GLuint program, GLint location,
|
||||
GLint x, GLint y, GLint z)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_3I, 5);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = x;
|
||||
n[4].i = y;
|
||||
n[5].i = z;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform3i(ctx->Exec, (program, location, x, y, z));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform4i(GLuint program, GLint location,
|
||||
GLint x, GLint y, GLint z, GLint w)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_4I, 6);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = x;
|
||||
n[4].i = y;
|
||||
n[5].i = z;
|
||||
n[6].i = w;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform4i(ctx->Exec, (program, location, x, y, z, w));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform1iv(GLuint program, GLint location, GLsizei count,
|
||||
const GLint *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_1IV, 3 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
save_pointer(&n[4], memdup(v, count * 1 * sizeof(GLint)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform1iv(ctx->Exec, (program, location, count, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform2iv(GLuint program, GLint location, GLsizei count,
|
||||
const GLint *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_2IV, 3 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
save_pointer(&n[4], memdup(v, count * 2 * sizeof(GLint)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform2iv(ctx->Exec, (program, location, count, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform3iv(GLuint program, GLint location, GLsizei count,
|
||||
const GLint *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_3IV, 3 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
save_pointer(&n[4], memdup(v, count * 3 * sizeof(GLint)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform3iv(ctx->Exec, (program, location, count, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform4iv(GLuint program, GLint location, GLsizei count,
|
||||
const GLint *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_4IV, 3 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
save_pointer(&n[4], memdup(v, count * 4 * sizeof(GLint)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform4iv(ctx->Exec, (program, location, count, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform1ui(GLuint program, GLint location, GLuint x)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_1UI, 3);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].ui = x;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform1ui(ctx->Exec, (program, location, x));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform2ui(GLuint program, GLint location, GLuint x, GLuint y)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_2UI, 4);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].ui = x;
|
||||
n[4].ui = y;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform2ui(ctx->Exec, (program, location, x, y));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform3ui(GLuint program, GLint location,
|
||||
GLuint x, GLuint y, GLuint z)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_3UI, 5);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].ui = x;
|
||||
n[4].ui = y;
|
||||
n[5].ui = z;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform3ui(ctx->Exec, (program, location, x, y, z));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform4ui(GLuint program, GLint location,
|
||||
GLuint x, GLuint y, GLuint z, GLuint w)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_4UI, 6);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].ui = x;
|
||||
n[4].ui = y;
|
||||
n[5].ui = z;
|
||||
n[6].ui = w;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform4ui(ctx->Exec, (program, location, x, y, z, w));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform1uiv(GLuint program, GLint location, GLsizei count,
|
||||
const GLuint *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_1UIV, 3 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
save_pointer(&n[4], memdup(v, count * 1 * sizeof(GLuint)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform1uiv(ctx->Exec, (program, location, count, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform2uiv(GLuint program, GLint location, GLsizei count,
|
||||
const GLuint *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_2UIV, 3 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
save_pointer(&n[4], memdup(v, count * 2 * sizeof(GLuint)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform2uiv(ctx->Exec, (program, location, count, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform3uiv(GLuint program, GLint location, GLsizei count,
|
||||
const GLuint *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_3UIV, 3 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
save_pointer(&n[4], memdup(v, count * 3 * sizeof(GLuint)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform3uiv(ctx->Exec, (program, location, count, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniform4uiv(GLuint program, GLint location, GLsizei count,
|
||||
const GLuint *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_4UIV, 3 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
save_pointer(&n[4], memdup(v, count * 4 * sizeof(GLuint)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniform4uiv(ctx->Exec, (program, location, count, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count,
|
||||
GLboolean transpose, const GLfloat *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_MATRIX22F,
|
||||
4 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
n[4].b = transpose;
|
||||
save_pointer(&n[5], memdup(v, count * 2 * 2 * sizeof(GLfloat)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniformMatrix2fv(ctx->Exec,
|
||||
(program, location, count, transpose, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count,
|
||||
GLboolean transpose, const GLfloat *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_MATRIX23F,
|
||||
4 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
n[4].b = transpose;
|
||||
save_pointer(&n[5], memdup(v, count * 2 * 3 * sizeof(GLfloat)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniformMatrix2x3fv(ctx->Exec,
|
||||
(program, location, count, transpose, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count,
|
||||
GLboolean transpose, const GLfloat *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_MATRIX24F,
|
||||
4 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
n[4].b = transpose;
|
||||
save_pointer(&n[5], memdup(v, count * 2 * 4 * sizeof(GLfloat)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniformMatrix2x4fv(ctx->Exec,
|
||||
(program, location, count, transpose, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count,
|
||||
GLboolean transpose, const GLfloat *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_MATRIX32F,
|
||||
4 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
n[4].b = transpose;
|
||||
save_pointer(&n[5], memdup(v, count * 3 * 2 * sizeof(GLfloat)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniformMatrix3x2fv(ctx->Exec,
|
||||
(program, location, count, transpose, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count,
|
||||
GLboolean transpose, const GLfloat *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_MATRIX33F,
|
||||
4 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
n[4].b = transpose;
|
||||
save_pointer(&n[5], memdup(v, count * 3 * 3 * sizeof(GLfloat)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniformMatrix3fv(ctx->Exec,
|
||||
(program, location, count, transpose, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count,
|
||||
GLboolean transpose, const GLfloat *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_MATRIX34F,
|
||||
4 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
n[4].b = transpose;
|
||||
save_pointer(&n[5], memdup(v, count * 3 * 4 * sizeof(GLfloat)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniformMatrix3x4fv(ctx->Exec,
|
||||
(program, location, count, transpose, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count,
|
||||
GLboolean transpose, const GLfloat *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_MATRIX42F,
|
||||
4 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
n[4].b = transpose;
|
||||
save_pointer(&n[5], memdup(v, count * 4 * 2 * sizeof(GLfloat)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniformMatrix4x2fv(ctx->Exec,
|
||||
(program, location, count, transpose, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count,
|
||||
GLboolean transpose, const GLfloat *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_MATRIX43F,
|
||||
4 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
n[4].b = transpose;
|
||||
save_pointer(&n[5], memdup(v, count * 4 * 3 * sizeof(GLfloat)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniformMatrix4x3fv(ctx->Exec,
|
||||
(program, location, count, transpose, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count,
|
||||
GLboolean transpose, const GLfloat *v)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_UNIFORM_MATRIX44F,
|
||||
4 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].i = location;
|
||||
n[3].i = count;
|
||||
n[4].b = transpose;
|
||||
save_pointer(&n[5], memdup(v, count * 4 * 4 * sizeof(GLfloat)));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramUniformMatrix4fv(ctx->Exec,
|
||||
(program, location, count, transpose, v));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_ClampColorARB(GLenum target, GLenum clamp)
|
||||
{
|
||||
|
@ -7815,6 +8549,147 @@ execute_list(struct gl_context *ctx, GLuint list)
|
|||
(n[1].i, n[2].i, n[3].b, get_pointer(&n[4])));
|
||||
break;
|
||||
|
||||
case OPCODE_USE_PROGRAM_STAGES:
|
||||
CALL_UseProgramStages(ctx->Exec, (n[1].ui, n[2].ui, n[3].ui));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_1F:
|
||||
CALL_ProgramUniform1f(ctx->Exec, (n[1].ui, n[2].i, n[3].f));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_2F:
|
||||
CALL_ProgramUniform2f(ctx->Exec, (n[1].ui, n[2].i, n[3].f, n[4].f));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_3F:
|
||||
CALL_ProgramUniform3f(ctx->Exec, (n[1].ui, n[2].i,
|
||||
n[3].f, n[4].f, n[5].f));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_4F:
|
||||
CALL_ProgramUniform4f(ctx->Exec, (n[1].ui, n[2].i,
|
||||
n[3].f, n[4].f, n[5].f, n[6].f));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_1FV:
|
||||
CALL_ProgramUniform1fv(ctx->Exec, (n[1].ui, n[2].i, n[3].i,
|
||||
get_pointer(&n[4])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_2FV:
|
||||
CALL_ProgramUniform2fv(ctx->Exec, (n[1].ui, n[2].i, n[3].i,
|
||||
get_pointer(&n[4])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_3FV:
|
||||
CALL_ProgramUniform3fv(ctx->Exec, (n[1].ui, n[2].i, n[3].i,
|
||||
get_pointer(&n[4])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_4FV:
|
||||
CALL_ProgramUniform4fv(ctx->Exec, (n[1].ui, n[2].i, n[3].i,
|
||||
get_pointer(&n[4])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_1I:
|
||||
CALL_ProgramUniform1i(ctx->Exec, (n[1].ui, n[2].i, n[3].i));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_2I:
|
||||
CALL_ProgramUniform2i(ctx->Exec, (n[1].ui, n[2].i, n[3].i, n[4].i));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_3I:
|
||||
CALL_ProgramUniform3i(ctx->Exec, (n[1].ui, n[2].i,
|
||||
n[3].i, n[4].i, n[5].i));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_4I:
|
||||
CALL_ProgramUniform4i(ctx->Exec, (n[1].ui, n[2].i,
|
||||
n[3].i, n[4].i, n[5].i, n[6].i));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_1IV:
|
||||
CALL_ProgramUniform1iv(ctx->Exec, (n[1].ui, n[2].i, n[3].i,
|
||||
get_pointer(&n[4])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_2IV:
|
||||
CALL_ProgramUniform2iv(ctx->Exec, (n[1].ui, n[2].i, n[3].i,
|
||||
get_pointer(&n[4])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_3IV:
|
||||
CALL_ProgramUniform3iv(ctx->Exec, (n[1].ui, n[2].i, n[3].i,
|
||||
get_pointer(&n[4])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_4IV:
|
||||
CALL_ProgramUniform4iv(ctx->Exec, (n[1].ui, n[2].i, n[3].i,
|
||||
get_pointer(&n[4])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_1UI:
|
||||
CALL_ProgramUniform1ui(ctx->Exec, (n[1].ui, n[2].i, n[3].ui));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_2UI:
|
||||
CALL_ProgramUniform2ui(ctx->Exec, (n[1].ui, n[2].i,
|
||||
n[3].ui, n[4].ui));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_3UI:
|
||||
CALL_ProgramUniform3ui(ctx->Exec, (n[1].ui, n[2].i,
|
||||
n[3].ui, n[4].ui, n[5].ui));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_4UI:
|
||||
CALL_ProgramUniform4ui(ctx->Exec, (n[1].ui, n[2].i,
|
||||
n[3].ui,
|
||||
n[4].ui, n[5].ui, n[6].ui));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_1UIV:
|
||||
CALL_ProgramUniform1uiv(ctx->Exec, (n[1].ui, n[2].i, n[3].i,
|
||||
get_pointer(&n[4])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_2UIV:
|
||||
CALL_ProgramUniform2uiv(ctx->Exec, (n[1].ui, n[2].i, n[3].i,
|
||||
get_pointer(&n[4])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_3UIV:
|
||||
CALL_ProgramUniform3uiv(ctx->Exec, (n[1].ui, n[2].i, n[3].i,
|
||||
get_pointer(&n[4])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_4UIV:
|
||||
CALL_ProgramUniform4uiv(ctx->Exec, (n[1].ui, n[2].i, n[3].i,
|
||||
get_pointer(&n[4])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX22F:
|
||||
CALL_ProgramUniformMatrix2fv(ctx->Exec,
|
||||
(n[1].ui, n[2].i, n[3].i, n[4].b,
|
||||
get_pointer(&n[5])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX23F:
|
||||
CALL_ProgramUniformMatrix2x3fv(ctx->Exec,
|
||||
(n[1].ui, n[2].i, n[3].i, n[4].b,
|
||||
get_pointer(&n[5])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX24F:
|
||||
CALL_ProgramUniformMatrix2x4fv(ctx->Exec,
|
||||
(n[1].ui, n[2].i, n[3].i, n[4].b,
|
||||
get_pointer(&n[5])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX32F:
|
||||
CALL_ProgramUniformMatrix3x2fv(ctx->Exec,
|
||||
(n[1].ui, n[2].i, n[3].i, n[4].b,
|
||||
get_pointer(&n[5])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX33F:
|
||||
CALL_ProgramUniformMatrix3fv(ctx->Exec,
|
||||
(n[1].ui, n[2].i, n[3].i, n[4].b,
|
||||
get_pointer(&n[5])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX34F:
|
||||
CALL_ProgramUniformMatrix3x4fv(ctx->Exec,
|
||||
(n[1].ui, n[2].i, n[3].i, n[4].b,
|
||||
get_pointer(&n[5])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX42F:
|
||||
CALL_ProgramUniformMatrix4x2fv(ctx->Exec,
|
||||
(n[1].ui, n[2].i, n[3].i, n[4].b,
|
||||
get_pointer(&n[5])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX43F:
|
||||
CALL_ProgramUniformMatrix4x3fv(ctx->Exec,
|
||||
(n[1].ui, n[2].i, n[3].i, n[4].b,
|
||||
get_pointer(&n[5])));
|
||||
break;
|
||||
case OPCODE_PROGRAM_UNIFORM_MATRIX44F:
|
||||
CALL_ProgramUniformMatrix4fv(ctx->Exec,
|
||||
(n[1].ui, n[2].i, n[3].i, n[4].b,
|
||||
get_pointer(&n[5])));
|
||||
break;
|
||||
|
||||
case OPCODE_CLAMP_COLOR:
|
||||
CALL_ClampColor(ctx->Exec, (n[1].e, n[2].e));
|
||||
break;
|
||||
|
@ -8856,6 +9731,42 @@ _mesa_initialize_save_table(const struct gl_context *ctx)
|
|||
SET_DrawArraysInstancedBaseInstance(table, save_DrawArraysInstancedBaseInstance);
|
||||
SET_DrawElementsInstancedBaseInstance(table, save_DrawElementsInstancedBaseInstance);
|
||||
SET_DrawElementsInstancedBaseVertexBaseInstance(table, save_DrawElementsInstancedBaseVertexBaseInstance);
|
||||
|
||||
/* OpenGL 4.2 / GL_ARB_separate_shader_objects */
|
||||
SET_UseProgramStages(table, save_UseProgramStages);
|
||||
SET_ProgramUniform1f(table, save_ProgramUniform1f);
|
||||
SET_ProgramUniform2f(table, save_ProgramUniform2f);
|
||||
SET_ProgramUniform3f(table, save_ProgramUniform3f);
|
||||
SET_ProgramUniform4f(table, save_ProgramUniform4f);
|
||||
SET_ProgramUniform1fv(table, save_ProgramUniform1fv);
|
||||
SET_ProgramUniform2fv(table, save_ProgramUniform2fv);
|
||||
SET_ProgramUniform3fv(table, save_ProgramUniform3fv);
|
||||
SET_ProgramUniform4fv(table, save_ProgramUniform4fv);
|
||||
SET_ProgramUniform1i(table, save_ProgramUniform1i);
|
||||
SET_ProgramUniform2i(table, save_ProgramUniform2i);
|
||||
SET_ProgramUniform3i(table, save_ProgramUniform3i);
|
||||
SET_ProgramUniform4i(table, save_ProgramUniform4i);
|
||||
SET_ProgramUniform1iv(table, save_ProgramUniform1iv);
|
||||
SET_ProgramUniform2iv(table, save_ProgramUniform2iv);
|
||||
SET_ProgramUniform3iv(table, save_ProgramUniform3iv);
|
||||
SET_ProgramUniform4iv(table, save_ProgramUniform4iv);
|
||||
SET_ProgramUniform1ui(table, save_ProgramUniform1ui);
|
||||
SET_ProgramUniform2ui(table, save_ProgramUniform2ui);
|
||||
SET_ProgramUniform3ui(table, save_ProgramUniform3ui);
|
||||
SET_ProgramUniform4ui(table, save_ProgramUniform4ui);
|
||||
SET_ProgramUniform1uiv(table, save_ProgramUniform1uiv);
|
||||
SET_ProgramUniform2uiv(table, save_ProgramUniform2uiv);
|
||||
SET_ProgramUniform3uiv(table, save_ProgramUniform3uiv);
|
||||
SET_ProgramUniform4uiv(table, save_ProgramUniform4uiv);
|
||||
SET_ProgramUniformMatrix2fv(table, save_ProgramUniformMatrix2fv);
|
||||
SET_ProgramUniformMatrix3fv(table, save_ProgramUniformMatrix3fv);
|
||||
SET_ProgramUniformMatrix4fv(table, save_ProgramUniformMatrix4fv);
|
||||
SET_ProgramUniformMatrix2x3fv(table, save_ProgramUniformMatrix2x3fv);
|
||||
SET_ProgramUniformMatrix3x2fv(table, save_ProgramUniformMatrix3x2fv);
|
||||
SET_ProgramUniformMatrix2x4fv(table, save_ProgramUniformMatrix2x4fv);
|
||||
SET_ProgramUniformMatrix4x2fv(table, save_ProgramUniformMatrix4x2fv);
|
||||
SET_ProgramUniformMatrix3x4fv(table, save_ProgramUniformMatrix3x4fv);
|
||||
SET_ProgramUniformMatrix4x3fv(table, save_ProgramUniformMatrix4x3fv);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue