diff options
Diffstat (limited to 'src/mesa')
| -rw-r--r-- | src/mesa/main/dlist.c | 144 | 
1 files changed, 144 insertions, 0 deletions
| diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index 86190ab029..46b7721c32 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -411,6 +411,12 @@ typedef enum     OPCODE_BEGIN_TRANSFORM_FEEDBACK,     OPCODE_END_TRANSFORM_FEEDBACK, +   /* GL_EXT_texture_integer */ +   OPCODE_CLEARCOLOR_I, +   OPCODE_CLEARCOLOR_UI, +   OPCODE_TEXPARAMETER_I, +   OPCODE_TEXPARAMETER_UI, +     /* The following three are meta instructions */     OPCODE_ERROR,                /* raise compiled-in error */     OPCODE_CONTINUE, @@ -6788,6 +6794,107 @@ save_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose,  } +/** GL_EXT_texture_integer */ +static void GLAPIENTRY +save_ClearColorIi(GLint red, GLint green, GLint blue, GLint alpha) +{ +   GET_CURRENT_CONTEXT(ctx); +   Node *n; +   ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +   n = alloc_instruction(ctx, OPCODE_CLEARCOLOR_I, 4); +   if (n) { +      n[1].i = red; +      n[2].i = green; +      n[3].i = blue; +      n[4].i = alpha; +   } +   if (ctx->ExecuteFlag) { +      CALL_ClearColorIiEXT(ctx->Exec, (red, green, blue, alpha)); +   } +} + +/** GL_EXT_texture_integer */ +static void GLAPIENTRY +save_ClearColorIui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ +   GET_CURRENT_CONTEXT(ctx); +   Node *n; +   ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +   n = alloc_instruction(ctx, OPCODE_CLEARCOLOR_UI, 4); +   if (n) { +      n[1].ui = red; +      n[2].ui = green; +      n[3].ui = blue; +      n[4].ui = alpha; +   } +   if (ctx->ExecuteFlag) { +      CALL_ClearColorIuiEXT(ctx->Exec, (red, green, blue, alpha)); +   } +} + +/** GL_EXT_texture_integer */ +static void GLAPIENTRY +save_TexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ +   GET_CURRENT_CONTEXT(ctx); +   Node *n; +   ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +   n = alloc_instruction(ctx, OPCODE_TEXPARAMETER_I, 6); +   if (n) { +      n[1].e = target; +      n[2].e = pname; +      n[3].i = params[0]; +      n[4].i = params[1]; +      n[5].i = params[2]; +      n[6].i = params[3]; +   } +   if (ctx->ExecuteFlag) { +      CALL_TexParameterIivEXT(ctx->Exec, (target, pname, params)); +   } +} + +/** GL_EXT_texture_integer */ +static void GLAPIENTRY +save_TexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ +   GET_CURRENT_CONTEXT(ctx); +   Node *n; +   ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +   n = alloc_instruction(ctx, OPCODE_TEXPARAMETER_UI, 6); +   if (n) { +      n[1].e = target; +      n[2].e = pname; +      n[3].ui = params[0]; +      n[4].ui = params[1]; +      n[5].ui = params[2]; +      n[6].ui = params[3]; +   } +   if (ctx->ExecuteFlag) { +      CALL_TexParameterIuivEXT(ctx->Exec, (target, pname, params)); +   } +} + +/** GL_EXT_texture_integer */ +static void GLAPIENTRY +exec_GetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ +   GET_CURRENT_CONTEXT(ctx); +   FLUSH_VERTICES(ctx, 0); +   CALL_GetTexParameterIivEXT(ctx->Exec, (target, pname, params)); +} + +/** GL_EXT_texture_integer */ +static void GLAPIENTRY +exec_GetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ +   GET_CURRENT_CONTEXT(ctx); +   FLUSH_VERTICES(ctx, 0); +   CALL_GetTexParameterIuivEXT(ctx->Exec, (target, pname, params)); +} + + + +  /**   * Save an error-generating command into display list. @@ -7904,6 +8011,35 @@ execute_list(struct gl_context *ctx, GLuint list)              CALL_EvalPoint2(ctx->Exec, (n[1].i, n[2].i));              break; +         /* GL_EXT_texture_integer */ +         case OPCODE_CLEARCOLOR_I: +            CALL_ClearColorIiEXT(ctx->Exec, (n[1].i, n[2].i, n[3].i, n[4].i)); +            break; +         case OPCODE_CLEARCOLOR_UI: +            CALL_ClearColorIuiEXT(ctx->Exec, +                                  (n[1].ui, n[2].ui, n[3].ui, n[4].ui)); +            break; +         case OPCODE_TEXPARAMETER_I: +            { +               GLint params[4]; +               params[0] = n[3].i; +               params[1] = n[4].i; +               params[2] = n[5].i; +               params[3] = n[6].i; +               CALL_TexParameterIivEXT(ctx->Exec, (n[1].e, n[2].e, params)); +            } +            break; +         case OPCODE_TEXPARAMETER_UI: +            { +               GLuint params[4]; +               params[0] = n[3].ui; +               params[1] = n[4].ui; +               params[2] = n[5].ui; +               params[3] = n[6].ui; +               CALL_TexParameterIuivEXT(ctx->Exec, (n[1].e, n[2].e, params)); +            } +            break; +           case OPCODE_CONTINUE:              n = (Node *) n[1].next;              break; @@ -9532,6 +9668,14 @@ _mesa_create_save_table(void)     SET_ObjectUnpurgeableAPPLE(table, _mesa_ObjectUnpurgeableAPPLE);  #endif +   /* GL_EXT_texture_integer */ +   SET_ClearColorIiEXT(table, save_ClearColorIi); +   SET_ClearColorIuiEXT(table, save_ClearColorIui); +   SET_TexParameterIivEXT(table, save_TexParameterIiv); +   SET_TexParameterIuivEXT(table, save_TexParameterIuiv); +   SET_GetTexParameterIivEXT(table, exec_GetTexParameterIiv); +   SET_GetTexParameterIuivEXT(table, exec_GetTexParameterIuiv); +     /* GL 3.0 */  #if 0     SET_ClearBufferiv(table, save_ClearBufferiv); | 
