[Mesa-dev] [PATCH 5/5] mesa: Pause transform feedback during meta ops.

Brian Paul brian.e.paul at gmail.com
Thu Dec 22 09:31:39 PST 2011


On Wed, Dec 21, 2011 at 2:39 PM, Paul Berry <stereotype441 at gmail.com> wrote:
> Fixes piglit tests "EXT_transform_feedback/generatemipmap buffer" and
> "EXT_transform_feedback/generatemipmap prims_written" on i965 Gen6.
> ---
>  src/mesa/drivers/common/meta.c |   13 +++++++++++++
>  1 files changed, 13 insertions(+), 0 deletions(-)
>
> diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
> index 144fa12..e622673 100644
> --- a/src/mesa/drivers/common/meta.c
> +++ b/src/mesa/drivers/common/meta.c
> @@ -65,6 +65,7 @@
>  #include "main/teximage.h"
>  #include "main/texparam.h"
>  #include "main/texstate.h"
> +#include "main/transformfeedback.h"
>  #include "main/uniforms.h"
>  #include "main/varray.h"
>  #include "main/viewport.h"
> @@ -181,6 +182,7 @@ struct save_state
>    /** Miscellaneous (always disabled) */
>    GLboolean Lighting;
>    GLboolean RasterDiscard;
> +   GLboolean TransformFeedbackNeedsResume;
>  };
>
>  /**
> @@ -423,6 +425,15 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
>    memset(save, 0, sizeof(*save));
>    save->SavedState = state;
>
> +   /* Pausing transform feedback needs to be done early, or else we won't be
> +    * able to change other state.
> +    */
> +   save->TransformFeedbackNeedsResume =
> +      ctx->TransformFeedback.CurrentObject->Active &&
> +      !ctx->TransformFeedback.CurrentObject->Paused;
> +   if (save->TransformFeedbackNeedsResume)
> +      _mesa_PauseTransformFeedback();
> +
>    if (state & MESA_META_ALPHA_TEST) {
>       save->AlphaEnabled = ctx->Color.AlphaEnabled;
>       save->AlphaFunc = ctx->Color.AlphaFunc;
> @@ -988,6 +999,8 @@ _mesa_meta_end(struct gl_context *ctx)
>    if (save->RasterDiscard) {
>       _mesa_set_enable(ctx, GL_RASTERIZER_DISCARD, GL_TRUE);
>    }
> +   if (save->TransformFeedbackNeedsResume)
> +      _mesa_ResumeTransformFeedback();
>  }
>
>

Reviewed-by: Brian Paul <brianp at vmare.com>


More information about the mesa-dev mailing list