summaryrefslogtreecommitdiffstats
path: root/src/amd/vulkan/radv_formats.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/amd/vulkan/radv_formats.c')
-rw-r--r--src/amd/vulkan/radv_formats.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/amd/vulkan/radv_formats.c b/src/amd/vulkan/radv_formats.c
index 4d0aca1490d..7c3bbc0f66f 100644
--- a/src/amd/vulkan/radv_formats.c
+++ b/src/amd/vulkan/radv_formats.c
@@ -977,6 +977,27 @@ bool radv_format_pack_clear_color(VkFormat format,
clear_vals[0] = float3_to_r11g11b10f(value->float32);
clear_vals[1] = 0;
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_R32G32B32A32_UINT:
+ if (value->uint32[0] != value->uint32[1] ||
+ value->uint32[0] != value->uint32[2])
+ return false;
+ clear_vals[0] = value->uint32[0];
+ clear_vals[1] = value->uint32[3];
+ break;
+ case VK_FORMAT_R32G32B32A32_SINT:
+ if (value->int32[0] != value->int32[1] ||
+ value->int32[0] != value->int32[2])
+ return false;
+ clear_vals[0] = value->int32[0];
+ clear_vals[1] = value->int32[3];
+ break;
default:
fprintf(stderr, "failed to fast clear %d\n", format);
return false;