1*61046927SAndroid Build Coastguard Worker# 2*61046927SAndroid Build Coastguard Worker# Copyright © 2021 Google, Inc. 3*61046927SAndroid Build Coastguard Worker# 4*61046927SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT 5*61046927SAndroid Build Coastguard Worker 6*61046927SAndroid Build Coastguard Workerfrom mako.template import Template 7*61046927SAndroid Build Coastguard Workerimport sys 8*61046927SAndroid Build Coastguard Workerimport argparse 9*61046927SAndroid Build Coastguard Workerfrom enum import Enum 10*61046927SAndroid Build Coastguard Worker 11*61046927SAndroid Build Coastguard Workerdef max_bitfield_val(high, low, shift): 12*61046927SAndroid Build Coastguard Worker return ((1 << (high - low)) - 1) << shift 13*61046927SAndroid Build Coastguard Worker 14*61046927SAndroid Build Coastguard Worker 15*61046927SAndroid Build Coastguard Workerparser = argparse.ArgumentParser() 16*61046927SAndroid Build Coastguard Workerparser.add_argument('-p', '--import-path', required=True) 17*61046927SAndroid Build Coastguard Workerargs = parser.parse_args() 18*61046927SAndroid Build Coastguard Workersys.path.insert(0, args.import_path) 19*61046927SAndroid Build Coastguard Worker 20*61046927SAndroid Build Coastguard Workerfrom a6xx import * 21*61046927SAndroid Build Coastguard Worker 22*61046927SAndroid Build Coastguard Worker 23*61046927SAndroid Build Coastguard Workerclass CHIP(Enum): 24*61046927SAndroid Build Coastguard Worker A2XX = 2 25*61046927SAndroid Build Coastguard Worker A3XX = 3 26*61046927SAndroid Build Coastguard Worker A4XX = 4 27*61046927SAndroid Build Coastguard Worker A5XX = 5 28*61046927SAndroid Build Coastguard Worker A6XX = 6 29*61046927SAndroid Build Coastguard Worker A7XX = 7 30*61046927SAndroid Build Coastguard Worker 31*61046927SAndroid Build Coastguard Workerclass CCUColorCacheFraction(Enum): 32*61046927SAndroid Build Coastguard Worker FULL = 0 33*61046927SAndroid Build Coastguard Worker HALF = 1 34*61046927SAndroid Build Coastguard Worker QUARTER = 2 35*61046927SAndroid Build Coastguard Worker EIGHTH = 3 36*61046927SAndroid Build Coastguard Worker 37*61046927SAndroid Build Coastguard Worker 38*61046927SAndroid Build Coastguard Workerclass State(object): 39*61046927SAndroid Build Coastguard Worker def __init__(self): 40*61046927SAndroid Build Coastguard Worker # List of unique device-info structs, multiple different GPU ids 41*61046927SAndroid Build Coastguard Worker # can map to a single info struct in cases where the differences 42*61046927SAndroid Build Coastguard Worker # are not sw visible, or the only differences are parameters 43*61046927SAndroid Build Coastguard Worker # queried from the kernel (like GMEM size) 44*61046927SAndroid Build Coastguard Worker self.gpu_infos = [] 45*61046927SAndroid Build Coastguard Worker 46*61046927SAndroid Build Coastguard Worker # Table mapping GPU id to device-info struct 47*61046927SAndroid Build Coastguard Worker self.gpus = {} 48*61046927SAndroid Build Coastguard Worker 49*61046927SAndroid Build Coastguard Worker def info_index(self, gpu_info): 50*61046927SAndroid Build Coastguard Worker i = 0 51*61046927SAndroid Build Coastguard Worker for info in self.gpu_infos: 52*61046927SAndroid Build Coastguard Worker if gpu_info == info: 53*61046927SAndroid Build Coastguard Worker return i 54*61046927SAndroid Build Coastguard Worker i += 1 55*61046927SAndroid Build Coastguard Worker raise Error("invalid info") 56*61046927SAndroid Build Coastguard Worker 57*61046927SAndroid Build Coastguard Workers = State() 58*61046927SAndroid Build Coastguard Worker 59*61046927SAndroid Build Coastguard Workerdef add_gpus(ids, info): 60*61046927SAndroid Build Coastguard Worker for id in ids: 61*61046927SAndroid Build Coastguard Worker s.gpus[id] = info 62*61046927SAndroid Build Coastguard Worker 63*61046927SAndroid Build Coastguard Workerclass GPUId(object): 64*61046927SAndroid Build Coastguard Worker def __init__(self, gpu_id = None, chip_id = None, name=None): 65*61046927SAndroid Build Coastguard Worker if chip_id == None: 66*61046927SAndroid Build Coastguard Worker assert(gpu_id != None) 67*61046927SAndroid Build Coastguard Worker val = gpu_id 68*61046927SAndroid Build Coastguard Worker core = int(val / 100) 69*61046927SAndroid Build Coastguard Worker val -= (core * 100); 70*61046927SAndroid Build Coastguard Worker major = int(val / 10); 71*61046927SAndroid Build Coastguard Worker val -= (major * 10) 72*61046927SAndroid Build Coastguard Worker minor = val 73*61046927SAndroid Build Coastguard Worker chip_id = (core << 24) | (major << 16) | (minor << 8) | 0xff 74*61046927SAndroid Build Coastguard Worker self.chip_id = chip_id 75*61046927SAndroid Build Coastguard Worker if gpu_id == None: 76*61046927SAndroid Build Coastguard Worker gpu_id = 0 77*61046927SAndroid Build Coastguard Worker self.gpu_id = gpu_id 78*61046927SAndroid Build Coastguard Worker if name == None: 79*61046927SAndroid Build Coastguard Worker assert(gpu_id != 0) 80*61046927SAndroid Build Coastguard Worker name = "FD%d" % gpu_id 81*61046927SAndroid Build Coastguard Worker self.name = name 82*61046927SAndroid Build Coastguard Worker 83*61046927SAndroid Build Coastguard Workerclass Struct(object): 84*61046927SAndroid Build Coastguard Worker """A helper class that stringifies itself to a 'C' struct initializer 85*61046927SAndroid Build Coastguard Worker """ 86*61046927SAndroid Build Coastguard Worker def __str__(self): 87*61046927SAndroid Build Coastguard Worker s = "{" 88*61046927SAndroid Build Coastguard Worker for name, value in vars(self).items(): 89*61046927SAndroid Build Coastguard Worker s += "." + name + "=" + str(value) + "," 90*61046927SAndroid Build Coastguard Worker return s + "}" 91*61046927SAndroid Build Coastguard Worker 92*61046927SAndroid Build Coastguard Workerclass GPUInfo(Struct): 93*61046927SAndroid Build Coastguard Worker """Base class for any generation of adreno, consists of GMEM layout 94*61046927SAndroid Build Coastguard Worker related parameters 95*61046927SAndroid Build Coastguard Worker 96*61046927SAndroid Build Coastguard Worker Note that tile_max_h is normally only constrained by corresponding 97*61046927SAndroid Build Coastguard Worker bitfield size/shift (ie. VSC_BIN_SIZE, or similar), but tile_max_h 98*61046927SAndroid Build Coastguard Worker tends to have lower limits, in which case a comment will describe 99*61046927SAndroid Build Coastguard Worker the bitfield size/shift 100*61046927SAndroid Build Coastguard Worker """ 101*61046927SAndroid Build Coastguard Worker def __init__(self, chip, gmem_align_w, gmem_align_h, 102*61046927SAndroid Build Coastguard Worker tile_align_w, tile_align_h, 103*61046927SAndroid Build Coastguard Worker tile_max_w, tile_max_h, num_vsc_pipes, 104*61046927SAndroid Build Coastguard Worker cs_shared_mem_size, num_sp_cores, wave_granularity, fibers_per_sp, 105*61046927SAndroid Build Coastguard Worker threadsize_base = 64, max_waves = 16): 106*61046927SAndroid Build Coastguard Worker self.chip = chip.value 107*61046927SAndroid Build Coastguard Worker self.gmem_align_w = gmem_align_w 108*61046927SAndroid Build Coastguard Worker self.gmem_align_h = gmem_align_h 109*61046927SAndroid Build Coastguard Worker self.tile_align_w = tile_align_w 110*61046927SAndroid Build Coastguard Worker self.tile_align_h = tile_align_h 111*61046927SAndroid Build Coastguard Worker self.tile_max_w = tile_max_w 112*61046927SAndroid Build Coastguard Worker self.tile_max_h = tile_max_h 113*61046927SAndroid Build Coastguard Worker self.num_vsc_pipes = num_vsc_pipes 114*61046927SAndroid Build Coastguard Worker self.cs_shared_mem_size = cs_shared_mem_size 115*61046927SAndroid Build Coastguard Worker self.num_sp_cores = num_sp_cores 116*61046927SAndroid Build Coastguard Worker self.wave_granularity = wave_granularity 117*61046927SAndroid Build Coastguard Worker self.fibers_per_sp = fibers_per_sp 118*61046927SAndroid Build Coastguard Worker self.threadsize_base = threadsize_base 119*61046927SAndroid Build Coastguard Worker self.max_waves = max_waves 120*61046927SAndroid Build Coastguard Worker 121*61046927SAndroid Build Coastguard Worker s.gpu_infos.append(self) 122*61046927SAndroid Build Coastguard Worker 123*61046927SAndroid Build Coastguard Worker 124*61046927SAndroid Build Coastguard Workerclass A6xxGPUInfo(GPUInfo): 125*61046927SAndroid Build Coastguard Worker """The a6xx generation has a lot more parameters, and is broken down 126*61046927SAndroid Build Coastguard Worker into distinct sub-generations. The template parameter avoids 127*61046927SAndroid Build Coastguard Worker duplication of parameters that are unique to the sub-generation. 128*61046927SAndroid Build Coastguard Worker """ 129*61046927SAndroid Build Coastguard Worker def __init__(self, chip, template, num_ccu, 130*61046927SAndroid Build Coastguard Worker tile_align_w, tile_align_h, num_vsc_pipes, 131*61046927SAndroid Build Coastguard Worker cs_shared_mem_size, wave_granularity, fibers_per_sp, 132*61046927SAndroid Build Coastguard Worker magic_regs, raw_magic_regs = None, threadsize_base = 64, 133*61046927SAndroid Build Coastguard Worker max_waves = 16): 134*61046927SAndroid Build Coastguard Worker if chip == CHIP.A6XX: 135*61046927SAndroid Build Coastguard Worker tile_max_w = 1024 # max_bitfield_val(5, 0, 5) 136*61046927SAndroid Build Coastguard Worker tile_max_h = max_bitfield_val(14, 8, 4) # 1008 137*61046927SAndroid Build Coastguard Worker else: 138*61046927SAndroid Build Coastguard Worker tile_max_w = 1728 139*61046927SAndroid Build Coastguard Worker tile_max_h = 1728 140*61046927SAndroid Build Coastguard Worker 141*61046927SAndroid Build Coastguard Worker super().__init__(chip, gmem_align_w = 16, gmem_align_h = 4, 142*61046927SAndroid Build Coastguard Worker tile_align_w = tile_align_w, 143*61046927SAndroid Build Coastguard Worker tile_align_h = tile_align_h, 144*61046927SAndroid Build Coastguard Worker tile_max_w = tile_max_w, 145*61046927SAndroid Build Coastguard Worker tile_max_h = tile_max_h, 146*61046927SAndroid Build Coastguard Worker num_vsc_pipes = num_vsc_pipes, 147*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = cs_shared_mem_size, 148*61046927SAndroid Build Coastguard Worker num_sp_cores = num_ccu, # The # of SP cores seems to always match # of CCU 149*61046927SAndroid Build Coastguard Worker wave_granularity = wave_granularity, 150*61046927SAndroid Build Coastguard Worker fibers_per_sp = fibers_per_sp, 151*61046927SAndroid Build Coastguard Worker threadsize_base = threadsize_base, 152*61046927SAndroid Build Coastguard Worker max_waves = max_waves) 153*61046927SAndroid Build Coastguard Worker 154*61046927SAndroid Build Coastguard Worker self.num_ccu = num_ccu 155*61046927SAndroid Build Coastguard Worker 156*61046927SAndroid Build Coastguard Worker self.a6xx = Struct() 157*61046927SAndroid Build Coastguard Worker self.a7xx = Struct() 158*61046927SAndroid Build Coastguard Worker 159*61046927SAndroid Build Coastguard Worker self.a6xx.magic = Struct() 160*61046927SAndroid Build Coastguard Worker 161*61046927SAndroid Build Coastguard Worker for name, val in magic_regs.items(): 162*61046927SAndroid Build Coastguard Worker setattr(self.a6xx.magic, name, val) 163*61046927SAndroid Build Coastguard Worker 164*61046927SAndroid Build Coastguard Worker if raw_magic_regs: 165*61046927SAndroid Build Coastguard Worker self.a6xx.magic_raw = [[int(r[0]), r[1]] for r in raw_magic_regs] 166*61046927SAndroid Build Coastguard Worker 167*61046927SAndroid Build Coastguard Worker templates = template if type(template) is list else [template] 168*61046927SAndroid Build Coastguard Worker for template in templates: 169*61046927SAndroid Build Coastguard Worker template.apply_props(self) 170*61046927SAndroid Build Coastguard Worker 171*61046927SAndroid Build Coastguard Worker 172*61046927SAndroid Build Coastguard Worker def __str__(self): 173*61046927SAndroid Build Coastguard Worker return super(A6xxGPUInfo, self).__str__().replace('[', '{').replace("]", "}") 174*61046927SAndroid Build Coastguard Worker 175*61046927SAndroid Build Coastguard Worker 176*61046927SAndroid Build Coastguard Worker# a2xx is really two sub-generations, a20x and a22x, but we don't currently 177*61046927SAndroid Build Coastguard Worker# capture that in the device-info tables 178*61046927SAndroid Build Coastguard Workeradd_gpus([ 179*61046927SAndroid Build Coastguard Worker GPUId(200), 180*61046927SAndroid Build Coastguard Worker GPUId(201), 181*61046927SAndroid Build Coastguard Worker GPUId(205), 182*61046927SAndroid Build Coastguard Worker GPUId(220), 183*61046927SAndroid Build Coastguard Worker ], GPUInfo( 184*61046927SAndroid Build Coastguard Worker CHIP.A2XX, 185*61046927SAndroid Build Coastguard Worker gmem_align_w = 32, gmem_align_h = 32, 186*61046927SAndroid Build Coastguard Worker tile_align_w = 32, tile_align_h = 32, 187*61046927SAndroid Build Coastguard Worker tile_max_w = 512, 188*61046927SAndroid Build Coastguard Worker tile_max_h = ~0, # TODO 189*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 8, 190*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 0, 191*61046927SAndroid Build Coastguard Worker num_sp_cores = 0, # TODO 192*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 193*61046927SAndroid Build Coastguard Worker fibers_per_sp = 0, # TODO 194*61046927SAndroid Build Coastguard Worker threadsize_base = 8, # TODO: Confirm this 195*61046927SAndroid Build Coastguard Worker )) 196*61046927SAndroid Build Coastguard Worker 197*61046927SAndroid Build Coastguard Workeradd_gpus([ 198*61046927SAndroid Build Coastguard Worker GPUId(305), 199*61046927SAndroid Build Coastguard Worker GPUId(307), 200*61046927SAndroid Build Coastguard Worker GPUId(320), 201*61046927SAndroid Build Coastguard Worker GPUId(330), 202*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0x03000512, name="FD305B"), 203*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0x03000620, name="FD306A"), 204*61046927SAndroid Build Coastguard Worker ], GPUInfo( 205*61046927SAndroid Build Coastguard Worker CHIP.A3XX, 206*61046927SAndroid Build Coastguard Worker gmem_align_w = 32, gmem_align_h = 32, 207*61046927SAndroid Build Coastguard Worker tile_align_w = 32, tile_align_h = 32, 208*61046927SAndroid Build Coastguard Worker tile_max_w = 992, # max_bitfield_val(4, 0, 5) 209*61046927SAndroid Build Coastguard Worker tile_max_h = max_bitfield_val(9, 5, 5), 210*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 8, 211*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 212*61046927SAndroid Build Coastguard Worker num_sp_cores = 0, # TODO 213*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 214*61046927SAndroid Build Coastguard Worker fibers_per_sp = 0, # TODO 215*61046927SAndroid Build Coastguard Worker threadsize_base = 8, 216*61046927SAndroid Build Coastguard Worker )) 217*61046927SAndroid Build Coastguard Worker 218*61046927SAndroid Build Coastguard Workeradd_gpus([ 219*61046927SAndroid Build Coastguard Worker GPUId(405), 220*61046927SAndroid Build Coastguard Worker GPUId(420), 221*61046927SAndroid Build Coastguard Worker GPUId(430), 222*61046927SAndroid Build Coastguard Worker ], GPUInfo( 223*61046927SAndroid Build Coastguard Worker CHIP.A4XX, 224*61046927SAndroid Build Coastguard Worker gmem_align_w = 32, gmem_align_h = 32, 225*61046927SAndroid Build Coastguard Worker tile_align_w = 32, tile_align_h = 32, 226*61046927SAndroid Build Coastguard Worker tile_max_w = 1024, # max_bitfield_val(4, 0, 5) 227*61046927SAndroid Build Coastguard Worker tile_max_h = max_bitfield_val(9, 5, 5), 228*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 8, 229*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 230*61046927SAndroid Build Coastguard Worker num_sp_cores = 0, # TODO 231*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 232*61046927SAndroid Build Coastguard Worker fibers_per_sp = 0, # TODO 233*61046927SAndroid Build Coastguard Worker threadsize_base = 32, # TODO: Confirm this 234*61046927SAndroid Build Coastguard Worker )) 235*61046927SAndroid Build Coastguard Worker 236*61046927SAndroid Build Coastguard Workeradd_gpus([ 237*61046927SAndroid Build Coastguard Worker GPUId(505), 238*61046927SAndroid Build Coastguard Worker GPUId(506), 239*61046927SAndroid Build Coastguard Worker GPUId(508), 240*61046927SAndroid Build Coastguard Worker GPUId(509), 241*61046927SAndroid Build Coastguard Worker ], GPUInfo( 242*61046927SAndroid Build Coastguard Worker CHIP.A5XX, 243*61046927SAndroid Build Coastguard Worker gmem_align_w = 64, gmem_align_h = 32, 244*61046927SAndroid Build Coastguard Worker tile_align_w = 64, tile_align_h = 32, 245*61046927SAndroid Build Coastguard Worker tile_max_w = 1024, # max_bitfield_val(7, 0, 5) 246*61046927SAndroid Build Coastguard Worker tile_max_h = max_bitfield_val(16, 9, 5), 247*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 16, 248*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 249*61046927SAndroid Build Coastguard Worker num_sp_cores = 1, 250*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 251*61046927SAndroid Build Coastguard Worker fibers_per_sp = 64 * 16, # Lowest number that didn't fault on spillall fs-varying-array-mat4-col-row-rd. 252*61046927SAndroid Build Coastguard Worker threadsize_base = 32, 253*61046927SAndroid Build Coastguard Worker )) 254*61046927SAndroid Build Coastguard Worker 255*61046927SAndroid Build Coastguard Workeradd_gpus([ 256*61046927SAndroid Build Coastguard Worker GPUId(510), 257*61046927SAndroid Build Coastguard Worker GPUId(512), 258*61046927SAndroid Build Coastguard Worker ], GPUInfo( 259*61046927SAndroid Build Coastguard Worker CHIP.A5XX, 260*61046927SAndroid Build Coastguard Worker gmem_align_w = 64, gmem_align_h = 32, 261*61046927SAndroid Build Coastguard Worker tile_align_w = 64, tile_align_h = 32, 262*61046927SAndroid Build Coastguard Worker tile_max_w = 1024, # max_bitfield_val(7, 0, 5) 263*61046927SAndroid Build Coastguard Worker tile_max_h = max_bitfield_val(16, 9, 5), 264*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 16, 265*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 266*61046927SAndroid Build Coastguard Worker num_sp_cores = 2, 267*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 268*61046927SAndroid Build Coastguard Worker fibers_per_sp = 64 * 16, # Lowest number that didn't fault on spillall fs-varying-array-mat4-col-row-rd. 269*61046927SAndroid Build Coastguard Worker threadsize_base = 32, 270*61046927SAndroid Build Coastguard Worker )) 271*61046927SAndroid Build Coastguard Worker 272*61046927SAndroid Build Coastguard Workeradd_gpus([ 273*61046927SAndroid Build Coastguard Worker GPUId(530), 274*61046927SAndroid Build Coastguard Worker GPUId(540), 275*61046927SAndroid Build Coastguard Worker ], GPUInfo( 276*61046927SAndroid Build Coastguard Worker CHIP.A5XX, 277*61046927SAndroid Build Coastguard Worker gmem_align_w = 64, gmem_align_h = 32, 278*61046927SAndroid Build Coastguard Worker tile_align_w = 64, tile_align_h = 32, 279*61046927SAndroid Build Coastguard Worker tile_max_w = 1024, # max_bitfield_val(7, 0, 5) 280*61046927SAndroid Build Coastguard Worker tile_max_h = max_bitfield_val(16, 9, 5), 281*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 16, 282*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 283*61046927SAndroid Build Coastguard Worker num_sp_cores = 4, 284*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 285*61046927SAndroid Build Coastguard Worker fibers_per_sp = 64 * 16, # Lowest number that didn't fault on spillall fs-varying-array-mat4-col-row-rd. 286*61046927SAndroid Build Coastguard Worker threadsize_base = 32, 287*61046927SAndroid Build Coastguard Worker )) 288*61046927SAndroid Build Coastguard Worker 289*61046927SAndroid Build Coastguard Worker 290*61046927SAndroid Build Coastguard Workerclass A6XXProps(dict): 291*61046927SAndroid Build Coastguard Worker unique_props = dict() 292*61046927SAndroid Build Coastguard Worker def apply_gen_props(self, gen, gpu_info): 293*61046927SAndroid Build Coastguard Worker for name, val in self.items(): 294*61046927SAndroid Build Coastguard Worker setattr(getattr(gpu_info, gen), name, val) 295*61046927SAndroid Build Coastguard Worker A6XXProps.unique_props[(name, gen)] = val 296*61046927SAndroid Build Coastguard Worker 297*61046927SAndroid Build Coastguard Worker def apply_props(self, gpu_info): 298*61046927SAndroid Build Coastguard Worker self.apply_gen_props("a6xx", gpu_info) 299*61046927SAndroid Build Coastguard Worker 300*61046927SAndroid Build Coastguard Worker 301*61046927SAndroid Build Coastguard Workerclass A7XXProps(A6XXProps): 302*61046927SAndroid Build Coastguard Worker def apply_props(self, gpu_info): 303*61046927SAndroid Build Coastguard Worker self.apply_gen_props("a7xx", gpu_info) 304*61046927SAndroid Build Coastguard Worker 305*61046927SAndroid Build Coastguard Worker 306*61046927SAndroid Build Coastguard Worker# Props could be modified with env var: 307*61046927SAndroid Build Coastguard Worker# FD_DEV_FEATURES=%feature_name%=%value%:%feature_name%=%value%:... 308*61046927SAndroid Build Coastguard Worker# e.g. 309*61046927SAndroid Build Coastguard Worker# FD_DEV_FEATURES=has_fs_tex_prefetch=0:max_sets=4 310*61046927SAndroid Build Coastguard Worker 311*61046927SAndroid Build Coastguard Workera6xx_base = A6XXProps( 312*61046927SAndroid Build Coastguard Worker has_cp_reg_write = True, 313*61046927SAndroid Build Coastguard Worker has_8bpp_ubwc = True, 314*61046927SAndroid Build Coastguard Worker has_gmem_fast_clear = True, 315*61046927SAndroid Build Coastguard Worker has_hw_multiview = True, 316*61046927SAndroid Build Coastguard Worker has_fs_tex_prefetch = True, 317*61046927SAndroid Build Coastguard Worker has_sampler_minmax = True, 318*61046927SAndroid Build Coastguard Worker 319*61046927SAndroid Build Coastguard Worker supports_double_threadsize = True, 320*61046927SAndroid Build Coastguard Worker 321*61046927SAndroid Build Coastguard Worker sysmem_per_ccu_depth_cache_size = 64 * 1024, 322*61046927SAndroid Build Coastguard Worker sysmem_per_ccu_color_cache_size = 64 * 1024, 323*61046927SAndroid Build Coastguard Worker gmem_ccu_color_cache_fraction = CCUColorCacheFraction.QUARTER.value, 324*61046927SAndroid Build Coastguard Worker 325*61046927SAndroid Build Coastguard Worker prim_alloc_threshold = 0x7, 326*61046927SAndroid Build Coastguard Worker vs_max_inputs_count = 32, 327*61046927SAndroid Build Coastguard Worker max_sets = 5, 328*61046927SAndroid Build Coastguard Worker line_width_min = 1.0, 329*61046927SAndroid Build Coastguard Worker line_width_max = 1.0, 330*61046927SAndroid Build Coastguard Worker ) 331*61046927SAndroid Build Coastguard Worker 332*61046927SAndroid Build Coastguard Worker 333*61046927SAndroid Build Coastguard Worker# a6xx can be divided into distinct sub-generations, where certain device- 334*61046927SAndroid Build Coastguard Worker# info parameters are keyed to the sub-generation. These templates reduce 335*61046927SAndroid Build Coastguard Worker# the copypaste 336*61046927SAndroid Build Coastguard Worker 337*61046927SAndroid Build Coastguard Workera6xx_gen1_low = A6XXProps( 338*61046927SAndroid Build Coastguard Worker reg_size_vec4 = 48, 339*61046927SAndroid Build Coastguard Worker instr_cache_size = 64, 340*61046927SAndroid Build Coastguard Worker indirect_draw_wfm_quirk = True, 341*61046927SAndroid Build Coastguard Worker depth_bounds_require_depth_test_quirk = True, 342*61046927SAndroid Build Coastguard Worker 343*61046927SAndroid Build Coastguard Worker has_gmem_fast_clear = False, 344*61046927SAndroid Build Coastguard Worker has_hw_multiview = False, 345*61046927SAndroid Build Coastguard Worker has_sampler_minmax = False, 346*61046927SAndroid Build Coastguard Worker has_fs_tex_prefetch = False, 347*61046927SAndroid Build Coastguard Worker sysmem_per_ccu_color_cache_size = 8 * 1024, 348*61046927SAndroid Build Coastguard Worker sysmem_per_ccu_depth_cache_size = 8 * 1024, 349*61046927SAndroid Build Coastguard Worker gmem_ccu_color_cache_fraction = CCUColorCacheFraction.HALF.value, 350*61046927SAndroid Build Coastguard Worker vs_max_inputs_count = 16, 351*61046927SAndroid Build Coastguard Worker supports_double_threadsize = False, 352*61046927SAndroid Build Coastguard Worker ) 353*61046927SAndroid Build Coastguard Worker 354*61046927SAndroid Build Coastguard Workera6xx_gen1 = A6XXProps( 355*61046927SAndroid Build Coastguard Worker reg_size_vec4 = 96, 356*61046927SAndroid Build Coastguard Worker instr_cache_size = 64, 357*61046927SAndroid Build Coastguard Worker indirect_draw_wfm_quirk = True, 358*61046927SAndroid Build Coastguard Worker depth_bounds_require_depth_test_quirk = True, 359*61046927SAndroid Build Coastguard Worker ) 360*61046927SAndroid Build Coastguard Worker 361*61046927SAndroid Build Coastguard Workera6xx_gen2 = A6XXProps( 362*61046927SAndroid Build Coastguard Worker reg_size_vec4 = 96, 363*61046927SAndroid Build Coastguard Worker instr_cache_size = 64, # TODO 364*61046927SAndroid Build Coastguard Worker supports_multiview_mask = True, 365*61046927SAndroid Build Coastguard Worker has_z24uint_s8uint = True, 366*61046927SAndroid Build Coastguard Worker indirect_draw_wfm_quirk = True, 367*61046927SAndroid Build Coastguard Worker depth_bounds_require_depth_test_quirk = True, # TODO: check if true 368*61046927SAndroid Build Coastguard Worker has_dp2acc = False, # TODO: check if true 369*61046927SAndroid Build Coastguard Worker has_8bpp_ubwc = False, 370*61046927SAndroid Build Coastguard Worker ) 371*61046927SAndroid Build Coastguard Worker 372*61046927SAndroid Build Coastguard Workera6xx_gen3 = A6XXProps( 373*61046927SAndroid Build Coastguard Worker reg_size_vec4 = 64, 374*61046927SAndroid Build Coastguard Worker # Blob limits it to 128 but we hang with 128 375*61046927SAndroid Build Coastguard Worker instr_cache_size = 127, 376*61046927SAndroid Build Coastguard Worker supports_multiview_mask = True, 377*61046927SAndroid Build Coastguard Worker has_z24uint_s8uint = True, 378*61046927SAndroid Build Coastguard Worker tess_use_shared = True, 379*61046927SAndroid Build Coastguard Worker storage_16bit = True, 380*61046927SAndroid Build Coastguard Worker has_tex_filter_cubic = True, 381*61046927SAndroid Build Coastguard Worker has_separate_chroma_filter = True, 382*61046927SAndroid Build Coastguard Worker has_sample_locations = True, 383*61046927SAndroid Build Coastguard Worker has_8bpp_ubwc = False, 384*61046927SAndroid Build Coastguard Worker has_dp2acc = True, 385*61046927SAndroid Build Coastguard Worker has_lrz_dir_tracking = True, 386*61046927SAndroid Build Coastguard Worker enable_lrz_fast_clear = True, 387*61046927SAndroid Build Coastguard Worker lrz_track_quirk = True, 388*61046927SAndroid Build Coastguard Worker has_lrz_feedback = True, 389*61046927SAndroid Build Coastguard Worker has_per_view_viewport = True, 390*61046927SAndroid Build Coastguard Worker has_scalar_alu = True, 391*61046927SAndroid Build Coastguard Worker has_early_preamble = True, 392*61046927SAndroid Build Coastguard Worker ) 393*61046927SAndroid Build Coastguard Worker 394*61046927SAndroid Build Coastguard Workera6xx_gen4 = A6XXProps( 395*61046927SAndroid Build Coastguard Worker reg_size_vec4 = 64, 396*61046927SAndroid Build Coastguard Worker # Blob limits it to 128 but we hang with 128 397*61046927SAndroid Build Coastguard Worker instr_cache_size = 127, 398*61046927SAndroid Build Coastguard Worker supports_multiview_mask = True, 399*61046927SAndroid Build Coastguard Worker has_z24uint_s8uint = True, 400*61046927SAndroid Build Coastguard Worker tess_use_shared = True, 401*61046927SAndroid Build Coastguard Worker storage_16bit = True, 402*61046927SAndroid Build Coastguard Worker has_tex_filter_cubic = True, 403*61046927SAndroid Build Coastguard Worker has_separate_chroma_filter = True, 404*61046927SAndroid Build Coastguard Worker has_sample_locations = True, 405*61046927SAndroid Build Coastguard Worker has_cp_reg_write = False, 406*61046927SAndroid Build Coastguard Worker has_8bpp_ubwc = False, 407*61046927SAndroid Build Coastguard Worker has_lpac = True, 408*61046927SAndroid Build Coastguard Worker has_shading_rate = True, 409*61046927SAndroid Build Coastguard Worker has_getfiberid = True, 410*61046927SAndroid Build Coastguard Worker has_dp2acc = True, 411*61046927SAndroid Build Coastguard Worker has_dp4acc = True, 412*61046927SAndroid Build Coastguard Worker enable_lrz_fast_clear = True, 413*61046927SAndroid Build Coastguard Worker has_lrz_dir_tracking = True, 414*61046927SAndroid Build Coastguard Worker has_lrz_feedback = True, 415*61046927SAndroid Build Coastguard Worker has_per_view_viewport = True, 416*61046927SAndroid Build Coastguard Worker has_scalar_alu = True, 417*61046927SAndroid Build Coastguard Worker has_isam_v = True, 418*61046927SAndroid Build Coastguard Worker has_ssbo_imm_offsets = True, 419*61046927SAndroid Build Coastguard Worker # TODO: there seems to be a quirk where at least rcp can't be in an 420*61046927SAndroid Build Coastguard Worker # early preamble. a660 at least is affected. 421*61046927SAndroid Build Coastguard Worker #has_early_preamble = True, 422*61046927SAndroid Build Coastguard Worker ) 423*61046927SAndroid Build Coastguard Worker 424*61046927SAndroid Build Coastguard Workera6xx_a690_quirk = A6XXProps( 425*61046927SAndroid Build Coastguard Worker broken_ds_ubwc_quirk = True, 426*61046927SAndroid Build Coastguard Worker ) 427*61046927SAndroid Build Coastguard Worker 428*61046927SAndroid Build Coastguard Workeradd_gpus([ 429*61046927SAndroid Build Coastguard Worker GPUId(605), # TODO: Test it, based only on libwrapfake dumps 430*61046927SAndroid Build Coastguard Worker GPUId(608), # TODO: Test it, based only on libwrapfake dumps 431*61046927SAndroid Build Coastguard Worker GPUId(610), 432*61046927SAndroid Build Coastguard Worker GPUId(612), # TODO: Test it, based only on libwrapfake dumps 433*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 434*61046927SAndroid Build Coastguard Worker CHIP.A6XX, 435*61046927SAndroid Build Coastguard Worker [a6xx_base, a6xx_gen1_low], 436*61046927SAndroid Build Coastguard Worker num_ccu = 1, 437*61046927SAndroid Build Coastguard Worker tile_align_w = 32, 438*61046927SAndroid Build Coastguard Worker tile_align_h = 16, 439*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 16, 440*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 16 * 1024, 441*61046927SAndroid Build Coastguard Worker wave_granularity = 1, 442*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 16, 443*61046927SAndroid Build Coastguard Worker magic_regs = dict( 444*61046927SAndroid Build Coastguard Worker PC_POWER_CNTL = 0, 445*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0, 446*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0, 447*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0, 448*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000004, 449*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0xf, 450*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x0, 451*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x04100000, 452*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x04100000, 453*61046927SAndroid Build Coastguard Worker HLSQ_DBG_ECO_CNTL = 0, 454*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x00000001, 455*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x0, 456*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x10000000, 457*61046927SAndroid Build Coastguard Worker ), 458*61046927SAndroid Build Coastguard Worker )) 459*61046927SAndroid Build Coastguard Worker 460*61046927SAndroid Build Coastguard Workeradd_gpus([ 461*61046927SAndroid Build Coastguard Worker GPUId(615), 462*61046927SAndroid Build Coastguard Worker GPUId(616), 463*61046927SAndroid Build Coastguard Worker GPUId(618), 464*61046927SAndroid Build Coastguard Worker GPUId(619), 465*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 466*61046927SAndroid Build Coastguard Worker CHIP.A6XX, 467*61046927SAndroid Build Coastguard Worker [a6xx_base, a6xx_gen1], 468*61046927SAndroid Build Coastguard Worker num_ccu = 1, 469*61046927SAndroid Build Coastguard Worker tile_align_w = 32, 470*61046927SAndroid Build Coastguard Worker tile_align_h = 32, 471*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 472*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 473*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 474*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 16, 475*61046927SAndroid Build Coastguard Worker magic_regs = dict( 476*61046927SAndroid Build Coastguard Worker PC_POWER_CNTL = 0, 477*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x00108000, 478*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x00000880, 479*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x00000430, 480*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000004, 481*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x1f, 482*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x0, 483*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x04100000, 484*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x04100000, 485*61046927SAndroid Build Coastguard Worker HLSQ_DBG_ECO_CNTL = 0x00080000, 486*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x00000001, 487*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x0, 488*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x00000001 489*61046927SAndroid Build Coastguard Worker ) 490*61046927SAndroid Build Coastguard Worker )) 491*61046927SAndroid Build Coastguard Worker 492*61046927SAndroid Build Coastguard Workeradd_gpus([ 493*61046927SAndroid Build Coastguard Worker GPUId(620), 494*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 495*61046927SAndroid Build Coastguard Worker CHIP.A6XX, 496*61046927SAndroid Build Coastguard Worker [a6xx_base, a6xx_gen1], 497*61046927SAndroid Build Coastguard Worker num_ccu = 1, 498*61046927SAndroid Build Coastguard Worker tile_align_w = 32, 499*61046927SAndroid Build Coastguard Worker tile_align_h = 16, 500*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 501*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 502*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 503*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 16, 504*61046927SAndroid Build Coastguard Worker magic_regs = dict( 505*61046927SAndroid Build Coastguard Worker PC_POWER_CNTL = 0, 506*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x01008000, 507*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x0, 508*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x00000400, 509*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000004, 510*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x1f, 511*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x01000000, 512*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x04100000, 513*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x04100000, 514*61046927SAndroid Build Coastguard Worker HLSQ_DBG_ECO_CNTL = 0x0, 515*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x0, 516*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x02000000, 517*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x00000001 518*61046927SAndroid Build Coastguard Worker ) 519*61046927SAndroid Build Coastguard Worker )) 520*61046927SAndroid Build Coastguard Worker 521*61046927SAndroid Build Coastguard Workeradd_gpus([ 522*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0xffff06020100, name="FD621"), 523*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 524*61046927SAndroid Build Coastguard Worker CHIP.A6XX, 525*61046927SAndroid Build Coastguard Worker [a6xx_base, a6xx_gen3, A6XXProps(lrz_track_quirk = False)], 526*61046927SAndroid Build Coastguard Worker num_ccu = 2, 527*61046927SAndroid Build Coastguard Worker tile_align_w = 96, 528*61046927SAndroid Build Coastguard Worker tile_align_h = 16, 529*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 530*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 531*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 532*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 2 * 16, 533*61046927SAndroid Build Coastguard Worker magic_regs = dict( 534*61046927SAndroid Build Coastguard Worker PC_POWER_CNTL = 0, 535*61046927SAndroid Build Coastguard Worker # this seems to be a chicken bit that fixes cubic filtering: 536*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x01008000, 537*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x0, 538*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x00001400, 539*61046927SAndroid Build Coastguard Worker # UCHE_CLIENT_PF = 0x00000004, 540*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x1f, 541*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x03000000, 542*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x04100000, 543*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x04100000, 544*61046927SAndroid Build Coastguard Worker HLSQ_DBG_ECO_CNTL = 0x0, 545*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x0, 546*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x02000000, 547*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x00000001 548*61046927SAndroid Build Coastguard Worker ) 549*61046927SAndroid Build Coastguard Worker )) 550*61046927SAndroid Build Coastguard Worker 551*61046927SAndroid Build Coastguard Workeradd_gpus([ 552*61046927SAndroid Build Coastguard Worker GPUId(630), 553*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 554*61046927SAndroid Build Coastguard Worker CHIP.A6XX, 555*61046927SAndroid Build Coastguard Worker [a6xx_base, a6xx_gen1], 556*61046927SAndroid Build Coastguard Worker num_ccu = 2, 557*61046927SAndroid Build Coastguard Worker tile_align_w = 32, 558*61046927SAndroid Build Coastguard Worker tile_align_h = 16, 559*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 560*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 561*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 562*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 16, 563*61046927SAndroid Build Coastguard Worker magic_regs = dict( 564*61046927SAndroid Build Coastguard Worker PC_POWER_CNTL = 1, 565*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x00108000, 566*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x00000880, 567*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x00001430, 568*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000004, 569*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x1f, 570*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x0, 571*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x04100000, 572*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x05100000, 573*61046927SAndroid Build Coastguard Worker HLSQ_DBG_ECO_CNTL = 0x00080000, 574*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x00000001, 575*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x0, 576*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x10000001 577*61046927SAndroid Build Coastguard Worker ) 578*61046927SAndroid Build Coastguard Worker )) 579*61046927SAndroid Build Coastguard Worker 580*61046927SAndroid Build Coastguard Workeradd_gpus([ 581*61046927SAndroid Build Coastguard Worker GPUId(640), 582*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 583*61046927SAndroid Build Coastguard Worker CHIP.A6XX, 584*61046927SAndroid Build Coastguard Worker [a6xx_base, a6xx_gen2], 585*61046927SAndroid Build Coastguard Worker num_ccu = 2, 586*61046927SAndroid Build Coastguard Worker tile_align_w = 32, 587*61046927SAndroid Build Coastguard Worker tile_align_h = 16, 588*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 589*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 590*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 591*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 4 * 16, 592*61046927SAndroid Build Coastguard Worker magic_regs = dict( 593*61046927SAndroid Build Coastguard Worker PC_POWER_CNTL = 1, 594*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x00008000, 595*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x0, 596*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x00000420, 597*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000004, 598*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x1f, 599*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x0, 600*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x04100000, 601*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x04100000, 602*61046927SAndroid Build Coastguard Worker HLSQ_DBG_ECO_CNTL = 0x0, 603*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x00000001, 604*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x02000000, 605*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x00000001 606*61046927SAndroid Build Coastguard Worker ) 607*61046927SAndroid Build Coastguard Worker )) 608*61046927SAndroid Build Coastguard Worker 609*61046927SAndroid Build Coastguard Workeradd_gpus([ 610*61046927SAndroid Build Coastguard Worker GPUId(680), 611*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 612*61046927SAndroid Build Coastguard Worker CHIP.A6XX, 613*61046927SAndroid Build Coastguard Worker [a6xx_base, a6xx_gen2], 614*61046927SAndroid Build Coastguard Worker num_ccu = 4, 615*61046927SAndroid Build Coastguard Worker tile_align_w = 64, 616*61046927SAndroid Build Coastguard Worker tile_align_h = 32, 617*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 618*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 619*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 620*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 4 * 16, 621*61046927SAndroid Build Coastguard Worker magic_regs = dict( 622*61046927SAndroid Build Coastguard Worker PC_POWER_CNTL = 3, 623*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x00108000, 624*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x0, 625*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x00001430, 626*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000004, 627*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x1f, 628*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x0, 629*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x04100000, 630*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x04100000, 631*61046927SAndroid Build Coastguard Worker HLSQ_DBG_ECO_CNTL = 0x0, 632*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x00000001, 633*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x02000000, 634*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x00000001 635*61046927SAndroid Build Coastguard Worker ) 636*61046927SAndroid Build Coastguard Worker )) 637*61046927SAndroid Build Coastguard Worker 638*61046927SAndroid Build Coastguard Workeradd_gpus([ 639*61046927SAndroid Build Coastguard Worker GPUId(650), 640*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 641*61046927SAndroid Build Coastguard Worker CHIP.A6XX, 642*61046927SAndroid Build Coastguard Worker [a6xx_base, a6xx_gen3], 643*61046927SAndroid Build Coastguard Worker num_ccu = 3, 644*61046927SAndroid Build Coastguard Worker tile_align_w = 96, 645*61046927SAndroid Build Coastguard Worker tile_align_h = 16, 646*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 647*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 648*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 649*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 2 * 16, 650*61046927SAndroid Build Coastguard Worker magic_regs = dict( 651*61046927SAndroid Build Coastguard Worker PC_POWER_CNTL = 2, 652*61046927SAndroid Build Coastguard Worker # this seems to be a chicken bit that fixes cubic filtering: 653*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x01008000, 654*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x0, 655*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x00001400, 656*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000004, 657*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x1f, 658*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x01000000, 659*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x04100000, 660*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x04100000, 661*61046927SAndroid Build Coastguard Worker HLSQ_DBG_ECO_CNTL = 0x0, 662*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x0, 663*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x02000000, 664*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x00000001 665*61046927SAndroid Build Coastguard Worker ) 666*61046927SAndroid Build Coastguard Worker )) 667*61046927SAndroid Build Coastguard Worker 668*61046927SAndroid Build Coastguard Workeradd_gpus([ 669*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0x00be06030500, name="Adreno 8c Gen 3"), 670*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0x007506030500, name="Adreno 7c+ Gen 3"), 671*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0x006006030500, name="Adreno 7c+ Gen 3 Lite"), 672*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0x00ac06030500, name="FD643"), # e.g. QCM6490, Fairphone 5 673*61046927SAndroid Build Coastguard Worker # fallback wildcard entry should be last: 674*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0xffff06030500, name="Adreno 7c+ Gen 3"), 675*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 676*61046927SAndroid Build Coastguard Worker CHIP.A6XX, 677*61046927SAndroid Build Coastguard Worker [a6xx_base, a6xx_gen4], 678*61046927SAndroid Build Coastguard Worker num_ccu = 2, 679*61046927SAndroid Build Coastguard Worker tile_align_w = 32, 680*61046927SAndroid Build Coastguard Worker tile_align_h = 16, 681*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 682*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 683*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 684*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 2 * 16, 685*61046927SAndroid Build Coastguard Worker magic_regs = dict( 686*61046927SAndroid Build Coastguard Worker PC_POWER_CNTL = 1, 687*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x05008000, 688*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x0, 689*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x00001400, 690*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000084, 691*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x1f, 692*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x00000006, 693*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x04100000, 694*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x04100000, 695*61046927SAndroid Build Coastguard Worker HLSQ_DBG_ECO_CNTL = 0x0, 696*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x0, 697*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x02000000, 698*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x00000001 699*61046927SAndroid Build Coastguard Worker ) 700*61046927SAndroid Build Coastguard Worker )) 701*61046927SAndroid Build Coastguard Worker 702*61046927SAndroid Build Coastguard Workeradd_gpus([ 703*61046927SAndroid Build Coastguard Worker GPUId(660), 704*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 705*61046927SAndroid Build Coastguard Worker CHIP.A6XX, 706*61046927SAndroid Build Coastguard Worker [a6xx_base, a6xx_gen4], 707*61046927SAndroid Build Coastguard Worker num_ccu = 3, 708*61046927SAndroid Build Coastguard Worker tile_align_w = 96, 709*61046927SAndroid Build Coastguard Worker tile_align_h = 16, 710*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 711*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 712*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 713*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 2 * 16, 714*61046927SAndroid Build Coastguard Worker magic_regs = dict( 715*61046927SAndroid Build Coastguard Worker PC_POWER_CNTL = 2, 716*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x05008000, 717*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x0, 718*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x00001400, 719*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000084, 720*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x1f, 721*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x01000000, 722*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x04100000, 723*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x04100000, 724*61046927SAndroid Build Coastguard Worker HLSQ_DBG_ECO_CNTL = 0x0, 725*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x0, 726*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x02000000, 727*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x00000001 728*61046927SAndroid Build Coastguard Worker ) 729*61046927SAndroid Build Coastguard Worker )) 730*61046927SAndroid Build Coastguard Worker 731*61046927SAndroid Build Coastguard Workeradd_gpus([ 732*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0x6060201, name="FD644"), 733*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 734*61046927SAndroid Build Coastguard Worker CHIP.A6XX, 735*61046927SAndroid Build Coastguard Worker [a6xx_base, a6xx_gen4], 736*61046927SAndroid Build Coastguard Worker num_ccu = 3, 737*61046927SAndroid Build Coastguard Worker tile_align_w = 96, 738*61046927SAndroid Build Coastguard Worker tile_align_h = 16, 739*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 740*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 741*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 742*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 4 * 16, 743*61046927SAndroid Build Coastguard Worker magic_regs = dict( 744*61046927SAndroid Build Coastguard Worker PC_POWER_CNTL = 2, 745*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x05008000, 746*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x0, 747*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x00001400, 748*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000084, 749*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x1f, 750*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x6, 751*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x04100000, 752*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x04100000, 753*61046927SAndroid Build Coastguard Worker HLSQ_DBG_ECO_CNTL = 0x0, 754*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x0, 755*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x02000000, 756*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x00000001 757*61046927SAndroid Build Coastguard Worker ) 758*61046927SAndroid Build Coastguard Worker )) 759*61046927SAndroid Build Coastguard Worker 760*61046927SAndroid Build Coastguard Workeradd_gpus([ 761*61046927SAndroid Build Coastguard Worker GPUId(690), 762*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0xffff06090000, name="FD690"), # Default no-speedbin fallback 763*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 764*61046927SAndroid Build Coastguard Worker CHIP.A6XX, 765*61046927SAndroid Build Coastguard Worker [a6xx_base, a6xx_gen4, a6xx_a690_quirk], 766*61046927SAndroid Build Coastguard Worker num_ccu = 8, 767*61046927SAndroid Build Coastguard Worker tile_align_w = 64, 768*61046927SAndroid Build Coastguard Worker tile_align_h = 32, 769*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 770*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 771*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 772*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 2 * 16, 773*61046927SAndroid Build Coastguard Worker magic_regs = dict( 774*61046927SAndroid Build Coastguard Worker PC_POWER_CNTL = 7, 775*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x04c00000, 776*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x0, 777*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x00001400, 778*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000084, 779*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x1f, 780*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x1200000, 781*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x100000, 782*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x00100000, # ??? 783*61046927SAndroid Build Coastguard Worker HLSQ_DBG_ECO_CNTL = 0x0, 784*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x0, 785*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x2000400, 786*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x00000001 787*61046927SAndroid Build Coastguard Worker ), 788*61046927SAndroid Build Coastguard Worker raw_magic_regs = [ 789*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_SP_UNKNOWN_AAF2, 0x00c00000], 790*61046927SAndroid Build Coastguard Worker ], 791*61046927SAndroid Build Coastguard Worker )) 792*61046927SAndroid Build Coastguard Worker 793*61046927SAndroid Build Coastguard Worker# Based on a6xx_base + a6xx_gen4 794*61046927SAndroid Build Coastguard Workera7xx_base = A6XXProps( 795*61046927SAndroid Build Coastguard Worker has_gmem_fast_clear = True, 796*61046927SAndroid Build Coastguard Worker has_hw_multiview = True, 797*61046927SAndroid Build Coastguard Worker has_fs_tex_prefetch = True, 798*61046927SAndroid Build Coastguard Worker has_sampler_minmax = True, 799*61046927SAndroid Build Coastguard Worker 800*61046927SAndroid Build Coastguard Worker supports_double_threadsize = True, 801*61046927SAndroid Build Coastguard Worker 802*61046927SAndroid Build Coastguard Worker sysmem_per_ccu_depth_cache_size = 256 * 1024, 803*61046927SAndroid Build Coastguard Worker sysmem_per_ccu_color_cache_size = 64 * 1024, 804*61046927SAndroid Build Coastguard Worker gmem_ccu_color_cache_fraction = CCUColorCacheFraction.EIGHTH.value, 805*61046927SAndroid Build Coastguard Worker 806*61046927SAndroid Build Coastguard Worker prim_alloc_threshold = 0x7, 807*61046927SAndroid Build Coastguard Worker vs_max_inputs_count = 32, 808*61046927SAndroid Build Coastguard Worker max_sets = 8, 809*61046927SAndroid Build Coastguard Worker 810*61046927SAndroid Build Coastguard Worker reg_size_vec4 = 96, 811*61046927SAndroid Build Coastguard Worker # Blob limits it to 128 but we hang with 128 812*61046927SAndroid Build Coastguard Worker instr_cache_size = 127, 813*61046927SAndroid Build Coastguard Worker supports_multiview_mask = True, 814*61046927SAndroid Build Coastguard Worker has_z24uint_s8uint = True, 815*61046927SAndroid Build Coastguard Worker tess_use_shared = True, 816*61046927SAndroid Build Coastguard Worker storage_16bit = True, 817*61046927SAndroid Build Coastguard Worker has_tex_filter_cubic = True, 818*61046927SAndroid Build Coastguard Worker has_separate_chroma_filter = True, 819*61046927SAndroid Build Coastguard Worker has_sample_locations = True, 820*61046927SAndroid Build Coastguard Worker has_lpac = True, 821*61046927SAndroid Build Coastguard Worker has_shading_rate = True, 822*61046927SAndroid Build Coastguard Worker has_getfiberid = True, 823*61046927SAndroid Build Coastguard Worker has_dp2acc = True, 824*61046927SAndroid Build Coastguard Worker has_dp4acc = True, 825*61046927SAndroid Build Coastguard Worker enable_lrz_fast_clear = True, 826*61046927SAndroid Build Coastguard Worker has_lrz_dir_tracking = True, 827*61046927SAndroid Build Coastguard Worker has_lrz_feedback = True, 828*61046927SAndroid Build Coastguard Worker has_per_view_viewport = True, 829*61046927SAndroid Build Coastguard Worker line_width_min = 1.0, 830*61046927SAndroid Build Coastguard Worker line_width_max = 127.5, 831*61046927SAndroid Build Coastguard Worker has_scalar_alu = True, 832*61046927SAndroid Build Coastguard Worker has_coherent_ubwc_flag_caches = True, 833*61046927SAndroid Build Coastguard Worker has_isam_v = True, 834*61046927SAndroid Build Coastguard Worker has_ssbo_imm_offsets = True, 835*61046927SAndroid Build Coastguard Worker has_early_preamble = True, 836*61046927SAndroid Build Coastguard Worker ) 837*61046927SAndroid Build Coastguard Worker 838*61046927SAndroid Build Coastguard Workera7xx_725 = A7XXProps( 839*61046927SAndroid Build Coastguard Worker cmdbuf_start_a725_quirk = True, 840*61046927SAndroid Build Coastguard Worker supports_ibo_ubwc = True, 841*61046927SAndroid Build Coastguard Worker fs_must_have_non_zero_constlen_quirk = True, 842*61046927SAndroid Build Coastguard Worker enable_tp_ubwc_flag_hint = True, 843*61046927SAndroid Build Coastguard Worker ) 844*61046927SAndroid Build Coastguard Worker 845*61046927SAndroid Build Coastguard Workera7xx_730 = A7XXProps( 846*61046927SAndroid Build Coastguard Worker supports_ibo_ubwc = True, 847*61046927SAndroid Build Coastguard Worker fs_must_have_non_zero_constlen_quirk = True, 848*61046927SAndroid Build Coastguard Worker enable_tp_ubwc_flag_hint = True, 849*61046927SAndroid Build Coastguard Worker ) 850*61046927SAndroid Build Coastguard Worker 851*61046927SAndroid Build Coastguard Workera7xx_735 = A7XXProps( 852*61046927SAndroid Build Coastguard Worker stsc_duplication_quirk = True, 853*61046927SAndroid Build Coastguard Worker has_event_write_sample_count = True, 854*61046927SAndroid Build Coastguard Worker ubwc_unorm_snorm_int_compatible = True, 855*61046927SAndroid Build Coastguard Worker supports_ibo_ubwc = True, 856*61046927SAndroid Build Coastguard Worker fs_must_have_non_zero_constlen_quirk = True, 857*61046927SAndroid Build Coastguard Worker enable_tp_ubwc_flag_hint = True, 858*61046927SAndroid Build Coastguard Worker ) 859*61046927SAndroid Build Coastguard Worker 860*61046927SAndroid Build Coastguard Workera7xx_740 = A7XXProps( 861*61046927SAndroid Build Coastguard Worker stsc_duplication_quirk = True, 862*61046927SAndroid Build Coastguard Worker has_event_write_sample_count = True, 863*61046927SAndroid Build Coastguard Worker ubwc_unorm_snorm_int_compatible = True, 864*61046927SAndroid Build Coastguard Worker supports_ibo_ubwc = True, 865*61046927SAndroid Build Coastguard Worker fs_must_have_non_zero_constlen_quirk = True, 866*61046927SAndroid Build Coastguard Worker # Most devices with a740 have blob v6xx which doesn't have 867*61046927SAndroid Build Coastguard Worker # this hint set. Match them for better compatibility by default. 868*61046927SAndroid Build Coastguard Worker enable_tp_ubwc_flag_hint = False, 869*61046927SAndroid Build Coastguard Worker ) 870*61046927SAndroid Build Coastguard Worker 871*61046927SAndroid Build Coastguard Workera7xx_740_a32 = A7XXProps( 872*61046927SAndroid Build Coastguard Worker cmdbuf_start_a725_quirk = True, 873*61046927SAndroid Build Coastguard Worker stsc_duplication_quirk = True, 874*61046927SAndroid Build Coastguard Worker has_event_write_sample_count = True, 875*61046927SAndroid Build Coastguard Worker ubwc_unorm_snorm_int_compatible = True, 876*61046927SAndroid Build Coastguard Worker supports_ibo_ubwc = True, 877*61046927SAndroid Build Coastguard Worker fs_must_have_non_zero_constlen_quirk = True, 878*61046927SAndroid Build Coastguard Worker enable_tp_ubwc_flag_hint = False, 879*61046927SAndroid Build Coastguard Worker ) 880*61046927SAndroid Build Coastguard Worker 881*61046927SAndroid Build Coastguard Workera7xx_750 = A7XXProps( 882*61046927SAndroid Build Coastguard Worker has_event_write_sample_count = True, 883*61046927SAndroid Build Coastguard Worker load_inline_uniforms_via_preamble_ldgk = True, 884*61046927SAndroid Build Coastguard Worker load_shader_consts_via_preamble = True, 885*61046927SAndroid Build Coastguard Worker has_gmem_vpc_attr_buf = True, 886*61046927SAndroid Build Coastguard Worker sysmem_vpc_attr_buf_size = 0x20000, 887*61046927SAndroid Build Coastguard Worker gmem_vpc_attr_buf_size = 0xc000, 888*61046927SAndroid Build Coastguard Worker ubwc_unorm_snorm_int_compatible = True, 889*61046927SAndroid Build Coastguard Worker supports_ibo_ubwc = True, 890*61046927SAndroid Build Coastguard Worker has_generic_clear = True, 891*61046927SAndroid Build Coastguard Worker gs_vpc_adjacency_quirk = True, 892*61046927SAndroid Build Coastguard Worker storage_8bit = True, 893*61046927SAndroid Build Coastguard Worker ubwc_all_formats_compatible = True, 894*61046927SAndroid Build Coastguard Worker has_compliant_dp4acc = True, 895*61046927SAndroid Build Coastguard Worker ubwc_coherency_quirk = True, 896*61046927SAndroid Build Coastguard Worker ) 897*61046927SAndroid Build Coastguard Worker 898*61046927SAndroid Build Coastguard Workera730_magic_regs = dict( 899*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x1000000, 900*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x800, 901*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x1440, 902*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000084, 903*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x0000003f, # 0x00001f1f in some tests 904*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x10000000, 905*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x00000000, 906*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x00000000, # is it even needed? 907*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x0, 908*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x02000000, 909*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x3200000, 910*61046927SAndroid Build Coastguard Worker 911*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E06 = 0x02080000, 912*61046927SAndroid Build Coastguard Worker ) 913*61046927SAndroid Build Coastguard Worker 914*61046927SAndroid Build Coastguard Workera730_raw_magic_regs = [ 915*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_UCHE_CACHE_WAYS, 0x00840004], 916*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_TPL1_DBG_ECO_CNTL1, 0x00040724], 917*61046927SAndroid Build Coastguard Worker 918*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE08, 0x00002400], 919*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE09, 0x00000000], 920*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE0A, 0x00000000], 921*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_UCHE_UNKNOWN_0E10, 0x00000000], 922*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_UCHE_UNKNOWN_0E11, 0x00000040], 923*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6C, 0x00008000], 924*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_PC_DBG_ECO_CNTL, 0x20080000], 925*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_PC_UNKNOWN_9E24, 0x21fc7f00], 926*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_VFD_UNKNOWN_A600, 0x00000000], 927*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE06, 0x00000000], 928*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6A, 0x00000000], 929*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6B, 0x00000080], 930*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE73, 0x00000000], 931*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB02, 0x00000000], 932*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB01, 0x00000000], 933*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB22, 0x00000000], 934*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_B310, 0x00000000], 935*61046927SAndroid Build Coastguard Worker 936*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8120, 0x09510840], 937*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8121, 0x00000a62], 938*61046927SAndroid Build Coastguard Worker 939*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE2, 0x00000000], 940*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE2+1, 0x00000000], 941*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE4, 0x00000000], 942*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE4+1, 0x00000000], 943*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE6, 0x00000000], 944*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE6+1, 0x00000000], 945*61046927SAndroid Build Coastguard Worker 946*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_80A7, 0x00000000], 947*61046927SAndroid Build Coastguard Worker 948*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_8E79, 0x00000000], 949*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_8899, 0x00000000], 950*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_88F5, 0x00000000], 951*61046927SAndroid Build Coastguard Worker 952*61046927SAndroid Build Coastguard Worker # Shading rate group 953*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_RB_UNKNOWN_88F4, 0x00000000], 954*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_HLSQ_UNKNOWN_A9AD, 0x00000000], 955*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_80F4, 0x00000000], 956*61046927SAndroid Build Coastguard Worker ] 957*61046927SAndroid Build Coastguard Worker 958*61046927SAndroid Build Coastguard Workeradd_gpus([ 959*61046927SAndroid Build Coastguard Worker # These are named as Adreno730v3 or Adreno725v1. 960*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0x07030002, name="FD725"), 961*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0xffff07030002, name="FD725"), 962*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 963*61046927SAndroid Build Coastguard Worker CHIP.A7XX, 964*61046927SAndroid Build Coastguard Worker [a7xx_base, a7xx_725], 965*61046927SAndroid Build Coastguard Worker num_ccu = 4, 966*61046927SAndroid Build Coastguard Worker tile_align_w = 64, 967*61046927SAndroid Build Coastguard Worker tile_align_h = 32, 968*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 969*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 970*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 971*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 2 * 16, 972*61046927SAndroid Build Coastguard Worker magic_regs = a730_magic_regs, 973*61046927SAndroid Build Coastguard Worker raw_magic_regs = a730_raw_magic_regs, 974*61046927SAndroid Build Coastguard Worker )) 975*61046927SAndroid Build Coastguard Worker 976*61046927SAndroid Build Coastguard Workeradd_gpus([ 977*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0x07030001, name="FD730"), # KGSL, no speedbin data 978*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0xffff07030001, name="FD730"), # Default no-speedbin fallback 979*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 980*61046927SAndroid Build Coastguard Worker CHIP.A7XX, 981*61046927SAndroid Build Coastguard Worker [a7xx_base, a7xx_730], 982*61046927SAndroid Build Coastguard Worker num_ccu = 4, 983*61046927SAndroid Build Coastguard Worker tile_align_w = 64, 984*61046927SAndroid Build Coastguard Worker tile_align_h = 32, 985*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 986*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 987*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 988*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 2 * 16, 989*61046927SAndroid Build Coastguard Worker magic_regs = a730_magic_regs, 990*61046927SAndroid Build Coastguard Worker raw_magic_regs = a730_raw_magic_regs, 991*61046927SAndroid Build Coastguard Worker )) 992*61046927SAndroid Build Coastguard Worker 993*61046927SAndroid Build Coastguard Workeradd_gpus([ 994*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0x43030B00, name="FD735") 995*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 996*61046927SAndroid Build Coastguard Worker CHIP.A7XX, 997*61046927SAndroid Build Coastguard Worker [a7xx_base, a7xx_735], 998*61046927SAndroid Build Coastguard Worker num_ccu = 3, 999*61046927SAndroid Build Coastguard Worker tile_align_w = 96, 1000*61046927SAndroid Build Coastguard Worker tile_align_h = 32, 1001*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 1002*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 1003*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 1004*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 2 * 16, 1005*61046927SAndroid Build Coastguard Worker magic_regs = dict( 1006*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x11100000, 1007*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x00004800, 1008*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x10001400, 1009*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000084, 1010*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x0000001f, 1011*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x10000000, 1012*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x00000001, 1013*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x00000001, # is it even needed? 1014*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x0, 1015*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x02000000, 1016*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x00000000, 1017*61046927SAndroid Build Coastguard Worker 1018*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E06 = 0x02080000, 1019*61046927SAndroid Build Coastguard Worker ), 1020*61046927SAndroid Build Coastguard Worker raw_magic_regs = [ 1021*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_UCHE_CACHE_WAYS, 0x00000000], 1022*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_TPL1_DBG_ECO_CNTL1, 0x00040724], 1023*61046927SAndroid Build Coastguard Worker 1024*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE08, 0x00000400], 1025*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE09, 0x00430800], 1026*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE0A, 0x00000000], 1027*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_UCHE_UNKNOWN_0E10, 0x00000000], 1028*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_UCHE_UNKNOWN_0E11, 0x00000000], 1029*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6C, 0x00000000], 1030*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_PC_DBG_ECO_CNTL, 0x00100000], 1031*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_PC_UNKNOWN_9E24, 0x01585600], 1032*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_VFD_UNKNOWN_A600, 0x00008000], 1033*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE06, 0x00000000], 1034*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6A, 0x00000000], 1035*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6B, 0x00000080], 1036*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE73, 0x00000000], 1037*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB02, 0x00000000], 1038*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB01, 0x00000000], 1039*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB22, 0x00000000], 1040*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_B310, 0x00000000], 1041*61046927SAndroid Build Coastguard Worker 1042*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8120, 0x09510840], 1043*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8121, 0x00000a62], 1044*61046927SAndroid Build Coastguard Worker 1045*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8009, 0x00000000], 1046*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_800A, 0x00000000], 1047*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_800B, 0x00000000], 1048*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_800C, 0x00000000], 1049*61046927SAndroid Build Coastguard Worker 1050*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE2, 0x00000000], 1051*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE2+1, 0x00000000], 1052*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE4, 0x00000000], 1053*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE4+1, 0x00000000], 1054*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE6, 0x00000000], 1055*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE6+1, 0x00000000], 1056*61046927SAndroid Build Coastguard Worker 1057*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_80A7, 0x00000000], 1058*61046927SAndroid Build Coastguard Worker 1059*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_8E79, 0x00000000], 1060*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_8899, 0x00000000], 1061*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_88F5, 0x00000000], 1062*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_8C34, 0x00000000], 1063*61046927SAndroid Build Coastguard Worker 1064*61046927SAndroid Build Coastguard Worker # Shading rate group 1065*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_RB_UNKNOWN_88F4, 0x00000000], 1066*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_HLSQ_UNKNOWN_A9AD, 0x00000000], 1067*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8008, 0x00000000], 1068*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_80F4, 0x00000000], 1069*61046927SAndroid Build Coastguard Worker ], 1070*61046927SAndroid Build Coastguard Worker )) 1071*61046927SAndroid Build Coastguard Worker 1072*61046927SAndroid Build Coastguard Workeradd_gpus([ 1073*61046927SAndroid Build Coastguard Worker GPUId(740), # Deprecated, used for dev kernels. 1074*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0x43050a01, name="FD740"), # KGSL, no speedbin data 1075*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0xffff43050a01, name="FD740"), # Default no-speedbin fallback 1076*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0x43050B00, name="FD740"), # Quest 3 1077*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0xffff43050B00, name="FD740"), 1078*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0xffff43050c01, name="Adreno X1-85"), 1079*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 1080*61046927SAndroid Build Coastguard Worker CHIP.A7XX, 1081*61046927SAndroid Build Coastguard Worker [a7xx_base, a7xx_740], 1082*61046927SAndroid Build Coastguard Worker num_ccu = 6, 1083*61046927SAndroid Build Coastguard Worker tile_align_w = 96, 1084*61046927SAndroid Build Coastguard Worker tile_align_h = 32, 1085*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 1086*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 1087*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 1088*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 2 * 16, 1089*61046927SAndroid Build Coastguard Worker magic_regs = dict( 1090*61046927SAndroid Build Coastguard Worker # PC_POWER_CNTL = 7, 1091*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x11100000, 1092*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x00004800, 1093*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x10001400, 1094*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000084, 1095*61046927SAndroid Build Coastguard Worker # Blob uses 0x1f or 0x1f1f, however these values cause vertices 1096*61046927SAndroid Build Coastguard Worker # corruption in some tests. 1097*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x0000003f, 1098*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x10000000, 1099*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x00000000, 1100*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x00000000, # is it even needed? 1101*61046927SAndroid Build Coastguard Worker # HLSQ_DBG_ECO_CNTL = 0x0, 1102*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x0, 1103*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x02000000, 1104*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x00000000, 1105*61046927SAndroid Build Coastguard Worker 1106*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E06 = 0x02080000, 1107*61046927SAndroid Build Coastguard Worker ), 1108*61046927SAndroid Build Coastguard Worker raw_magic_regs = [ 1109*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_UCHE_CACHE_WAYS, 0x00040004], 1110*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_TPL1_DBG_ECO_CNTL1, 0x00040724], 1111*61046927SAndroid Build Coastguard Worker 1112*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE08, 0x00000400], 1113*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE09, 0x00430800], 1114*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE0A, 0x00000000], 1115*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_UCHE_UNKNOWN_0E10, 0x00000000], 1116*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_UCHE_UNKNOWN_0E11, 0x00000000], 1117*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6C, 0x00000000], 1118*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_PC_DBG_ECO_CNTL, 0x00100000], 1119*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_PC_UNKNOWN_9E24, 0x21585600], 1120*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_VFD_UNKNOWN_A600, 0x00008000], 1121*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE06, 0x00000000], 1122*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6A, 0x00000000], 1123*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6B, 0x00000080], 1124*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE73, 0x00000000], 1125*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB02, 0x00000000], 1126*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB01, 0x00000000], 1127*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB22, 0x00000000], 1128*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_B310, 0x00000000], 1129*61046927SAndroid Build Coastguard Worker 1130*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8120, 0x09510840], 1131*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8121, 0x00000a62], 1132*61046927SAndroid Build Coastguard Worker 1133*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8009, 0x00000000], 1134*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_800A, 0x00000000], 1135*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_800B, 0x00000000], 1136*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_800C, 0x00000000], 1137*61046927SAndroid Build Coastguard Worker 1138*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE2, 0x00000000], 1139*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE2+1, 0x00000000], 1140*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE4, 0x00000000], 1141*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE4+1, 0x00000000], 1142*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE6, 0x00000000], 1143*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE6+1, 0x00000000], 1144*61046927SAndroid Build Coastguard Worker 1145*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_80A7, 0x00000000], 1146*61046927SAndroid Build Coastguard Worker 1147*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_8E79, 0x00000000], 1148*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_8899, 0x00000000], 1149*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_88F5, 0x00000000], 1150*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_8C34, 0x00000000], 1151*61046927SAndroid Build Coastguard Worker 1152*61046927SAndroid Build Coastguard Worker # Shading rate group 1153*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_RB_UNKNOWN_88F4, 0x00000000], 1154*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_HLSQ_UNKNOWN_A9AD, 0x00000000], 1155*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8008, 0x00000000], 1156*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_80F4, 0x00000000], 1157*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_80F5, 0x00000000], 1158*61046927SAndroid Build Coastguard Worker ], 1159*61046927SAndroid Build Coastguard Worker )) 1160*61046927SAndroid Build Coastguard Worker 1161*61046927SAndroid Build Coastguard Worker# Values from blob v676.0 1162*61046927SAndroid Build Coastguard Workeradd_gpus([ 1163*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0x43050a00, name="FDA32"), # Adreno A32 (G3x Gen 2) 1164*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0xffff43050a00, name="FDA32"), 1165*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 1166*61046927SAndroid Build Coastguard Worker CHIP.A7XX, 1167*61046927SAndroid Build Coastguard Worker [a7xx_base, a7xx_740_a32], 1168*61046927SAndroid Build Coastguard Worker num_ccu = 6, 1169*61046927SAndroid Build Coastguard Worker tile_align_w = 96, 1170*61046927SAndroid Build Coastguard Worker tile_align_h = 32, 1171*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 1172*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 1173*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 1174*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 2 * 16, 1175*61046927SAndroid Build Coastguard Worker magic_regs = dict( 1176*61046927SAndroid Build Coastguard Worker # PC_POWER_CNTL = 7, 1177*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x11100000, 1178*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x00004800, 1179*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x10001400, 1180*61046927SAndroid Build Coastguard Worker UCHE_CLIENT_PF = 0x00000084, 1181*61046927SAndroid Build Coastguard Worker # Blob uses 0x1f or 0x1f1f, however these values cause vertices 1182*61046927SAndroid Build Coastguard Worker # corruption in some tests. 1183*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x0000003f, 1184*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x10000000, 1185*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x00000000, 1186*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x00000000, # is it even needed? 1187*61046927SAndroid Build Coastguard Worker # HLSQ_DBG_ECO_CNTL = 0x0, 1188*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x00000000, 1189*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x02000000, 1190*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x00000000, 1191*61046927SAndroid Build Coastguard Worker 1192*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E06 = 0x02080000, 1193*61046927SAndroid Build Coastguard Worker ), 1194*61046927SAndroid Build Coastguard Worker raw_magic_regs = [ 1195*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_UCHE_CACHE_WAYS, 0x00040004], 1196*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_TPL1_DBG_ECO_CNTL1, 0x00000700], 1197*61046927SAndroid Build Coastguard Worker 1198*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE08, 0x00000400], 1199*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE09, 0x00430820], 1200*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE0A, 0x00000000], 1201*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_UCHE_UNKNOWN_0E10, 0x00000000], 1202*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_UCHE_UNKNOWN_0E11, 0x00000080], 1203*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6C, 0x00000000], 1204*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_PC_DBG_ECO_CNTL, 0x00100000], 1205*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_PC_UNKNOWN_9E24, 0x21585600], 1206*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_VFD_UNKNOWN_A600, 0x00008000], 1207*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE06, 0x00000000], 1208*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6A, 0x00000000], 1209*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6B, 0x00000080], 1210*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE73, 0x00000000], 1211*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB02, 0x00000000], 1212*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB01, 0x00000000], 1213*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB22, 0x00000000], 1214*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_B310, 0x00000000], 1215*61046927SAndroid Build Coastguard Worker 1216*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8120, 0x09510840], 1217*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8121, 0x00000a62], 1218*61046927SAndroid Build Coastguard Worker 1219*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8009, 0x00000000], 1220*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_800A, 0x00000000], 1221*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_800B, 0x00000000], 1222*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_800C, 0x00000000], 1223*61046927SAndroid Build Coastguard Worker 1224*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE2, 0x00000000], 1225*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE2+1, 0x00000000], 1226*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE4, 0x00000000], 1227*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE4+1, 0x00000000], 1228*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE6, 0x00000000], 1229*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE6+1, 0x00000000], 1230*61046927SAndroid Build Coastguard Worker 1231*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_80A7, 0x00000000], 1232*61046927SAndroid Build Coastguard Worker 1233*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_8E79, 0x00000000], 1234*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_8899, 0x00000000], 1235*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_88F5, 0x00000000], 1236*61046927SAndroid Build Coastguard Worker 1237*61046927SAndroid Build Coastguard Worker # Shading rate group 1238*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_RB_UNKNOWN_88F4, 0x00000000], 1239*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_HLSQ_UNKNOWN_A9AD, 0x00000000], 1240*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_80F4, 0x00000000], 1241*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_80F5, 0x00000000], 1242*61046927SAndroid Build Coastguard Worker ], 1243*61046927SAndroid Build Coastguard Worker )) 1244*61046927SAndroid Build Coastguard Worker 1245*61046927SAndroid Build Coastguard Workeradd_gpus([ 1246*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0x43051401, name="FD750"), # KGSL, no speedbin data 1247*61046927SAndroid Build Coastguard Worker GPUId(chip_id=0xffff43051401, name="FD750"), # Default no-speedbin fallback 1248*61046927SAndroid Build Coastguard Worker ], A6xxGPUInfo( 1249*61046927SAndroid Build Coastguard Worker CHIP.A7XX, 1250*61046927SAndroid Build Coastguard Worker [a7xx_base, a7xx_750], 1251*61046927SAndroid Build Coastguard Worker num_ccu = 6, 1252*61046927SAndroid Build Coastguard Worker tile_align_w = 96, 1253*61046927SAndroid Build Coastguard Worker tile_align_h = 32, 1254*61046927SAndroid Build Coastguard Worker num_vsc_pipes = 32, 1255*61046927SAndroid Build Coastguard Worker cs_shared_mem_size = 32 * 1024, 1256*61046927SAndroid Build Coastguard Worker wave_granularity = 2, 1257*61046927SAndroid Build Coastguard Worker fibers_per_sp = 128 * 2 * 16, 1258*61046927SAndroid Build Coastguard Worker magic_regs = dict( 1259*61046927SAndroid Build Coastguard Worker TPL1_DBG_ECO_CNTL = 0x11100000, 1260*61046927SAndroid Build Coastguard Worker GRAS_DBG_ECO_CNTL = 0x00004800, 1261*61046927SAndroid Build Coastguard Worker SP_CHICKEN_BITS = 0x10000400, 1262*61046927SAndroid Build Coastguard Worker PC_MODE_CNTL = 0x00003f1f, 1263*61046927SAndroid Build Coastguard Worker SP_DBG_ECO_CNTL = 0x10000000, 1264*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL = 0x00000001, 1265*61046927SAndroid Build Coastguard Worker RB_DBG_ECO_CNTL_blit = 0x00000001, 1266*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E01 = 0x0, 1267*61046927SAndroid Build Coastguard Worker VPC_DBG_ECO_CNTL = 0x02000000, 1268*61046927SAndroid Build Coastguard Worker UCHE_UNKNOWN_0E12 = 0x40000000, 1269*61046927SAndroid Build Coastguard Worker 1270*61046927SAndroid Build Coastguard Worker RB_UNKNOWN_8E06 = 0x02082000, 1271*61046927SAndroid Build Coastguard Worker ), 1272*61046927SAndroid Build Coastguard Worker raw_magic_regs = [ 1273*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_UCHE_CACHE_WAYS, 0x00000000], 1274*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_UCHE_UNKNOWN_0E10, 0x00000000], 1275*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_UCHE_UNKNOWN_0E11, 0x00000080], 1276*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE08, 0x00000000], 1277*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE09, 0x00431800], 1278*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE0A, 0x00800000], 1279*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6C, 0x00000000], 1280*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_PC_DBG_ECO_CNTL, 0x00100000], 1281*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_PC_UNKNOWN_9E24, 0x01585600], 1282*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_VFD_UNKNOWN_A600, 0x00008000], 1283*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE06, 0x00000000], 1284*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6A, 0x00000000], 1285*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE6B, 0x00000080], 1286*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AE73, 0x00000000], 1287*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB02, 0x00000000], 1288*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB01, 0x00000000], 1289*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_AB22, 0x00000000], 1290*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_B310, 0x00000000], 1291*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8120, 0x09510840], 1292*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8121, 0x00000a62], 1293*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8009, 0x00000000], 1294*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_800A, 0x00000000], 1295*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_800B, 0x00000000], 1296*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_800C, 0x00000000], 1297*61046927SAndroid Build Coastguard Worker 1298*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE2, 0x00000000], 1299*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE2+1, 0x00000000], 1300*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE4, 0x00000000], 1301*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE4+1, 0x00000000], 1302*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE6, 0x00000000], 1303*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_UNKNOWN_0CE6+1, 0x00000000], 1304*61046927SAndroid Build Coastguard Worker 1305*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_80A7, 0x00000000], 1306*61046927SAndroid Build Coastguard Worker 1307*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_8899, 0x00000000], 1308*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_88F5, 0x00000000], 1309*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_RB_UNKNOWN_8C34, 0x00000000], 1310*61046927SAndroid Build Coastguard Worker 1311*61046927SAndroid Build Coastguard Worker # Shading rate group 1312*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A6XX_RB_UNKNOWN_88F4, 0x00000000], 1313*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_HLSQ_UNKNOWN_A9AD, 0x00000000], 1314*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_8008, 0x00000000], 1315*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_GRAS_UNKNOWN_80F4, 0x00000000], 1316*61046927SAndroid Build Coastguard Worker 1317*61046927SAndroid Build Coastguard Worker [0x930a, 0], 1318*61046927SAndroid Build Coastguard Worker [0x960a, 1], 1319*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_PS_ALIASED_COMPONENTS_CONTROL, 0], 1320*61046927SAndroid Build Coastguard Worker [A6XXRegs.REG_A7XX_SP_PS_ALIASED_COMPONENTS, 0], 1321*61046927SAndroid Build Coastguard Worker ], 1322*61046927SAndroid Build Coastguard Worker )) 1323*61046927SAndroid Build Coastguard Worker 1324*61046927SAndroid Build Coastguard Workertemplate = """\ 1325*61046927SAndroid Build Coastguard Worker/* Copyright © 2021 Google, Inc. 1326*61046927SAndroid Build Coastguard Worker * 1327*61046927SAndroid Build Coastguard Worker * SPDX-License-Identifier: MIT 1328*61046927SAndroid Build Coastguard Worker */ 1329*61046927SAndroid Build Coastguard Worker 1330*61046927SAndroid Build Coastguard Worker#include "freedreno_dev_info.h" 1331*61046927SAndroid Build Coastguard Worker#include "util/u_debug.h" 1332*61046927SAndroid Build Coastguard Worker#include "util/log.h" 1333*61046927SAndroid Build Coastguard Worker 1334*61046927SAndroid Build Coastguard Worker#include <stdlib.h> 1335*61046927SAndroid Build Coastguard Worker 1336*61046927SAndroid Build Coastguard Worker/* Map python to C: */ 1337*61046927SAndroid Build Coastguard Worker#define True true 1338*61046927SAndroid Build Coastguard Worker#define False false 1339*61046927SAndroid Build Coastguard Worker 1340*61046927SAndroid Build Coastguard Worker%for info in s.gpu_infos: 1341*61046927SAndroid Build Coastguard Workerstatic const struct fd_dev_info __info${s.info_index(info)} = ${str(info)}; 1342*61046927SAndroid Build Coastguard Worker%endfor 1343*61046927SAndroid Build Coastguard Worker 1344*61046927SAndroid Build Coastguard Workerstatic const struct fd_dev_rec fd_dev_recs[] = { 1345*61046927SAndroid Build Coastguard Worker%for id, info in s.gpus.items(): 1346*61046927SAndroid Build Coastguard Worker { {${id.gpu_id}, ${hex(id.chip_id)}}, "${id.name}", &__info${s.info_index(info)} }, 1347*61046927SAndroid Build Coastguard Worker%endfor 1348*61046927SAndroid Build Coastguard Worker}; 1349*61046927SAndroid Build Coastguard Worker 1350*61046927SAndroid Build Coastguard Workervoid 1351*61046927SAndroid Build Coastguard Workerfd_dev_info_apply_dbg_options(struct fd_dev_info *info) 1352*61046927SAndroid Build Coastguard Worker{ 1353*61046927SAndroid Build Coastguard Worker const char *env = debug_get_option("FD_DEV_FEATURES", NULL); 1354*61046927SAndroid Build Coastguard Worker if (!env || !*env) 1355*61046927SAndroid Build Coastguard Worker return; 1356*61046927SAndroid Build Coastguard Worker 1357*61046927SAndroid Build Coastguard Worker char *features = strdup(env); 1358*61046927SAndroid Build Coastguard Worker char *feature, *feature_end; 1359*61046927SAndroid Build Coastguard Worker feature = strtok_r(features, ":", &feature_end); 1360*61046927SAndroid Build Coastguard Worker while (feature != NULL) { 1361*61046927SAndroid Build Coastguard Worker char *name, *name_end; 1362*61046927SAndroid Build Coastguard Worker name = strtok_r(feature, "=", &name_end); 1363*61046927SAndroid Build Coastguard Worker 1364*61046927SAndroid Build Coastguard Worker if (!name) { 1365*61046927SAndroid Build Coastguard Worker mesa_loge("Invalid feature \\"%s\\" in FD_DEV_FEATURES", feature); 1366*61046927SAndroid Build Coastguard Worker exit(1); 1367*61046927SAndroid Build Coastguard Worker } 1368*61046927SAndroid Build Coastguard Worker 1369*61046927SAndroid Build Coastguard Worker char *value = strtok_r(NULL, "=", &name_end); 1370*61046927SAndroid Build Coastguard Worker 1371*61046927SAndroid Build Coastguard Worker feature = strtok_r(NULL, ":", &feature_end); 1372*61046927SAndroid Build Coastguard Worker 1373*61046927SAndroid Build Coastguard Worker%for (prop, gen), val in unique_props.items(): 1374*61046927SAndroid Build Coastguard Worker <% 1375*61046927SAndroid Build Coastguard Worker if isinstance(val, bool): 1376*61046927SAndroid Build Coastguard Worker parse_value = "debug_parse_bool_option" 1377*61046927SAndroid Build Coastguard Worker else: 1378*61046927SAndroid Build Coastguard Worker parse_value = "debug_parse_num_option" 1379*61046927SAndroid Build Coastguard Worker %> 1380*61046927SAndroid Build Coastguard Worker if (strcmp(name, "${prop}") == 0) { 1381*61046927SAndroid Build Coastguard Worker info->${gen}.${prop} = ${parse_value}(value, info->${gen}.${prop}); 1382*61046927SAndroid Build Coastguard Worker continue; 1383*61046927SAndroid Build Coastguard Worker } 1384*61046927SAndroid Build Coastguard Worker%endfor 1385*61046927SAndroid Build Coastguard Worker 1386*61046927SAndroid Build Coastguard Worker mesa_loge("Invalid feature \\"%s\\" in FD_DEV_FEATURES", name); 1387*61046927SAndroid Build Coastguard Worker exit(1); 1388*61046927SAndroid Build Coastguard Worker } 1389*61046927SAndroid Build Coastguard Worker 1390*61046927SAndroid Build Coastguard Worker free(features); 1391*61046927SAndroid Build Coastguard Worker} 1392*61046927SAndroid Build Coastguard Worker""" 1393*61046927SAndroid Build Coastguard Worker 1394*61046927SAndroid Build Coastguard Workerprint(Template(template).render(s=s, unique_props=A6XXProps.unique_props)) 1395*61046927SAndroid Build Coastguard Worker 1396