xref: /aosp_15_r20/external/mesa3d/src/amd/vulkan/radv_query.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 /*
2  * Copyright © 2016 Red Hat.
3  * Copyright © 2016 Bas Nieuwenhuizen
4  *
5  * based in part on anv driver which is:
6  * Copyright © 2015 Intel Corporation
7  *
8  * SPDX-License-Identifier: MIT
9  */
10 
11 #ifndef RADV_QUERY_H
12 #define RADV_QUERY_H
13 
14 #include "amd_family.h"
15 
16 #include "vk_query_pool.h"
17 
18 struct radv_cmd_buffer;
19 
20 struct radv_query_pool {
21    struct vk_query_pool vk;
22    struct radeon_winsys_bo *bo;
23    uint32_t stride;
24    uint32_t availability_offset;
25    uint64_t size;
26    char *ptr;
27    bool uses_gds; /* For NGG GS on GFX10+ */
28    bool uses_ace; /* For task shader invocations on GFX10.3+ */
29 };
30 
31 VK_DEFINE_NONDISP_HANDLE_CASTS(radv_query_pool, vk.base, VkQueryPool, VK_OBJECT_TYPE_QUERY_POOL)
32 
33 static inline uint64_t
radv_get_tdr_timeout_for_ip(enum amd_ip_type ip_type)34 radv_get_tdr_timeout_for_ip(enum amd_ip_type ip_type)
35 {
36    const uint64_t compute_tdr_duration_ns = 60000000000ull; /* 1 minute (default in kernel) */
37    const uint64_t other_tdr_duration_ns = 10000000000ull;   /* 10 seconds (default in kernel) */
38 
39    return ip_type == AMD_IP_COMPUTE ? compute_tdr_duration_ns : other_tdr_duration_ns;
40 }
41 
42 void radv_write_timestamp(struct radv_cmd_buffer *cmd_buffer, uint64_t va, VkPipelineStageFlags2 stage);
43 
44 #endif /* RADV_QUERY_H */
45