<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jul 15, 2016 at 9:57 AM, Nanley Chery <span dir="ltr"><<a href="mailto:nanleychery@gmail.com" target="_blank">nanleychery@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Thu, Jul 14, 2016 at 09:20:08PM -0700, Jason Ekstrand wrote:<br>
> The old calculation, which used view->offset, encorporated buffer->offset<br>
> into the size calculation where it doesn't belong.  This meant that, if<br>
> buffer->offset > buffer->size, you would always get a negative size.  This<br>
> fixes 170 dEQP-VK.renderpass.attachment.* Vulkan CTS tests on Haswell.<br>
><br>
<br>
</span>Nice patch.<br>
<span class=""><br>
> Signed-off-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br>
> Cc: "12.0" <<a href="mailto:mesa-stable@lists.freedesktop.org">mesa-stable@lists.freedesktop.org</a>><br>
> ---<br>
>  src/intel/vulkan/anv_image.c | 2 +-<br>
>  1 file changed, 1 insertion(+), 1 deletion(-)<br>
><br>
> diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c<br>
> index 23fdd93..fe5b124 100644<br>
> --- a/src/intel/vulkan/anv_image.c<br>
> +++ b/src/intel/vulkan/anv_image.c<br>
> @@ -631,7 +631,7 @@ void anv_buffer_view_init(struct anv_buffer_view *view,<br>
>     view->bo = buffer->bo;<br>
>     view->offset = buffer->offset + pCreateInfo->offset;<br>
>     view->range = pCreateInfo->range == VK_WHOLE_SIZE ?<br>
> -                 buffer->size - view->offset : pCreateInfo->range;<br>
> +                 buffer->size - pCreateInfo->offset : pCreateInfo->range;<br>
><br>
<br>
</span>This is almost correct. The range member definition (11.2. Buffer Views)<br>
has a corner case for VK_WHOLE_SIZE. It states that if<br>
R = (buffer_size - buffer_view_offset) is not a multiple of<br>
buffer_view_format_size, then you must set the range member to<br>
the nearest smaller multiple of buffer_view_format_size.<br></blockquote><div><br></div><div>Thanks for your care!  I was not thinking of that corner-case.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Which is to say,<br>
 if (requested_range == VK_WHOLE_SIZE)<br>
    actual_range = ALIGN_DOWN(R, buffer_view_format_size);<br></blockquote><div><br></div><div>That said, the hardware packet is in number of elements so we divide by the format size and round down in isl_buffer_fill_state so I think it's ok.<br></div><div>--Jason<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
- Nanley<br>
<span class=""><br>
>     if (buffer->usage & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT) {<br>
>        view->surface_state = alloc_surface_state(device, cmd_buffer);<br>
> --<br>
> 2.5.0.400.gff86faf<br>
><br>
</span>> _______________________________________________<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" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div><br></div></div>