Re: [Mesa-dev] [PATCH 07/32] i965/miptree: Make layer_range_length return locical layers

2017-07-20 Thread Jason Ekstrand
On Thu, Jul 20, 2017 at 8:08 AM, Jason Ekstrand 
wrote:

> On July 20, 2017 2:27:50 AM "Pohjolainen, Topi" <
> topi.pohjolai...@gmail.com> wrote:
>
>
>> This still leaves create_aux_state_map() using physical number of layers
>> for
>> the actual allocation. I toyed a little with this hoping to put it in
>> front my
>> i965-to-isl work. In the end it looks to me that moving away from physical
>> is easier/cleaner once the conversion to isl is done. This prevents us
>> from
>> addressing both isl-based and native slice table-based leaving just the
>> isl-based. Moreover in case of slice table-based we would need to
>> calculate
>> a layer-number divider as the slice table itself stores depth as physical.
>>
>> There are altogether 6 places calling get_num_phys_layers() in the end.
>> I think these document nicely all the locations we need to consider. How
>> does
>> this sound?
>>
>
> That's fine with me.
>

To put a finer point on it, I'm fine with your patch landing as-is (go
ahead and add my R-B).  However, I am going to have to switch it over to
logical as part of my series since the MCS partial resolve code relies on
it being logical.


> On Wed, Jul 19, 2017 at 02:01:33PM -0700, Jason Ekstrand wrote:
>>
>>> ---
>>>  src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 14 ++
>>>  1 file changed, 10 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
>>> b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
>>> index 3eac077..8d8ea43 100644
>>> --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
>>> +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
>>> @@ -2461,12 +2461,18 @@ miptree_layer_range_length(const struct
>>> intel_mipmap_tree *mt, uint32_t level,
>>> assert(level <= mt->last_level);
>>> uint32_t total_num_layers;
>>>
>>> -   if (mt->surf.size > 0)
>>> +   if (mt->surf.size > 0) {
>>>total_num_layers = mt->surf.dim == ISL_SURF_DIM_3D ?
>>> - minify(mt->surf.phys_level0_sa.depth, level) :
>>> - mt->surf.phys_level0_sa.array_len;
>>> -   else
>>> + minify(mt->surf.logical_level0_px.depth, level) :
>>> + mt->surf.logical_level0_px.array_len;
>>> +   } else {
>>>total_num_layers = mt->level[level].depth;
>>> +  if (mt->msaa_layout == INTEL_MSAA_LAYOUT_UMS ||
>>> +  mt->msaa_layout == INTEL_MSAA_LAYOUT_CMS) {
>>> + assert(total_num_layers % mt->num_samples == 0);
>>> + total_num_layers /= mt->num_samples;
>>> +  }
>>> +   }
>>>
>>> assert(start_layer < total_num_layers);
>>> if (num_layers == INTEL_REMAINING_LAYERS)
>>> --
>>> 2.5.0.400.gff86faf
>>>
>>> ___
>>> mesa-dev mailing list
>>> mesa-dev@lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>>
>>
>
>
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 07/32] i965/miptree: Make layer_range_length return locical layers

2017-07-20 Thread Jason Ekstrand
On July 20, 2017 2:27:50 AM "Pohjolainen, Topi" 
 wrote:




This still leaves create_aux_state_map() using physical number of layers for
the actual allocation. I toyed a little with this hoping to put it in front my
i965-to-isl work. In the end it looks to me that moving away from physical
is easier/cleaner once the conversion to isl is done. This prevents us from
addressing both isl-based and native slice table-based leaving just the
isl-based. Moreover in case of slice table-based we would need to calculate
a layer-number divider as the slice table itself stores depth as physical.

There are altogether 6 places calling get_num_phys_layers() in the end.
I think these document nicely all the locations we need to consider. How does
this sound?


That's fine with me.


On Wed, Jul 19, 2017 at 02:01:33PM -0700, Jason Ekstrand wrote:

---
 src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 14 ++
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c 
b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c

