MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-Samples / choose_image_usage

Function choose_image_usage

framework/core/swapchain.cpp:214–264  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

212}
213
214inline std::set<VkImageUsageFlagBits> choose_image_usage(const std::set<VkImageUsageFlagBits> &requested_image_usage_flags, VkImageUsageFlags supported_image_usage, VkFormatFeatureFlags supported_features)
215{
216 std::set<VkImageUsageFlagBits> validated_image_usage_flags;
217 for (auto flag : requested_image_usage_flags)
218 {
219 if ((flag & supported_image_usage) && validate_format_feature(flag, supported_features))
220 {
221 validated_image_usage_flags.insert(flag);
222 }
223 else
224 {
225 LOGW("(Swapchain) Image usage ({}) requested but not supported.", to_string(flag));
226 }
227 }
228
229 if (validated_image_usage_flags.empty())
230 {
231 // Pick the first format from list of defaults, if supported
232 static const std::vector<VkImageUsageFlagBits> image_usage_flags = {
233 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
234 VK_IMAGE_USAGE_STORAGE_BIT,
235 VK_IMAGE_USAGE_SAMPLED_BIT,
236 VK_IMAGE_USAGE_TRANSFER_DST_BIT};
237
238 for (VkImageUsageFlagBits image_usage : image_usage_flags)
239 {
240 if ((image_usage & supported_image_usage) && validate_format_feature(image_usage, supported_features))
241 {
242 validated_image_usage_flags.insert(image_usage);
243 break;
244 }
245 }
246 }
247
248 if (!validated_image_usage_flags.empty())
249 {
250 // Log image usage flags used
251 std::string usage_list;
252 for (VkImageUsageFlagBits image_usage : validated_image_usage_flags)
253 {
254 usage_list += to_string(image_usage) + " ";
255 }
256 LOGI("(Swapchain) Image usage flags: {}", usage_list);
257 }
258 else
259 {
260 throw std::runtime_error("No compatible image usage found.");
261 }
262
263 return validated_image_usage_flags;
264}
265
266inline VkImageUsageFlags composite_image_flags(std::set<VkImageUsageFlagBits> &image_usage_flags)
267{

Callers 1

SwapchainMethod · 0.70

Calls 4

emptyMethod · 0.80
validate_format_featureFunction · 0.70
to_stringFunction · 0.50
insertMethod · 0.45

Tested by

no test coverage detected