<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Jan 24, 2017 at 12:56 AM, Iago Toral <span dir="ltr"><<a href="mailto:itoral@igalia.com" target="_blank">itoral@igalia.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 Mon, 2017-01-23 at 14:12 -0800, Jason Ekstrand wrote:<br>
> As of VK_KHR_maintenance1, these are supposed to be reported for any<br>
> formats on which we support transfer operations.  For us, this is<br>
> anything that we can texture from.<br>
> ---<br>
>  src/intel/vulkan/anv_formats.<wbr>c | 9 ++++++++-<br>
>  1 file changed, 8 insertions(+), 1 deletion(-)<br>
><br>
> diff --git a/src/intel/vulkan/anv_<wbr>formats.c<br>
> b/src/intel/vulkan/anv_<wbr>formats.c<br>
> index a5d783e..39001d6 100644<br>
> --- a/src/intel/vulkan/anv_<wbr>formats.c<br>
> +++ b/src/intel/vulkan/anv_<wbr>formats.c<br>
> @@ -348,6 +348,11 @@ get_image_format_properties(<wbr>const struct<br>
> gen_device_info *devinfo,<br>
>     if (base == ISL_FORMAT_R32_SINT || base == ISL_FORMAT_R32_UINT)<br>
>        flags |= VK_FORMAT_FEATURE_STORAGE_<wbr>IMAGE_ATOMIC_BIT;<br>
>  <br>
> +   if (flags) {<br>
> +      flags |= VK_FORMAT_FEATURE_TRANSFER_<wbr>SRC_BIT_KHR |<br>
> +               VK_FORMAT_<wbr>FEATURE_TRANSFER_DST_BIT_KHR;<br>
> +   }<br>
> +<br>
<br>
</span>I guess it does not matter, but just in case: if we want to report<br>
these flags only for formats we can texture from, shouldn't we add this<br>
hunk right after the block that starts with:<br>
<br>
if (isl_format_supports_sampling(<wbr>...)) {<br>
...<br>
}<br>
<br>
In other words, I suppose the checks we have below that can't possibly<br>
set flags for any formats we can't texture from, right?<br></blockquote><div><br></div><div>Yes, texturing should be a strict superset of all of the other checks so putting it there would be equivalent.  I chose to do it this way because the idea is that if we support any image operations at all on the format, then we support blitting.<br><br></div><div>That said... This reminds me that we should also return TRANSFER_SRC/DST_BIT for buffer formats.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">
>     return flags;<br>
>  }<br>
>  <br>
> @@ -393,7 +398,9 @@ anv_physical_device_get_<wbr>format_properties(struct<br>
> anv_physical_device *physical_d<br>
>           tiled |= VK_FORMAT_FEATURE_SAMPLED_<wbr>IMAGE_BIT;<br>
>  <br>
>        tiled |= VK_FORMAT_FEATURE_BLIT_SRC_BIT |<br>
> -               VK_FORMAT_<wbr>FEATURE_BLIT_DST_BIT;<br>
> +               VK_FORMAT_<wbr>FEATURE_BLIT_DST_BIT |<br>
> +               VK_FORMAT_<wbr>FEATURE_TRANSFER_SRC_BIT_KHR |<br>
> +               VK_FORMAT_<wbr>FEATURE_TRANSFER_DST_BIT_KHR;<br>
>     } else {<br>
>        struct anv_format linear_fmt, tiled_fmt;<br>
>        linear_fmt = anv_get_format(&physical_<wbr>device->info, format,<br>
</div></div></blockquote></div><br></div></div>