Fixes piglit nv_conditional_render-dlist. --- src/mesa/main/dlist.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index 6e075b4..a80cfdc 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -459,6 +459,10 @@ typedef enum /* GL_ARB_sync */ OPCODE_WAIT_SYNC, + /* GL_NV_conditional_render */ + OPCODE_BEGIN_CONDITIONAL_RENDER, + OPCODE_END_CONDITIONAL_RENDER, + /* The following three are meta instructions */ OPCODE_ERROR, /* raise compiled-in error */ OPCODE_CONTINUE, @@ -7371,6 +7375,35 @@ save_WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) } +/** GL_NV_conditional_render */ +static void GLAPIENTRY +save_BeginConditionalRender(GLuint queryId, GLenum mode) +{ + GET_CURRENT_CONTEXT(ctx); + Node *n; + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_BEGIN_CONDITIONAL_RENDER, 2); + if (n) { + n[1].i = queryId; + n[2].e = mode; + } + if (ctx->ExecuteFlag) { + CALL_BeginConditionalRenderNV(ctx->Exec, (queryId, mode)); + } +} + +static void GLAPIENTRY +save_EndConditionalRender() +{ + GET_CURRENT_CONTEXT(ctx); + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + alloc_instruction(ctx, OPCODE_END_CONDITIONAL_RENDER, 0); + if (ctx->ExecuteFlag) { + CALL_EndConditionalRenderNV(ctx->Exec, ()); + } +} + + /** * Save an error-generating command into display list. * @@ -8636,6 +8669,14 @@ execute_list(struct gl_context *ctx, GLuint list) } break; + /* GL_NV_conditional_render */ + case OPCODE_BEGIN_CONDITIONAL_RENDER: + CALL_BeginConditionalRenderNV(ctx->Exec, (n[1].i, n[2].e)); + break; + case OPCODE_END_CONDITIONAL_RENDER: + CALL_EndConditionalRenderNV(ctx->Exec, ()); + break; + case OPCODE_CONTINUE: n = (Node *) n[1].next; break; @@ -10340,6 +10381,10 @@ _mesa_create_save_table(void) SET_FramebufferTextureARB(table, save_FramebufferTexture); SET_FramebufferTextureFaceARB(table, save_FramebufferTextureFace); + /* GL_NV_conditional_render */ + SET_BeginConditionalRenderNV(table, save_BeginConditionalRender); + SET_EndConditionalRenderNV(table, save_EndConditionalRender); + /* GL_ARB_sync */ _mesa_init_sync_dispatch(table); SET_WaitSync(table, save_WaitSync); -- 1.7.5.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev