xref: /aosp_15_r20/external/mesa3d/src/freedreno/common/freedreno_devices.py (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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