index 3eac077..8d8ea43 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -2461,12 +2461,18 @@ miptree_layer_range_length(const struct 
intel_mipmap_tree *mt, uint32_t level,

assert(level <= mt->last_level);
uint32_t total_num_layers;

-   if (mt->surf.size > 0)
+   if (mt->surf.size > 0) {
   total_num_layers = mt->surf.dim == ISL_SURF_DIM_3D ?
- minify(mt->surf.phys_level0_sa.depth, level) :
- mt->surf.phys_level0_sa.array_len;
-   else
+ minify(mt->surf.logical_level0_px.depth, level) :
+ mt->surf.logical_level0_px.array_len;
+   } else {
   total_num_layers = mt->level[level].depth;
+  if (mt->msaa_layout == INTEL_MSAA_LAYOUT_UMS ||
+  mt->msaa_layout == INTEL_MSAA_LAYOUT_CMS) {
+ assert(total_num_layers % mt->num_samples == 0);
+ total_num_layers /= mt->num_samples;
+  }
+   }

assert(start_layer < total_num_layers);
if (num_layers == INTEL_REMAINING_LAYERS)
--
2.5.0.400.gff86faf

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev



___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 07/32] i965/miptree: Make layer_range_length return locical layers

2017-07-20 Thread Pohjolainen, Topi

This still leaves create_aux_state_map() using physical number of layers for
the actual allocation. I toyed a little with this hoping to put it in front my
i965-to-isl work. In the end it looks to me that moving away from physical
is easier/cleaner once the conversion to isl is done. This prevents us from
addressing both isl-based and native slice table-based leaving just the
isl-based. Moreover in case of slice table-based we would need to calculate
a layer-number divider as the slice table itself stores depth as physical.

There are altogether 6 places calling get_num_phys_layers() in the end.
I think these document nicely all the locations we need to consider. How does
this sound?

On Wed, Jul 19, 2017 at 02:01:33PM -0700, Jason Ekstrand wrote:
> ---
>  src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 14 ++
>  1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c 
> b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> index 3eac077..8d8ea43 100644
> --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> @@ -2461,12 +2461,18 @@ miptree_layer_range_length(const struct 
> intel_mipmap_tree *mt, uint32_t level,
> assert(level <= mt->last_level);
> uint32_t total_num_layers;
>  
> -   if (mt->surf.size > 0)
> +   if (mt->surf.size > 0) {
>total_num_layers = mt->surf.dim == ISL_SURF_DIM_3D ?
> - minify(mt->surf.phys_level0_sa.depth, level) :
> - mt->surf.phys_level0_sa.array_len;
> -   else 
> + minify(mt->surf.logical_level0_px.depth, level) :
> + mt->surf.logical_level0_px.array_len;
> +   } else {
>total_num_layers = mt->level[level].depth;
> +  if (mt->msaa_layout == INTEL_MSAA_LAYOUT_UMS ||
> +  mt->msaa_layout == INTEL_MSAA_LAYOUT_CMS) {
> + assert(total_num_layers % mt->num_samples == 0);
> + total_num_layers /= mt->num_samples;
> +  }
> +   }
>  
> assert(start_layer < total_num_layers);
> if (num_layers == INTEL_REMAINING_LAYERS)
> -- 
> 2.5.0.400.gff86faf
> 
> ___
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 07/32] i965/miptree: Make layer_range_length return locical layers

2017-07-19 Thread Jason Ekstrand
---
 src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 14 ++
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c 
b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index 3eac077..8d8ea43 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -2461,12 +2461,18 @@ miptree_layer_range_length(const struct 
intel_mipmap_tree *mt, uint32_t level,
assert(level <= mt->last_level);
uint32_t total_num_layers;
 
-   if (mt->surf.size > 0)
+   if (mt->surf.size > 0) {
   total_num_layers = mt->surf.dim == ISL_SURF_DIM_3D ?
- minify(mt->surf.phys_level0_sa.depth, level) :
- mt->surf.phys_level0_sa.array_len;
-   else 
+ minify(mt->surf.logical_level0_px.depth, level) :
+ mt->surf.logical_level0_px.array_len;
+   } else {
   total_num_layers = mt->level[level].depth;
+  if (mt->msaa_layout == INTEL_MSAA_LAYOUT_UMS ||
+  mt->msaa_layout == INTEL_MSAA_LAYOUT_CMS) {
+ assert(total_num_layers % mt->num_samples == 0);
+ total_num_layers /= mt->num_samples;
+  }
+   }
 
assert(start_layer < total_num_layers);
if (num_layers == INTEL_REMAINING_LAYERS)
-- 
2.5.0.400.gff86faf

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev