• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_emulated_queries;
28    bool uses_ace; /* For task shader invocations on GFX10.3+ */
29    bool uses_shader_query_buf; /* For generated/written primitives on GFX12+ */
30 };
31 
32 VK_DEFINE_NONDISP_HANDLE_CASTS(radv_query_pool, vk.base, VkQueryPool, VK_OBJECT_TYPE_QUERY_POOL)
33 
34 static inline uint64_t
radv_get_tdr_timeout_for_ip(enum amd_ip_type ip_type)35 radv_get_tdr_timeout_for_ip(enum amd_ip_type ip_type)
36 {
37    const uint64_t compute_tdr_duration_ns = 60000000000ull; /* 1 minute (default in kernel) */
38    const uint64_t other_tdr_duration_ns = 10000000000ull;   /* 10 seconds (default in kernel) */
39 
40    return ip_type == AMD_IP_COMPUTE ? compute_tdr_duration_ns : other_tdr_duration_ns;
41 }
42 
43 void radv_write_timestamp(struct radv_cmd_buffer *cmd_buffer, uint64_t va, VkPipelineStageFlags2 stage);
44 
45 #endif /* RADV_QUERY_H */
46