[Mesa-dev] [PATCH 1/3] radv/clear: add r32g32b32a32 fast clear support

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Fri Jun 30 22:15:22 UTC 2017


You may need to remove

if (vk_format_get_blocksizebits(iview->image->vk_format) > 64)
        goto fail;



On Mon, Jun 26, 2017 at 3:49 AM, Dave Airlie <airlied at gmail.com> wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> We can only fast clear 128-bit images if the r/g/b channels
> are the same, and we are using DCC.
>
> For DCC we'll bail out on translate if this isn't true,
> and we catch cmask clears explicitly.
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
>  src/amd/vulkan/radv_formats.c    | 7 +++++++
>  src/amd/vulkan/radv_meta_clear.c | 5 +++++
>  2 files changed, 12 insertions(+)
>
> diff --git a/src/amd/vulkan/radv_formats.c b/src/amd/vulkan/radv_formats.c
> index b13adb9..0ca88ef 100644
> --- a/src/amd/vulkan/radv_formats.c
> +++ b/src/amd/vulkan/radv_formats.c
> @@ -969,6 +969,13 @@ bool radv_format_pack_clear_color(VkFormat format,
>                 clear_vals[0] = fui(value->float32[0]);
>                 clear_vals[1] = fui(value->float32[1]);
>                 break;
> +       case VK_FORMAT_R32G32B32A32_SFLOAT:
> +               if (value->float32[0] != value->float32[1] ||
> +                   value->float32[0] != value->float32[2])
> +                       return false;
> +               clear_vals[0] = fui(value->float32[0]);
> +               clear_vals[1] = fui(value->float32[3]);
> +               break;
>         case VK_FORMAT_R32_SFLOAT:
>                 clear_vals[1] = 0;
>                 clear_vals[0] = fui(value->float32[0]);
> diff --git a/src/amd/vulkan/radv_meta_clear.c b/src/amd/vulkan/radv_meta_clear.c
> index 0648513..002e126 100644
> --- a/src/amd/vulkan/radv_meta_clear.c
> +++ b/src/amd/vulkan/radv_meta_clear.c
> @@ -938,6 +938,11 @@ emit_fast_color_clear(struct radv_cmd_buffer *cmd_buffer,
>                                  iview->image->offset + iview->image->dcc_offset,
>                                  iview->image->surface.dcc_size, 0x20202020);
>         } else {
> +
> +               if (iview->image->surface.bpe > 8) {
> +                       /* 128 bit formats not supported */
> +                       return false;
> +               }
>                 radv_fill_buffer(cmd_buffer, iview->image->bo,
>                                  iview->image->offset + iview->image->cmask.offset,
>                                  iview->image->cmask.size, 0);
> --
> 2.9.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list