xref: /aosp_15_r20/external/mesa3d/src/amd/vulkan/radix_sort/radix_sort_vk_ext.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 // Copyright 2021 The Fuchsia Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef SRC_GRAPHICS_LIB_COMPUTE_RADIX_SORT_PLATFORMS_VK_RADIX_SORT_VK_EXT_H_
6 #define SRC_GRAPHICS_LIB_COMPUTE_RADIX_SORT_PLATFORMS_VK_RADIX_SORT_VK_EXT_H_
7 
8 //
9 //
10 //
11 
12 #include <vulkan/vulkan_core.h>
13 
14 //
15 //
16 //
17 
18 #include <stdbool.h>
19 #include <stdint.h>
20 
21 //
22 //
23 //
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 //
30 // Radix sort extensions
31 // ---------------------
32 //
33 #ifndef RADIX_SORT_VK_DISABLE_EXTENSIONS
34 
35 //
36 // Extension types
37 //
38 enum radix_sort_vk_ext_type
39 {
40   RADIX_SORT_VK_EXT_TIMESTAMPS
41 };
42 
43 //
44 // Timestamp each logical step of the algorithm
45 //
46 // Number of timestamps is: 5 + (number of subpasses)
47 //
48 //   * direct   dispatch: 4 + subpass count
49 //   * indirect dispatch: 5 + subpass count
50 //
51 // Indirect / 32-bit keyvals: 9
52 // Indirect / 64-bit keyvals: 13
53 //
54 struct radix_sort_vk_ext_timestamps
55 {
56   void *                      ext;
57   enum radix_sort_vk_ext_type type;
58   uint32_t                    timestamp_count;
59   VkQueryPool                 timestamps;
60   uint32_t                    timestamps_set;
61 };
62 
63 #endif
64 
65 //
66 //
67 //dsc
68 
69 #ifdef __cplusplus
70 }
71 #endif
72 
73 //
74 //
75 //
76 
77 #endif  // SRC_GRAPHICS_LIB_COMPUTE_RADIX_SORT_PLATFORMS_VK_RADIX_SORT_VK_EXT_H_
78