[Mesa-dev] [PATCH 12/15] intel: Downsample on DRI2 flush

Brian Paul brian.e.paul at gmail.com
Mon Jul 23 06:30:45 PDT 2012


On Sat, Jul 21, 2012 at 6:36 PM, Chad Versace
<chad.versace at linux.intel.com> wrote:
> CC: Eric Anholt <eric at anholt.net>
> CC: Paul Berry <stereotype441 at gmail.com>
> Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
> ---
>  src/mesa/drivers/dri/intel/intel_screen.c | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c
> index 4a12b67..958ff9f 100644
> --- a/src/mesa/drivers/dri/intel/intel_screen.c
> +++ b/src/mesa/drivers/dri/intel/intel_screen.c
> @@ -177,6 +177,36 @@ static const __DRItexBufferExtension intelTexBufferExtension = {
>  };
>
>  static void
> +intel_downsample_for_dri2_flush(struct intel_context *intel,
> +                                __DRIdrawable *drawable)
> +{
> +   if (intel->gen < 6) {
> +      /* MSAA is not supported, so don't waste time checking for
> +       * a multisample buffer.
> +       */
> +      return;
> +   }
> +
> +   struct gl_framebuffer *fb = drawable->driverPrivate;
> +   struct intel_renderbuffer *rb;

Declarations following code will cause a compiler error (depending on
the compiler and flags).  You might want to fix that, just in case.


> +
> +   /* Usually, only the back buffer will need to be downsampled. However,
> +    * the front buffer will also need it if the user has rendered into it.
> +    */
> +   static const gl_buffer_index buffers[2] = {
> +         BUFFER_BACK_LEFT,
> +         BUFFER_FRONT_LEFT,
> +   };
> +
> +   for (int i = 0; i < 2; ++i) {
> +      rb = intel_get_renderbuffer(fb, buffers[i]);
> +      if (rb == NULL || rb->mt == NULL)
> +         continue;
> +      intel_miptree_downsample(intel, rb->mt);
> +   }
> +}
> +
> +static void
>  intelDRI2Flush(__DRIdrawable *drawable)
>  {
>     GET_CURRENT_CONTEXT(ctx);
> @@ -187,6 +217,7 @@ intelDRI2Flush(__DRIdrawable *drawable)
>     if (intel->gen < 4)
>        INTEL_FIREVERTICES(intel);
>
> +   intel_downsample_for_dri2_flush(intel, drawable);
>     intel->need_throttle = true;
>
>     if (intel->batch.used)
> --
> 1.7.11.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list