<p dir="ltr">On Sep 22, 2016 11:11 PM, "Nanley Chery" <<a href="mailto:nanleychery@gmail.com">nanleychery@gmail.com</a>> wrote:<br>
><br>
> On Wed, Sep 14, 2016 at 01:28:23PM -0700, Jason Ekstrand wrote:<br>
> > Compressed 1-D textures are a well-defined thing in both GL and Vulkan.<br>
><br>
> Could you provide a reference? I could not find any documentation on 1D<br>
> compressed textures. Instead I found that OpenGL disallows them and<br>
> Vulkan does not explicitly mention them. In OpenGL CompressedTexImage1D<br>
> returns INVALID_ENUM for ASTC, LATC, S3TC, RGTC, BPTC, and FXT1. The same<br>
> return value is implied for ASTC. In Vulkan, drivers are required to<br>
> support one of the following: BPTC for 2D and 3D images, ASTC LDR for 2D<br>
> images, or ETC2 and EAC for 2D images.</p>
<p dir="ltr">OK, so they don't normally exist...</p>
<p dir="ltr">> Our HW also doesn't support this. RENDER_SURFACE_STATE says:<br>
> * This field cannot be a compressed (BC*, DXT*, FXT*, ETC*, EAC*) format<br>
> if the Surface Type is SURFTYPE_1D.<br>
> * This field cannot be ASTC format if the Surface Type is SURFTYPE_1D.</p>
<p dir="ltr">Right.  Maybe assert in surface state setup about that.</p>
<p dir="ltr">> I retract my earlier review feedback - the isl_*_gen9_1d functions<br>
> should not be updated because ISL_DIM_LAYOUT_GEN9_1D compressed<br>
> textures cannot exist.<br>
><br>
> ><br>
> > v2: Fix some asserts (Nanley)<br>
> ><br>
> > Signed-off-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br>
> > ---<br>
> >  src/intel/isl/isl.c | 12 +++++++-----<br>
> >  1 file changed, 7 insertions(+), 5 deletions(-)<br>
> ><br>
> > diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c<br>
> > index a75fddf..710c990 100644<br>
> > --- a/src/intel/isl/isl.c<br>
> > +++ b/src/intel/isl/isl.c<br>
> > @@ -518,7 +518,6 @@ isl_calc_phys_level0_extent_sa(const struct isl_device *dev,<br>
> >        assert(info->height == 1);<br>
> >        assert(info->depth == 1);<br>
> >        assert(info->samples == 1);<br>
> > -      assert(!isl_format_is_compressed(info->format));<br>
><br>
> If you'd like to make this change for HiZ, I think we should keep this<br>
> assert and OR in a requirement that the format or tiling is HiZ.</p>
<p dir="ltr">Eh... We also need it for CCS (both gen9 compression and fast clears) and I think the calculations are fairly well-defined.  I don't see why we shouldn't just allow it in the calculation code.  It wouldn't hurt to have an assert somewhere that prevents creating "normal" compressed 1D surfaces.  As I said above, maybe assert in the surface state setup code or something.</p>
<p dir="ltr">--Jason</p>
<p dir="ltr">> -Nanley<br>
><br>
> ><br>
> >        switch (dim_layout) {<br>
> >        case ISL_DIM_LAYOUT_GEN4_3D:<br>
> > @@ -527,8 +526,8 @@ isl_calc_phys_level0_extent_sa(const struct isl_device *dev,<br>
> >        case ISL_DIM_LAYOUT_GEN9_1D:<br>
> >        case ISL_DIM_LAYOUT_GEN4_2D:<br>
> >           *phys_level0_sa = (struct isl_extent4d) {<br>
> > -            .w = info->width,<br>
> > -            .h = 1,<br>
> > +            .w = isl_align_npot(info->width, fmtl->bw),<br>
> > +            .h = fmtl->bh,<br>
> >              .d = 1,<br>
> >              .a = info->array_len,<br>
> >           };<br>
> > @@ -757,7 +756,7 @@ isl_calc_phys_slice0_extent_sa_gen9_1d(<br>
> >  {<br>
> >     MAYBE_UNUSED const struct isl_format_layout *fmtl = isl_format_get_layout(info->format);<br>
> ><br>
> > -   assert(phys_level0_sa->height == 1);<br>
> > +   assert(phys_level0_sa->height == fmtl->bh);<br>
> >     assert(phys_level0_sa->depth == 1);<br>
> >     assert(info->samples == 1);<br>
> >     assert(image_align_sa->w >= fmtl->bw);<br>
> > @@ -1567,9 +1566,12 @@ get_image_offset_sa_gen9_1d(const struct isl_surf *surf,<br>
> >                              uint32_t *x_offset_sa,<br>
> >                              uint32_t *y_offset_sa)<br>
> >  {<br>
> > +   MAYBE_UNUSED const struct isl_format_layout *fmtl =<br>
> > +      isl_format_get_layout(surf->format);<br>
> > +<br>
> >     assert(level < surf->levels);<br>
> >     assert(layer < surf->phys_level0_sa.array_len);<br>
> > -   assert(surf->phys_level0_sa.height == 1);<br>
> > +   assert(surf->phys_level0_sa.height == fmtl->bh);<br>
> >     assert(surf->phys_level0_sa.depth == 1);<br>
> >     assert(surf->samples == 1);<br>
> ><br>
> > --<br>
> > 2.5.0.400.gff86faf<br>
> ><br>
> > _______________________________________________<br>
> > mesa-dev mailing list<br>
> > <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> > <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br></p>