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