[Mesa-dev] [PATCH v4 01/18] anv/image: Do not override lower bits of dword.
Jason Ekstrand
jason at jlekstrand.net
Mon Mar 19 23:06:44 UTC 2018
On Thu, Mar 8, 2018 at 8:48 AM, Rafael Antognolli <
rafael.antognolli at intel.com> wrote:
> The lower bits seem to have extra fields in every platform but gen8
> (even though we don't use them in gen9). So just go ahead and avoid
> using them for the address.
>
> v4: Use Jason's suggestion for comment explaining the change.
>
> Signed-off-by: Rafael Antognolli <rafael.antognolli at intel.com>
> Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
> Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
> ---
> src/intel/vulkan/anv_image.c | 23 ++++++++++-------------
> 1 file changed, 10 insertions(+), 13 deletions(-)
>
> diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
> index 4d60f872c1e..b20d791751d 100644
> --- a/src/intel/vulkan/anv_image.c
> +++ b/src/intel/vulkan/anv_image.c
> @@ -1149,19 +1149,16 @@ anv_image_fill_surface_state(struct anv_device
> *device,
> .x_offset_sa = tile_x_sa,
> .y_offset_sa = tile_y_sa);
> state_inout->address = address + offset_B;
> - if (device->info.gen >= 8) {
> - state_inout->aux_address = aux_address;
> - } else {
> - /* On gen7 and prior, the bottom 12 bits of the MCS base address
> are
> - * used to store other information. This should be ok, however,
> - * because surface buffer addresses are always 4K page alinged.
> - */
> - uint32_t *aux_addr_dw = state_inout->state.map +
> - device->isl_dev.ss.aux_addr_offset;
> - assert((aux_address & 0xfff) == 0);
> - assert(aux_address == (*aux_addr_dw & 0xfffff000));
> - state_inout->aux_address = *aux_addr_dw;
> - }
> +
> + /* With the exception of gen8, the bottom 12 bits of the MCS base
> address
> + * are used to store other information. This should be ok, however,
> + * because the surface buffer addresses are always 4K page aligned.
> + */
>
We should also update the comment on the aux_address field in anv_private.h
> + uint32_t *aux_addr_dw = state_inout->state.map +
> + device->isl_dev.ss.aux_addr_offset;
> + assert((aux_address & 0xfff) == 0);
> + assert(aux_address == (*aux_addr_dw & 0xfffff000));
> + state_inout->aux_address = *aux_addr_dw;
>
Now that I think about this a bit harder, I think this is going to get
sticky in the future since it throws away all but the bottom 32 bits. I
think it's probably ok since we do have a good assert there. Feel free to
ignore this comment for now.
> }
>
> anv_state_flush(device, state_inout->state);
> --
> 2.14.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180319/fcec9426/attachment.html>
More information about the mesa-dev
mailing list