[Mesa-dev] [PATCH v3 3/8] intel/isl: Allow creation of 1-D compressed textures

Nanley Chery nanleychery at gmail.com
Tue Sep 27 16:39:41 UTC 2016


On Tue, Sep 27, 2016 at 09:22:00AM -0700, Jason Ekstrand wrote:
> Compressed 1-D textures are not well-defined thing in either GL or Vulkan.
> However, auxiliary surfaces are treated as compressed textures in ISL and
> we can do HiZ and CCS with 1-D so we need to be able to create them.  In
> order to prevent actually using them (the docs say no), we assert in the
> state setup code.
> 
> Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
> ---
>  src/intel/isl/isl.c               | 5 ++---
>  src/intel/isl/isl_surface_state.c | 9 +++++++++
>  2 files changed, 11 insertions(+), 3 deletions(-)

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

> 
> diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c
> index a75fddf..185984d 100644
> --- a/src/intel/isl/isl.c
> +++ b/src/intel/isl/isl.c
> @@ -518,7 +518,6 @@ isl_calc_phys_level0_extent_sa(const struct isl_device *dev,
>        assert(info->height == 1);
>        assert(info->depth == 1);
>        assert(info->samples == 1);
> -      assert(!isl_format_is_compressed(info->format));
>  
>        switch (dim_layout) {
>        case ISL_DIM_LAYOUT_GEN4_3D:
> @@ -527,8 +526,8 @@ isl_calc_phys_level0_extent_sa(const struct isl_device *dev,
>        case ISL_DIM_LAYOUT_GEN9_1D:
>        case ISL_DIM_LAYOUT_GEN4_2D:
>           *phys_level0_sa = (struct isl_extent4d) {
> -            .w = info->width,
> -            .h = 1,
> +            .w = isl_align_npot(info->width, fmtl->bw),
> +            .h = fmtl->bh,
>              .d = 1,
>              .a = info->array_len,
>           };
> diff --git a/src/intel/isl/isl_surface_state.c b/src/intel/isl/isl_surface_state.c
> index 979e140..210308c 100644
> --- a/src/intel/isl/isl_surface_state.c
> +++ b/src/intel/isl/isl_surface_state.c
> @@ -215,6 +215,15 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
>        assert(isl_format_supports_rendering(dev->info, info->view->format));
>     else if (info->view->usage & ISL_SURF_USAGE_TEXTURE_BIT)
>        assert(isl_format_supports_sampling(dev->info, info->view->format));
> +
> +   /* From the Sky Lake PRM Vol. 2d, RENDER_SURFACE_STATE::SurfaceFormat
> +    *
> +    *    This field cannot be a compressed (BC*, DXT*, FXT*, ETC*, EAC*)
> +    *    format if the Surface Type is SURFTYPE_1D
> +    */
> +   if (info->surf->dim == ISL_SURF_DIM_1D)
> +      assert(!isl_format_is_compressed(info->view->format));
> +
>     s.SurfaceFormat = info->view->format;
>  
>  #if GEN_IS_HASWELL
> -- 
> 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