xref: /aosp_15_r20/external/mesa3d/src/freedreno/vulkan/tu_common.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright © 2016 Red Hat.
3*61046927SAndroid Build Coastguard Worker  * Copyright © 2016 Bas Nieuwenhuizen
4*61046927SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
5*61046927SAndroid Build Coastguard Worker  *
6*61046927SAndroid Build Coastguard Worker  * based in part on anv driver which is:
7*61046927SAndroid Build Coastguard Worker  * Copyright © 2015 Intel Corporation
8*61046927SAndroid Build Coastguard Worker  */
9*61046927SAndroid Build Coastguard Worker 
10*61046927SAndroid Build Coastguard Worker #ifndef TU_COMMON_H
11*61046927SAndroid Build Coastguard Worker #define TU_COMMON_H
12*61046927SAndroid Build Coastguard Worker 
13*61046927SAndroid Build Coastguard Worker #include <assert.h>
14*61046927SAndroid Build Coastguard Worker #include <pthread.h>
15*61046927SAndroid Build Coastguard Worker #include <stdbool.h>
16*61046927SAndroid Build Coastguard Worker #include <stdint.h>
17*61046927SAndroid Build Coastguard Worker #include <stdio.h>
18*61046927SAndroid Build Coastguard Worker #include <stdlib.h>
19*61046927SAndroid Build Coastguard Worker #include <string.h>
20*61046927SAndroid Build Coastguard Worker #include <tuple>
21*61046927SAndroid Build Coastguard Worker #ifdef HAVE_VALGRIND
22*61046927SAndroid Build Coastguard Worker #include <memcheck.h>
23*61046927SAndroid Build Coastguard Worker #include <valgrind.h>
24*61046927SAndroid Build Coastguard Worker #define VG(x) x
25*61046927SAndroid Build Coastguard Worker #else
26*61046927SAndroid Build Coastguard Worker #define VG(x) ((void)0)
27*61046927SAndroid Build Coastguard Worker #endif
28*61046927SAndroid Build Coastguard Worker 
29*61046927SAndroid Build Coastguard Worker #define MESA_LOG_TAG "TU"
30*61046927SAndroid Build Coastguard Worker 
31*61046927SAndroid Build Coastguard Worker #include "c11/threads.h"
32*61046927SAndroid Build Coastguard Worker #include "util/rounding.h"
33*61046927SAndroid Build Coastguard Worker #include "util/bitscan.h"
34*61046927SAndroid Build Coastguard Worker #include "util/detect_os.h"
35*61046927SAndroid Build Coastguard Worker #include "util/list.h"
36*61046927SAndroid Build Coastguard Worker #include "util/log.h"
37*61046927SAndroid Build Coastguard Worker #include "util/macros.h"
38*61046927SAndroid Build Coastguard Worker #include "util/perf/cpu_trace.h"
39*61046927SAndroid Build Coastguard Worker #include "util/sparse_array.h"
40*61046927SAndroid Build Coastguard Worker #include "util/u_atomic.h"
41*61046927SAndroid Build Coastguard Worker #include "util/u_dynarray.h"
42*61046927SAndroid Build Coastguard Worker #include "util/xmlconfig.h"
43*61046927SAndroid Build Coastguard Worker #include "util/perf/u_trace.h"
44*61046927SAndroid Build Coastguard Worker #include "vk_alloc.h"
45*61046927SAndroid Build Coastguard Worker #include "vk_debug_report.h"
46*61046927SAndroid Build Coastguard Worker #include "vk_device.h"
47*61046927SAndroid Build Coastguard Worker #include "vk_dispatch_table.h"
48*61046927SAndroid Build Coastguard Worker #include "vk_extensions.h"
49*61046927SAndroid Build Coastguard Worker #include "vk_instance.h"
50*61046927SAndroid Build Coastguard Worker #include "vk_log.h"
51*61046927SAndroid Build Coastguard Worker #include "vk_physical_device.h"
52*61046927SAndroid Build Coastguard Worker #include "vk_pipeline_cache.h"
53*61046927SAndroid Build Coastguard Worker #include "wsi_common.h"
54*61046927SAndroid Build Coastguard Worker 
55*61046927SAndroid Build Coastguard Worker #include "ir3/ir3_compiler.h"
56*61046927SAndroid Build Coastguard Worker #include "ir3/ir3_shader.h"
57*61046927SAndroid Build Coastguard Worker 
58*61046927SAndroid Build Coastguard Worker #include "adreno_common.xml.h"
59*61046927SAndroid Build Coastguard Worker #include "adreno_pm4.xml.h"
60*61046927SAndroid Build Coastguard Worker #include "a6xx.xml.h"
61*61046927SAndroid Build Coastguard Worker #include "fdl/freedreno_layout.h"
62*61046927SAndroid Build Coastguard Worker #include "common/freedreno_dev_info.h"
63*61046927SAndroid Build Coastguard Worker #include "common/freedreno_common.h"
64*61046927SAndroid Build Coastguard Worker #include "perfcntrs/freedreno_perfcntr.h"
65*61046927SAndroid Build Coastguard Worker 
66*61046927SAndroid Build Coastguard Worker #include <vulkan/vk_android_native_buffer.h>
67*61046927SAndroid Build Coastguard Worker #include <vulkan/vk_icd.h>
68*61046927SAndroid Build Coastguard Worker #include <vulkan/vulkan.h>
69*61046927SAndroid Build Coastguard Worker 
70*61046927SAndroid Build Coastguard Worker #include "tu_entrypoints.h"
71*61046927SAndroid Build Coastguard Worker 
72*61046927SAndroid Build Coastguard Worker #include "vk_format.h"
73*61046927SAndroid Build Coastguard Worker #include "vk_image.h"
74*61046927SAndroid Build Coastguard Worker #include "vk_command_buffer.h"
75*61046927SAndroid Build Coastguard Worker #include "vk_command_pool.h"
76*61046927SAndroid Build Coastguard Worker #include "vk_common_entrypoints.h"
77*61046927SAndroid Build Coastguard Worker #include "vk_queue.h"
78*61046927SAndroid Build Coastguard Worker #include "vk_object.h"
79*61046927SAndroid Build Coastguard Worker #include "vk_sync.h"
80*61046927SAndroid Build Coastguard Worker #include "vk_drm_syncobj.h"
81*61046927SAndroid Build Coastguard Worker #include "vk_sync_timeline.h"
82*61046927SAndroid Build Coastguard Worker 
83*61046927SAndroid Build Coastguard Worker #define MAX_VBS 32
84*61046927SAndroid Build Coastguard Worker #define MAX_VERTEX_ATTRIBS 32
85*61046927SAndroid Build Coastguard Worker #define MAX_RTS 8
86*61046927SAndroid Build Coastguard Worker #define MAX_VSC_PIPES 32
87*61046927SAndroid Build Coastguard Worker #define MAX_VIEWPORTS 16
88*61046927SAndroid Build Coastguard Worker #define MAX_VIEWPORT_SIZE (1 << 14)
89*61046927SAndroid Build Coastguard Worker #define MAX_SCISSORS 16
90*61046927SAndroid Build Coastguard Worker #define MAX_DISCARD_RECTANGLES 4
91*61046927SAndroid Build Coastguard Worker #define MAX_PUSH_CONSTANTS_SIZE 256
92*61046927SAndroid Build Coastguard Worker #define MAX_PUSH_DESCRIPTORS 32
93*61046927SAndroid Build Coastguard Worker #define MAX_DYNAMIC_UNIFORM_BUFFERS 16
94*61046927SAndroid Build Coastguard Worker #define MAX_DYNAMIC_STORAGE_BUFFERS 8
95*61046927SAndroid Build Coastguard Worker #define MAX_DYNAMIC_BUFFERS_SIZE                                             \
96*61046927SAndroid Build Coastguard Worker    (MAX_DYNAMIC_UNIFORM_BUFFERS + 2 * MAX_DYNAMIC_STORAGE_BUFFERS) *         \
97*61046927SAndroid Build Coastguard Worker    A6XX_TEX_CONST_DWORDS
98*61046927SAndroid Build Coastguard Worker 
99*61046927SAndroid Build Coastguard Worker #define SAMPLE_LOCATION_MIN 0.f
100*61046927SAndroid Build Coastguard Worker #define SAMPLE_LOCATION_MAX 0.9375f
101*61046927SAndroid Build Coastguard Worker 
102*61046927SAndroid Build Coastguard Worker #define TU_MAX_DRM_DEVICES 8
103*61046927SAndroid Build Coastguard Worker #define MAX_VIEWS 16
104*61046927SAndroid Build Coastguard Worker #define MAX_BIND_POINTS 2 /* compute + graphics */
105*61046927SAndroid Build Coastguard Worker /* match the latest Qualcomm driver which is also a hw limit on later gens */
106*61046927SAndroid Build Coastguard Worker #define MAX_STORAGE_BUFFER_RANGE (1u << 27)
107*61046927SAndroid Build Coastguard Worker /* We use ldc for uniform buffer loads, just like the Qualcomm driver, so
108*61046927SAndroid Build Coastguard Worker  * expose the same maximum range.
109*61046927SAndroid Build Coastguard Worker  * TODO: The SIZE bitfield is 15 bits, and in 4-dword units, so the actual
110*61046927SAndroid Build Coastguard Worker  * range might be higher.
111*61046927SAndroid Build Coastguard Worker  */
112*61046927SAndroid Build Coastguard Worker #define MAX_UNIFORM_BUFFER_RANGE 0x10000
113*61046927SAndroid Build Coastguard Worker 
114*61046927SAndroid Build Coastguard Worker /* Use the minimum maximum to guarantee that it can always fit in the safe
115*61046927SAndroid Build Coastguard Worker  * const file size, even with maximum push constant usage and driver params.
116*61046927SAndroid Build Coastguard Worker  */
117*61046927SAndroid Build Coastguard Worker #define MAX_INLINE_UBO_RANGE 256
118*61046927SAndroid Build Coastguard Worker #define MAX_INLINE_UBOS 4
119*61046927SAndroid Build Coastguard Worker 
120*61046927SAndroid Build Coastguard Worker #define A6XX_TEX_CONST_DWORDS 16
121*61046927SAndroid Build Coastguard Worker #define A6XX_TEX_SAMP_DWORDS 4
122*61046927SAndroid Build Coastguard Worker 
123*61046927SAndroid Build Coastguard Worker /* We sample the fragment density map on the CPU, so technically the
124*61046927SAndroid Build Coastguard Worker  * minimum/maximum texel size is arbitrary. However sizes smaller than the
125*61046927SAndroid Build Coastguard Worker  * minimum tile width alignment of 32 are likely pointless, so we use that as
126*61046927SAndroid Build Coastguard Worker  * the minimum value. For the maximum just pick a value larger than anyone
127*61046927SAndroid Build Coastguard Worker  * would reasonably need.
128*61046927SAndroid Build Coastguard Worker  */
129*61046927SAndroid Build Coastguard Worker #define MIN_FDM_TEXEL_SIZE_LOG2 5
130*61046927SAndroid Build Coastguard Worker #define MIN_FDM_TEXEL_SIZE (1u << MIN_FDM_TEXEL_SIZE_LOG2)
131*61046927SAndroid Build Coastguard Worker #define MAX_FDM_TEXEL_SIZE_LOG2 10
132*61046927SAndroid Build Coastguard Worker #define MAX_FDM_TEXEL_SIZE (1u << MAX_FDM_TEXEL_SIZE_LOG2)
133*61046927SAndroid Build Coastguard Worker 
134*61046927SAndroid Build Coastguard Worker #define TU_GENX(FUNC_NAME) FD_GENX(FUNC_NAME)
135*61046927SAndroid Build Coastguard Worker 
136*61046927SAndroid Build Coastguard Worker #define TU_CALLX(device, thing) FD_CALLX((device)->physical_device->info, thing)
137*61046927SAndroid Build Coastguard Worker 
138*61046927SAndroid Build Coastguard Worker /* vk object types */
139*61046927SAndroid Build Coastguard Worker struct tu_buffer;
140*61046927SAndroid Build Coastguard Worker struct tu_buffer_view;
141*61046927SAndroid Build Coastguard Worker struct tu_cmd_buffer;
142*61046927SAndroid Build Coastguard Worker struct tu_cmd_pool;
143*61046927SAndroid Build Coastguard Worker struct tu_descriptor_pool;
144*61046927SAndroid Build Coastguard Worker struct tu_descriptor_set;
145*61046927SAndroid Build Coastguard Worker struct tu_descriptor_set_layout;
146*61046927SAndroid Build Coastguard Worker struct tu_descriptor_update_template;
147*61046927SAndroid Build Coastguard Worker struct tu_device;
148*61046927SAndroid Build Coastguard Worker struct tu_device_memory;
149*61046927SAndroid Build Coastguard Worker struct tu_event;
150*61046927SAndroid Build Coastguard Worker struct tu_framebuffer;
151*61046927SAndroid Build Coastguard Worker struct tu_image;
152*61046927SAndroid Build Coastguard Worker struct tu_image_view;
153*61046927SAndroid Build Coastguard Worker struct tu_instance;
154*61046927SAndroid Build Coastguard Worker struct tu_physical_device;
155*61046927SAndroid Build Coastguard Worker struct tu_pipeline_layout;
156*61046927SAndroid Build Coastguard Worker struct tu_query_pool;
157*61046927SAndroid Build Coastguard Worker struct tu_queue;
158*61046927SAndroid Build Coastguard Worker struct tu_render_pass;
159*61046927SAndroid Build Coastguard Worker struct tu_sampler;
160*61046927SAndroid Build Coastguard Worker 
161*61046927SAndroid Build Coastguard Worker struct breadcrumbs_context;
162*61046927SAndroid Build Coastguard Worker struct tu_bo;
163*61046927SAndroid Build Coastguard Worker struct tu_cs;
164*61046927SAndroid Build Coastguard Worker struct tu_cs_entry;
165*61046927SAndroid Build Coastguard Worker struct tu_suballoc_bo;
166*61046927SAndroid Build Coastguard Worker struct tu_suballocator;
167*61046927SAndroid Build Coastguard Worker struct tu_subpass;
168*61046927SAndroid Build Coastguard Worker struct tu_u_trace_submission_data;
169*61046927SAndroid Build Coastguard Worker 
170*61046927SAndroid Build Coastguard Worker #endif /* TU_COMMON_H */
171