• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2018 Google
3  * SPDX-License-Identifier: MIT
4  */
5 #pragma once
6 
7 #include <vulkan/vulkan.h>
8 
9 #ifdef __cplusplus
10 #include <algorithm>
11 #endif
12 
13 // VulkanStream features
14 #define VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT (1 << 0)
15 #define VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT (1 << 1)
16 #define VULKAN_STREAM_FEATURE_SHADER_FLOAT16_INT8_BIT (1 << 2)
17 #define VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT (1 << 3)
18 
19 #define VK_YCBCR_CONVERSION_DO_NOTHING ((VkSamplerYcbcrConversion)0x1111111111111111)
20 
21 #ifdef __cplusplus
22 
23 template <class T, typename F>
arrayany(const T * arr,uint32_t begin,uint32_t end,const F & func)24 bool arrayany(const T* arr, uint32_t begin, uint32_t end, const F& func) {
25     const T* e = arr + end;
26     return std::find_if(arr + begin, e, func) != e;
27 }
28 
29 #define DEFINE_ALIAS_FUNCTION(ORIGINAL_FN, ALIAS_FN)                                             \
30     template <typename... Args>                                                                  \
31     inline auto ALIAS_FN(Args&&... args) -> decltype(ORIGINAL_FN(std::forward<Args>(args)...)) { \
32         return ORIGINAL_FN(std::forward<Args>(args)...);                                         \
33     }
34 
35 #endif
36