[Mesa-dev] [PATCH 1/3] radv/clear: add r32g32b32a32 fast clear support
Dave Airlie
airlied at gmail.com
Mon Jun 26 01:49:22 UTC 2017
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
More information about the mesa-dev
mailing list