[Mesa-dev] [PATCH V2 08/22] i965: Add _Format to intel_texobj.

Ian Romanick idr at freedesktop.org
Fri Feb 21 16:50:23 PST 2014


On 02/21/2014 12:48 PM, Chris Forbes wrote:
> This is the actual mesa_format to use. In non-view cases this is always
> the same as the mt's format.
>
> Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
> ---
>   src/mesa/drivers/dri/i965/intel_tex.c          | 8 ++++++++
>   src/mesa/drivers/dri/i965/intel_tex_obj.h      | 5 +++++
>   src/mesa/drivers/dri/i965/intel_tex_validate.c | 1 +
>   3 files changed, 14 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/i965/intel_tex.c b/src/mesa/drivers/dri/i965/intel_tex.c
> index 3b14796..0bbeeb7 100644
> --- a/src/mesa/drivers/dri/i965/intel_tex.c
> +++ b/src/mesa/drivers/dri/i965/intel_tex.c
> @@ -168,6 +168,7 @@ intel_alloc_texture_storage(struct gl_context *ctx,
>      intel_texobj->needs_validate = false;
>      intel_texobj->validated_first_level = 0;
>      intel_texobj->validated_last_level = levels - 1;
> +   intel_texobj->_Format = intel_texobj->mt->format;
>
>      return true;
>   }
> @@ -242,6 +243,7 @@ intel_texture_view(struct gl_context *ctx,
>                      struct gl_texture_object *texObj,
>                      struct gl_texture_object *origTexObj)
>   {
> +   struct brw_context *brw = brw_context(ctx);
>      struct intel_texture_object *intel_tex = intel_texture_object(texObj);
>      struct intel_texture_object *intel_orig_tex = intel_texture_object(origTexObj);
>
> @@ -274,6 +276,12 @@ intel_texture_view(struct gl_context *ctx,
>      intel_tex->validated_first_level = 0;
>      intel_tex->validated_last_level = numLevels - 1;
>
> +   /* Set the validated texture format, with the same adjustments that
> +    * would have been applied to determine the underlying texture's
> +    * mt->format. */
> +   intel_tex->_Format = intel_depth_format_for_depthstencil_format(
> +         intel_lower_compressed_format(brw, texObj->Image[0][0]->TexFormat));

I'm a little unsure whether this is necessary.  The only view that can 
be made of an ETC/ETC2/EAC texture is one with the identical format. 
Could we just clone the _Format from intel_orig_tex instead?

> +
>      return GL_TRUE;
>   }
>
> diff --git a/src/mesa/drivers/dri/i965/intel_tex_obj.h b/src/mesa/drivers/dri/i965/intel_tex_obj.h
> index 78a0990..8f20858 100644
> --- a/src/mesa/drivers/dri/i965/intel_tex_obj.h
> +++ b/src/mesa/drivers/dri/i965/intel_tex_obj.h
> @@ -54,6 +54,11 @@ struct intel_texture_object
>       * might not all be the mipmap tree above.
>       */
>      bool needs_validate;
> +
> +   /* Mesa format for the validated texture object. For non-views this
> +    * will always be the same as mt->format. For views, it may differ
> +    * since the mt is shared across views with differing formats. */
> +   mesa_format _Format;
>   };
>
>
> diff --git a/src/mesa/drivers/dri/i965/intel_tex_validate.c b/src/mesa/drivers/dri/i965/intel_tex_validate.c
> index c8e1afb..dbc8fd5 100644
> --- a/src/mesa/drivers/dri/i965/intel_tex_validate.c
> +++ b/src/mesa/drivers/dri/i965/intel_tex_validate.c
> @@ -176,6 +176,7 @@ intel_finalize_mipmap_tree(struct brw_context *brw, GLuint unit)
>
>      intelObj->validated_first_level = validate_first_level;
>      intelObj->validated_last_level = validate_last_level;
> +   intelObj->_Format = intelObj->mt->format;
>      intelObj->needs_validate = false;
>
>      return true;
>



More information about the mesa-dev mailing list