[Mesa-dev] [PATCH 01/29] intel/isl: Codify AUX operations in an enum

Nanley Chery nanleychery at gmail.com
Tue Dec 5 00:28:24 UTC 2017


On Mon, Nov 27, 2017 at 07:05:51PM -0800, Jason Ekstrand wrote:
> Right now, we have different entrypoints and enums in blorp for these
> different operations.  This provides us a central enum which we can
> begin to transition to.
> ---
>  src/intel/isl/isl.h | 74 +++++++++++++++++++++++++++++++++++------------------
>  1 file changed, 49 insertions(+), 25 deletions(-)
> 

This patch is
Reviewed-by: Nanley Chery <nanley.g.chery at intel.com>

> diff --git a/src/intel/isl/isl.h b/src/intel/isl/isl.h
> index e3acb0e..fda2411 100644
> --- a/src/intel/isl/isl.h
> +++ b/src/intel/isl/isl.h
> @@ -661,31 +661,8 @@ enum isl_aux_usage {
>   *
>   * Drawing with or without aux enabled may implicitly cause the surface to
>   * transition between these states.  There are also four types of auxiliary
> - * compression operations which cause an explicit transition:
> - *
> - *    1) Fast Clear:  This operation writes the magic "clear" value to the
> - *       auxiliary surface.  This operation will safely transition any slice
> - *       of a surface from any state to the clear state so long as the entire
> - *       slice is fast cleared at once.  A fast clear that only covers part of
> - *       a slice of a surface is called a partial fast clear.
> - *
> - *    2) Full Resolve:  This operation combines the auxiliary surface data
> - *       with the primary surface data and writes the result to the primary.
> - *       For HiZ, the docs call this a depth resolve.  For CCS, the hardware
> - *       full resolve operation does both a full resolve and an ambiguate so
> - *       it actually takes you all the way to the pass-through state.
> - *
> - *    3) Partial Resolve:  This operation considers blocks which are in the
> - *       "clear" state and writes the clear value directly into the primary or
> - *       auxiliary surface.  Once this operation completes, the surface is
> - *       still compressed but no longer references the clear color.  This
> - *       operation is only available for CCS.
> - *
> - *    4) Ambiguate:  This operation throws away the current auxiliary data and
> - *       replaces it with the magic pass-through value.  If an ambiguate
> - *       operation is performed when the primary surface does not contain 100%
> - *       of the data, data will be lost.  This operation is only implemented
> - *       in hardware for depth where it is called a HiZ resolve.
> + * compression operations which cause an explicit transition which are
> + * described by the isl_aux_op enum below.
>   *
>   * Not all operations are valid or useful in all states.  The diagram below
>   * contains a complete description of the states and all valid and useful
> @@ -787,6 +764,53 @@ enum isl_aux_state {
>     ISL_AUX_STATE_AUX_INVALID,
>  };
>  
> +/**
> + * Enum which describes explicit aux transition operations.
> + */
> +enum isl_aux_op {
> +   ISL_AUX_OP_NONE,
> +
> +   /** Fast Clear
> +    *
> +    * This operation writes the magic "clear" value to the auxiliary surface.
> +    * This operation will safely transition any slice of a surface from any
> +    * state to the clear state so long as the entire slice is fast cleared at
> +    * once.  A fast clear that only covers part of a slice of a surface is
> +    * called a partial fast clear.
> +    */
> +   ISL_AUX_OP_FAST_CLEAR,
> +
> +   /** Full Resolve
> +    *
> +    * This operation combines the auxiliary surface data with the primary
> +    * surface data and writes the result to the primary.  For HiZ, the docs
> +    * call this a depth resolve.  For CCS, the hardware full resolve operation
> +    * does both a full resolve and an ambiguate so it actually takes you all
> +    * the way to the pass-through state.
> +    */
> +   ISL_AUX_OP_FULL_RESOLVE,
> +
> +   /** Partial Resolve
> +    *
> +    * This operation considers blocks which are in the "clear" state and
> +    * writes the clear value directly into the primary or auxiliary surface.
> +    * Once this operation completes, the surface is still compressed but no
> +    * longer references the clear color.  This operation is only available
> +    * for CCS_E.
> +    */
> +   ISL_AUX_OP_PARTIAL_RESOLVE,
> +
> +   /** Ambiguate
> +    *
> +    * This operation throws away the current auxiliary data and replaces it
> +    * with the magic pass-through value.  If an ambiguate operation is
> +    * performed when the primary surface does not contain 100% of the data,
> +    * data will be lost.  This operation is only implemented in hardware for
> +    * depth where it is called a HiZ resolve.
> +    */
> +   ISL_AUX_OP_AMBIGUATE,
> +};
> +
>  /* TODO(chadv): Explain */
>  enum isl_array_pitch_span {
>     ISL_ARRAY_PITCH_SPAN_FULL,
> -- 
> 2.5.0.400.gff86faf
> 
> _______________________________________________
> 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