[Mesa-dev] [PATCH 18/34] i965/miptree: Add a helper functions for image creation

Pohjolainen, Topi topi.pohjolainen at gmail.com
Wed Jan 25 18:58:32 UTC 2017


On Mon, Jan 23, 2017 at 10:21:41PM -0800, Ben Widawsky wrote:
> This provides a common function or creating miptrees when there is an
> existing DRIimage to use. That provides an easy way to add CCS
> allocation.
> 
> Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
> Acked-by: Daniel Stone <daniels at collabora.com>
> ---
>  src/mesa/drivers/dri/i965/intel_fbo.c         | 17 ++++++++---------
>  src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 25 ++++++++++++++++++++++++-
>  src/mesa/drivers/dri/i965/intel_mipmap_tree.h | 10 ++++++++++
>  src/mesa/drivers/dri/i965/intel_tex_image.c   | 17 ++++++++---------
>  4 files changed, 50 insertions(+), 19 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/intel_fbo.c b/src/mesa/drivers/dri/i965/intel_fbo.c
> index de0cd6aca2..f6e17599b8 100644
> --- a/src/mesa/drivers/dri/i965/intel_fbo.c
> +++ b/src/mesa/drivers/dri/i965/intel_fbo.c
> @@ -362,15 +362,14 @@ intel_image_target_renderbuffer_storage(struct gl_context *ctx,
>      * buffer's content to the main buffer nor for invalidating the aux buffer's
>      * content.
>      */
> -   irb->mt = intel_miptree_create_for_bo(brw,
> -                                         image->bo,
> -                                         image->format,
> -                                         image->offset,
> -                                         image->width,
> -                                         image->height,
> -                                         1,
> -                                         image->pitch,
> -                                         MIPTREE_LAYOUT_DISABLE_AUX);
> +   irb->mt = intel_miptree_create_for_image(brw,
> +                                            image,
> +                                            image->format,
> +                                            image->offset,
> +                                            image->width,
> +                                            image->height,
> +                                            image->pitch,
> +                                            0);
>     if (!irb->mt)
>        return;
>  
> diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> index ed514239e2..34b6591eb0 100644
> --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> @@ -24,7 +24,6 @@
>   */
>  
>  #include <GL/gl.h>
> -#include <GL/internal/dri_interface.h>
>  
>  #include "intel_batchbuffer.h"
>  #include "intel_mipmap_tree.h"
> @@ -32,6 +31,7 @@
>  #include "intel_tex.h"
>  #include "intel_blit.h"
>  #include "intel_fbo.h"
> +#include "intel_image.h"
>  
>  #include "brw_blorp.h"
>  #include "brw_context.h"
> @@ -810,6 +810,29 @@ intel_miptree_create_for_bo(struct brw_context *brw,
>     return mt;
>  }
>  
> +struct intel_mipmap_tree *
> +intel_miptree_create_for_image(struct brw_context *intel,
> +                               __DRIimage *image,
> +                               mesa_format format,
> +                               uint32_t offset,
> +                               uint32_t width,
> +                               uint32_t height,
> +                               uint32_t pitch,
> +                               uint32_t layout_flags)
> +{
> +   layout_flags = (layout_flags & MIPTREE_LAYOUT_FOR_SCANOUT) ?
> +      MIPTREE_LAYOUT_FOR_SCANOUT : MIPTREE_LAYOUT_DISABLE_AUX;

Before flags were unconditionally MIPTREE_LAYOUT_DISABLE_AUX. This should be
mentioned in the commit message. And probably that functionally aux gets
disabled because current logic does that for scanout?

> +   return intel_miptree_create_for_bo(intel,
> +                                      image->bo,
> +                                      format,
> +                                      offset,
> +                                      width,
> +                                      height,
> +                                      1,
> +                                      pitch,
> +                                      layout_flags);
> +}
> +
>  /**
>   * For a singlesample renderbuffer, this simply wraps the given BO with a
>   * miptree.
> diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
> index 476c46b135..cf8f1a7687 100644
> --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
> +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
> @@ -720,6 +720,16 @@ intel_miptree_create_for_bo(struct brw_context *brw,
>                              int pitch,
>                              uint32_t layout_flags);
>  
> +struct intel_mipmap_tree *
> +intel_miptree_create_for_image(struct brw_context *intel,
> +                               __DRIimage *image,
> +                               mesa_format format,
> +                               uint32_t offset,
> +                               uint32_t width,
> +                               uint32_t height,
> +                               uint32_t pitch,
> +                               uint32_t layout_flags);
> +
>  void
>  intel_update_winsys_renderbuffer_miptree(struct brw_context *intel,
>                                           struct intel_renderbuffer *irb,
> diff --git a/src/mesa/drivers/dri/i965/intel_tex_image.c b/src/mesa/drivers/dri/i965/intel_tex_image.c
> index 141996f707..2d79183b16 100644
> --- a/src/mesa/drivers/dri/i965/intel_tex_image.c
> +++ b/src/mesa/drivers/dri/i965/intel_tex_image.c
> @@ -221,11 +221,11 @@ create_mt_for_planar_dri_image(struct brw_context *brw,
>         * invalidating the aux buffer's content.
>         */
>        struct intel_mipmap_tree *mt =
> -         intel_miptree_create_for_bo(brw, image->bo, format,
> -                                     image->offsets[index],
> -                                     width, height, 1,
> -                                     image->strides[index],
> -                                     MIPTREE_LAYOUT_DISABLE_AUX);
> +         intel_miptree_create_for_image(brw, image, format,
> +                                        image->offsets[index],
> +                                        width, height,
> +                                        image->strides[index],
> +                                        0);
>        if (mt == NULL)
>           return NULL;
>  
> @@ -259,10 +259,9 @@ create_mt_for_dri_image(struct brw_context *brw,
>      * buffer's content to the main buffer nor for invalidating the aux buffer's
>      * content.
>      */
> -   mt = intel_miptree_create_for_bo(brw, image->bo, image->format,
> -                                    0, image->width, image->height, 1,
> -                                    image->pitch,
> -                                    MIPTREE_LAYOUT_DISABLE_AUX);
> +   mt = intel_miptree_create_for_image(brw, image, image->format,
> +                                       0, image->width, image->height,
> +                                       image->pitch, 0);
>     if (mt == NULL)
>        return NULL;
>  
> -- 
> 2.11.0
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list