1<?xml version="1.0" ?> 2 3<!-- 4Copyright © 2022 Imagination Technologies Ltd. 5 6Permission is hereby granted, free of charge, to any person obtaining a copy 7of this software and associated documentation files (the "Software"), to deal 8in the Software without restriction, including without limitation the rights 9to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10copies of the Software, and to permit persons to whom the Software is 11furnished to do so, subject to the following conditions: 12 13The above copyright notice and this permission notice (including the next 14paragraph) shall be included in all copies or substantial portions of the 15Software. 16 17THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23SOFTWARE. 24--> 25 26<csbgen name="ROGUE" prefix="CR"> 27 28 <define name="PM_VHEAP_TABLE_SIZE" value="0x180" /> 29 30 <enum name="COMP_IADDR_TYPE"> 31 <value name="INDIRECT_1TILE" value="0"/> 32 <value name="INDIRECT_4TILE" value="1"/> 33 </enum> 34 35 <enum name="COMPRESS_SIZE"> 36 <value name="BLOCK_8X8" value="0"/> 37 <value name="BLOCK_16X4" value="1"/> 38 </enum> 39 40 <enum name="DIR_TYPE"> 41 <value name="TL2BR" value="0"/> 42 <value name="TR2BL" value="1"/> 43 <value name="BL2TR" value="2"/> 44 <value name="BR2TL" value="3"/> 45 </enum> 46 47 <enum name="ISP_AA_MODE_TYPE"> 48 <value name="AA_NONE" value="0"/> 49 <value name="AA_2X" value="1"/> 50 <value name="AA_4X" value="2"/> 51 <value name="AA_8X" value="3"/> 52 </enum> 53 54 <enum name="ISP_RENDER_MODE_TYPE"> 55 <value name="NORM" value="0"/> 56 <value name="FAST_2D" value="2"/> 57 <value name="FAST_SCALE" value="3"/> 58 </enum> 59 60 <enum name="MEMLAYOUT"> 61 <value name="LINEAR" value="0"/> 62 <value name="TWIDDLE_2D" value="1"/> 63 <value name="TWIDDLE_3D" value="2"/> 64 <value name="TILED" value="3"/> 65 </enum> 66 67 <enum name="MODE_TYPE"> 68 <value name="DX9" value="0"/> 69 <value name="DX10" value="1"/> 70 <value name="OGL" value="2"/> 71 </enum> 72 73 <enum name="PIPE_NUM"> 74 <value name="PIPE_ONE" value="0"/> 75 <value name="PIPE_TWO" value="1"/> 76 <value name="PIPE_THREE" value="2"/> 77 <value name="PIPE_FOUR" value="3"/> 78 <value name="PIPE_FIVE" value="4"/> 79 <value name="PIPE_SIX" value="5"/> 80 <value name="PIPE_SEVEN" value="6"/> 81 <value name="PIPE_EIGHT" value="7"/> 82 <value name="PIPE_NINE" value="8"/> 83 <value name="PIPE_TEN" value="9"/> 84 <value name="PIPE_ELEVEN" value="10"/> 85 <value name="PIPE_TWELVE" value="11"/> 86 <value name="PIPE_THIRTEEN" value="12"/> 87 <value name="PIPE_FOURTEEN" value="13"/> 88 <value name="PIPE_FIFTEEN" value="14"/> 89 <value name="PIPE_SIXTEEN" value="15"/> 90 </enum> 91 92 <enum name="PIXEL_WIDTH"> 93 <value name="2REGISTERS" value="0"/> 94 <value name="4REGISTERS" value="1"/> 95 <value name="8REGISTERS" value="2"/> 96 <value name="1REGISTER" value="3"/> 97 </enum> 98 99 <enum name="ROTATION_TYPE"> 100 <value name="0_DEG" value="0"/> 101 <value name="90_DEG" value="1"/> 102 <value name="180_DEG" value="2"/> 103 <value name="270_DEG" value="3"/> 104 </enum> 105 106 <enum name="SIZE"> 107 <value name="1_PIXEL" value="0"/> 108 <value name="2_PIXEL" value="1"/> 109 <value name="4_PIXEL" value="2"/> 110 <value name="8_PIXEL" value="3"/> 111 <value name="16_PIXEL" value="4"/> 112 <value name="32_PIXEL" value="5"/> 113 <value name="64_PIXEL" value="6"/> 114 <value name="128_PIXEL" value="7"/> 115 <value name="256_PIXEL" value="8"/> 116 <value name="512_PIXEL" value="9"/> 117 <value name="1K_PIXEL" value="10"/> 118 <value name="2K_PIXEL" value="11"/> 119 <value name="4K_PIXEL" value="12"/> 120 <value name="8K_PIXEL" value="13"/> 121 <value name="16K_PIXEL" value="14"/> 122 </enum> 123 124 <enum name="SWIZ"> 125 <value name="SOURCE_CHAN0" value="0"/> 126 <value name="SOURCE_CHAN1" value="1"/> 127 <value name="SOURCE_CHAN2" value="2"/> 128 <value name="SOURCE_CHAN3" value="3"/> 129 <value name="ONE" value="4"/> 130 <value name="ZERO" value="5"/> 131 </enum> 132 133 <enum name="TFBC_LOSSY"> 134 <value name="LOSSLESS" value="0"/> 135 <value name="LOSSY_75" value="1"/> 136 <value name="LOSSY_50" value="2"/> 137 <value name="LOSSY_25" value="3"/> 138 </enum> 139 140 <enum name="TWOCOMP_GAMMA"> 141 <value name="GAMMA_BOTTOM_CHANNEL" value="0"/> 142 <value name="GAMMA_BOTH_CHANNELS" value="1"/> 143 </enum> 144 145 <enum name="ZLS_FORMAT_TYPE"> 146 <!-- Separate depth and stencil --> 147 <value name="F32Z" value="0"/> 148 <!-- Packed depth and stencil --> 149 <value name="24BITINT" value="1"/> 150 <!-- Separate depth and stencil --> 151 <value name="16BITINT" value="2"/> 152 <!-- Packed depth and stencil --> 153 <value name="F64Z" value="3"/> 154 </enum> 155 156 <struct name="PM_MTILE_ARRAY" length="2"> 157 <field name="base_addr" start="4" end="39" shift="4" type="address"/> 158 </struct> 159 160 <struct name="PM_VHEAP_TABLE" length="2"> 161 <field name="base_addr" start="4" end="39" shift="4" type="address"/> 162 </struct> 163 164 <struct name="PM_MLIST0_BASE" length="2"> 165 <field name="addr" start="4" end="39" shift="4" type="address"/> 166 </struct> 167 168 <struct name="VDM_CTRL_STREAM_BASE" length="2"> 169 <field name="addr" start="2" end="39" shift="2" type="address"/> 170 </struct> 171 172 <struct name="VDM_CALL_STACK_POINTER" length="2"> 173 <field name="addr" start="3" end="39" shift="3" type="address"/> 174 </struct> 175 176 <struct name="VDM_CONTEXT_STATE_BASE" length="2"> 177 <field name="addr" start="4" end="39" shift="4" type="address"/> 178 </struct> 179 180 <struct name="VDM_CONTEXT_STORE_TASK0" length="2"> 181 <field name="pds_state1" start="32" end="63" type="uint"/> 182 <field name="pds_state0" start="0" end="31" type="uint"/> 183 </struct> 184 185 <struct name="VDM_CONTEXT_STORE_TASK1" length="1"> 186 <field name="pds_state2" start="0" end="31" type="uint"/> 187 </struct> 188 189 <struct name="VDM_CONTEXT_STORE_TASK2" length="2"> 190 <field name="stream_out2" start="32" end="63" type="uint"/> 191 <field name="stream_out1" start="0" end="31" type="uint"/> 192 </struct> 193 194 <struct name="VDM_CONTEXT_RESUME_TASK0" length="2"> 195 <field name="pds_state1" start="32" end="63" type="uint"/> 196 <field name="pds_state0" start="0" end="31" type="uint"/> 197 </struct> 198 199 <struct name="VDM_CONTEXT_RESUME_TASK1" length="1"> 200 <field name="pds_state2" start="0" end="31" type="uint"/> 201 </struct> 202 203 <struct name="VDM_CONTEXT_RESUME_TASK2" length="2"> 204 <field name="stream_out2" start="32" end="63" type="uint"/> 205 <field name="stream_out1" start="0" end="31" type="uint"/> 206 </struct> 207 208 <struct name="CDM_CONTEXT_STATE_BASE" length="2"> 209 <field name="addr" start="4" end="39" shift="4" type="address"/> 210 </struct> 211 212 <struct name="CDM_CONTEXT_PDS0" length="2"> 213 <field name="data_addr" start="36" end="63" shift="4" type="address"/> 214 <field name="code_addr" start="4" end="31" shift="4" type="address"/> 215 </struct> 216 217 <struct name="CDM_CTRL_STREAM_BASE" length="2"> 218 <field name="addr" start="2" end="39" shift="2" type="address"/> 219 </struct> 220 221 <struct name="CDM_CONTEXT_PDS1" length="1"> 222 <field name="pds_seq_dep" start="29" end="29" type="bool"/> 223 <field name="usc_seq_dep" start="28" end="28" type="bool"/> 224 <!-- false=All, true=Any --> 225 <field name="target" start="27" end="27" type="bool"/> 226 <field name="unified_size" start="21" end="26" type="uint"/> 227 <field name="common_shared" start="20" end="20" type="bool"/> 228 <field name="common_size" start="11" end="19" type="uint"> 229 <define name="UNIT_SIZE" value="64"/> 230 </field> 231 <field name="temp_size" start="7" end="10" type="uint"/> 232 <field name="data_size" start="1" end="6" type="uint"> 233 <define name="UNIT_SIZE" value="16"/> 234 </field> 235 <field name="fence" start="0" end="0" type="bool"/> 236 </struct> 237 238 <struct name="CDM_TERMINATE_PDS" length="2"> 239 <field name="data_addr" start="36" end="63" shift="4" type="address"/> 240 <field name="code_addr" start="4" end="31" shift="4" type="address"/> 241 </struct> 242 243 <struct name="CDM_TERMINATE_PDS1" length="1"> 244 <field name="pds_seq_dep" start="29" end="29" type="bool"/> 245 <field name="usc_seq_dep" start="28" end="28" type="bool"/> 246 <field name="target" start="27" end="27" type="bool"/> 247 <field name="unified_size" start="21" end="26" type="uint"/> 248 <field name="common_shared" start="20" end="20" type="bool"/> 249 <field name="common_size" start="11" end="19" type="uint"/> 250 <field name="temp_size" start="7" end="10" type="uint"/> 251 <field name="data_size" start="1" end="6" type="uint"/> 252 <field name="fence" start="0" end="0" type="bool"/> 253 </struct> 254 255 <struct name="CDM_CONTEXT_LOAD_PDS0" length="2"> 256 <field name="data_addr" start="36" end="63" shift="4" type="address"/> 257 <field name="code_addr" start="4" end="31" shift="4" type="address"/> 258 </struct> 259 260 <struct name="COMPUTE_CLUSTER" length="1"> 261 <field name="mask" start="0" end="31" type="uint"/> 262 </struct> 263 264 <struct name="CDM_ITEM" length="1"> 265 <field name="mode" start="0" end="1" type="uint"/> 266 </struct> 267 268 <struct name="PDS_CTRL0" length="1"> 269 <condition type="if" check="ROGUEXE"/> 270 <condition type="if" check="COMPUTE"/> 271 <field name="roguexe_max_num_cdm_tasks" start="24" end="31" type="uint"/> 272 <condition type="endif" check="COMPUTE"/> 273 <condition type="if" check="NUM_RASTER_PIPES > 0"/> 274 <field name="roguexe_max_num_pdm_tasks" start="16" end="23" type="uint"/> 275 <condition type="endif" check="NUM_RASTER_PIPES > 0"/> 276 <condition type="if" check="NUM_TA > 0"/> 277 <field name="roguexe_max_num_vdm_tasks" start="8" end="15" type="uint"/> 278 <condition type="endif" check="NUM_TA > 0"/> 279 <condition type="else" check="ROGUEXE"/> 280 <condition type="if" check="COMPUTE"/> 281 <field name="max_num_cdm_tasks" start="24" end="30" type="uint"/> 282 <condition type="endif" check="COMPUTE"/> 283 <field name="max_num_pdm_tasks" start="16" end="22" type="uint"/> 284 <field name="max_num_vdm_tasks" start="8" end="14" type="uint"/> 285 <condition type="endif" check="ROGUEXE"/> 286 </struct> 287 288 <struct name="PDS_CTRL1" length="1"> 289 <field name="sm_overlap_enable" start="23" end="23" type="bool"/> 290 </struct> 291 292 <struct name="EVENT_PIXEL_PDS_CODE" length="1"> 293 <field name="addr" start="4" end="31" shift="4" type="address"/> 294 </struct> 295 296 <struct name="EVENT_PIXEL_PDS_DATA" length="1"> 297 <!-- This is an offset actually. Note for when we auto-generate the xmls. --> 298 <field name="addr" start="4" end="31" shift="4" type="address"/> 299 </struct> 300 301 <struct name="EVENT_PIXEL_PDS_INFO" length="1"> 302 <field name="usc_sr_size" start="9" end="14" type="uint"> 303 <define name="UNIT_SIZE" value="16"/> 304 </field> 305 <field name="temp_stride" start="5" end="8" type="uint"> 306 <define name="UNIT_SIZE" value="4"/> 307 </field> 308 <field name="const_size" start="0" end="4" type="uint"> 309 <define name="UNIT_SIZE" value="4"/> 310 </field> 311 </struct> 312 313 <struct name="PDS_BGRND0_BASE" length="2"> 314 <!-- This is an offset actually. Note for when we auto-generate the xmls. --> 315 <field name="texunicode_addr" start="36" end="63" shift="4" type="address"/> 316 <!-- This is an offset actually. Note for when we auto-generate the xmls. --> 317 <field name="shader_addr" start="4" end="31" shift="4" type="address"/> 318 </struct> 319 320 <struct name="PDS_BGRND1_BASE" length="2"> 321 <!-- This is an offset actually. Note for when we auto-generate the xmls. --> 322 <field name="texturedata_addr" start="36" end="63" shift="4" type="address"/> 323 <!-- Unused in the Vulkan driver. --> 324 <field name="varying_addr" start="4" end="31" shift="4" type="address"/> 325 </struct> 326 327 <struct name="PDS_BGRND2_BASE" length="2"> 328 <!-- This is an offset actually. Note for when we auto-generate the xmls. --> 329 <field name="uniformdata_addr" start="4" end="31" shift="4" type="address"/> 330 </struct> 331 332 <struct name="PDS_BGRND3_SIZEINFO" length="2"> 333 <field name="usc_sharedsize" start="55" end="63" type="uint"> 334 <define name="UNIT_SIZE" value="16"/> 335 </field> 336 <field name="pds_batchnum" start="32" end="45" type="uint"/> 337 <field name="pds_uniformsize" start="23" end="31" type="uint"> 338 <define name="UNIT_SIZE" value="4"/> 339 </field> 340 <field name="pds_texturestatesize" start="16" end="22" type="uint"> 341 <define name="UNIT_SIZE" value="4"/> 342 </field> 343 <field name="pds_varyingsize" start="10" end="15" type="uint"> 344 <define name="UNIT_SIZE" value="4"/> 345 </field> 346 <field name="usc_varyingsize" start="4" end="9" type="uint"> 347 <define name="UNIT_SIZE" value="16"/> 348 </field> 349 <field name="pds_tempsize" start="0" end="3" type="uint"> 350 <define name="UNIT_SIZE" value="4"/> 351 </field> 352 </struct> 353 354 <struct name="TE_AA" length="1"> 355 <condition type="if" check="SIMPLE_INTERNAL_PARAMETER_FORMAT && ISP_SAMPLES_PER_PIXEL > 2"/> 356 <field name="y2" start="3" end="3" type="bool"/> 357 <condition type="endif" check="SIMPLE_INTERNAL_PARAMETER_FORMAT && ISP_SAMPLES_PER_PIXEL > 2"/> 358 <field name="y" start="2" end="2" type="bool"/> 359 <field name="x" start="1" end="1" type="bool"/> 360 <field name="x2" start="0" end="0" type="bool"/> 361 </struct> 362 363 <struct name="TE_MTILE1" length="1"> 364 <field name="x1" start="18" end="26" type="uint"/> 365 <field name="x2" start="9" end="17" type="uint"/> 366 <field name="x3" start="0" end="8" type="uint"/> 367 </struct> 368 369 <struct name="TE_MTILE2" length="1"> 370 <field name="y1" start="18" end="26" type="uint"/> 371 <field name="y2" start="9" end="17" type="uint"/> 372 <field name="y3" start="0" end="8" type="uint"/> 373 </struct> 374 375 <struct name="TE_SCREEN" length="1"> 376 <field name="ymax" start="12" end="20" type="uint"/> 377 <field name="xmax" start="0" end="8" type="uint"/> 378 </struct> 379 380 <struct name="TE_PSG" length="1"> 381 <condition type="if" check="ROGUEXE"/> 382 <condition type="if" check="TILE_REGION_PROTECTION"/> 383 <field name="force_protect" start="22" end="22" type="uint"/> 384 <condition type="endif" check="TILE_REGION_PROTECTION"/> 385 <field name="cs_size" start="21" end="21" type="uint"/> 386 <field name="enable_pwr_gate_state" start="20" end="20" type="bool"/> 387 <condition type="endif" check="ROGUEXE"/> 388 <field name="enable_context_state_restore" start="19" end="19" type="bool"/> 389 <field name="zonlyrender" start="18" end="18" type="bool"/> 390 <field name="completeonterminate" start="17" end="17" type="bool"/> 391 <field name="cache_bypass" start="14" end="14" type="bool"/> 392 <field name="forcenewstate" start="13" end="13" type="bool"/> 393 <field name="region_stride" start="0" end="10" type="uint"> 394 <define name="UNIT_SIZE" value="4096"/> 395 </field> 396 </struct> 397 398 <!-- FIXME: This is only a partial definition as (at the time of writing) 399 csbgen doesn't support multiple address fields within structure. 400 --> 401 <!-- FIXME: When csbgen supports conditional structs, make this 402 conditional on NUM_TA > 0. 403 --> 404 <struct name="TE_PSGREGION_ADDR" length="2"> 405 <field name="base" start="6" end="33" shift="6" type="address"/> 406 </struct> 407 408 <!-- FIXME: This is only a partial definition as (at the time of writing) 409 csbgen doesn't support multiple address fields within structure. 410 --> 411 <struct name="TE_TPC_ADDR" length="2"> 412 <field name="base" start="6" end="33" shift="6" type="address"/> 413 </struct> 414 415 <struct name="PPP_MULTISAMPLECTL" length="2"> 416 <condition type="if" check="MAX_MULTISAMPLE == 8"/> 417 <field name="msaa_y7" start="60" end="63" type="uint"/> 418 <field name="msaa_x7" start="56" end="59" type="uint"/> 419 <field name="msaa_y6" start="52" end="55" type="uint"/> 420 <field name="msaa_x6" start="48" end="51" type="uint"/> 421 <field name="msaa_y5" start="44" end="47" type="uint"/> 422 <field name="msaa_x5" start="40" end="43" type="uint"/> 423 <field name="msaa_y4" start="36" end="39" type="uint"/> 424 <field name="msaa_x4" start="32" end="35" type="uint"/> 425 <condition type="endif" check="MAX_MULTISAMPLE == 8"/> 426 <field name="msaa_y3" start="28" end="31" type="uint"/> 427 <field name="msaa_x3" start="24" end="27" type="uint"/> 428 <field name="msaa_y2" start="20" end="23" type="uint"/> 429 <field name="msaa_x2" start="16" end="19" type="uint"/> 430 <field name="msaa_y1" start="12" end="15" type="uint"/> 431 <field name="msaa_x1" start="8" end="11" type="uint"/> 432 <field name="msaa_y0" start="4" end="7" type="uint"/> 433 <field name="msaa_x0" start="0" end="3" type="uint"/> 434 </struct> 435 436 <struct name="PPP_CTRL" length="1"> 437 <field name="vpt_scissor" start="12" end="12" type="bool"/> 438 <field name="flush_mode" start="11" end="11" type="uint"/> 439 <field name="bfcull_restrict_clip" start="10" end="10" type="bool"/> 440 <field name="fixed_point_format" start="9" end="9" type="uint"/> 441 <field name="default_point_size" start="8" end="8" type="bool"/> 442 <field name="bfcull1_disable" start="7" end="7" type="bool"/> 443 <field name="bfcull2_disable" start="6" end="6" type="bool"/> 444 <field name="fccull_disable" start="5" end="5" type="bool"/> 445 <field name="oscull_disable" start="4" end="4" type="bool"/> 446 <field name="socull_disable" start="2" end="2" type="bool"/> 447 <field name="wclampen" start="1" end="1" type="bool"/> 448 <field name="opengl" start="0" end="0" type="bool"/> 449 </struct> 450 451 <struct name="PPP_SCREEN" length="1"> 452 <field name="pixymax" start="16" end="30" type="uint"/> 453 <field name="pixxmax" start="0" end="14" type="uint"/> 454 </struct> 455 456 <!-- FIXME: This is only a partial definition as (at the time of writing) 457 csbgen doesn't support multiple address fields within structure. 458 --> 459 <struct name="TA_RTC_ADDR" length="2"> 460 <field name="base" start="6" end="33" shift="6" type="address"/> 461 </struct> 462 463 <struct name="TA_CONTEXT_STATE_BASE" length="2"> 464 <field name="addr" start="4" end="39" shift="4" type="address"/> 465 </struct> 466 467 <struct name="ISP_RENDER" length="1"> 468 <field name="disable_eomt" start="5" end="5" type="bool"/> 469 <field name="resume" start="4" end="4" type="bool"/> 470 <field name="dir_type" start="2" end="3" type="DIR_TYPE"/> 471 <field name="mode_type" start="0" end="1" type="ISP_RENDER_MODE_TYPE"/> 472 </struct> 473 474 <struct name="ISP_RENDER_ORIGIN" length="1"> 475 <field name="x" start="16" end="25" type="uint"/> 476 <field name="y" start="0" end="9" type="uint"/> 477 </struct> 478 479 <struct name="ISP_MTILE_BASE" length="2"> 480 <field name="addr" start="2" end="39" shift="2" type="address"/> 481 </struct> 482 483 <struct name="ISP_MTILE_SIZE" length="1"> 484 <field name="x" start="16" end="25" type="uint"/> 485 <field name="y" start="0" end="9" type="uint"/> 486 </struct> 487 488 <struct name="ISP_RGN" length="1"> 489 <field name="size" start="0" end="23" type="uint"> 490 <define name="UNIT_SIZE" value="4"/> 491 </field> 492 </struct> 493 494 <!-- FIXME: This is the SIMPLE_INTERNAL_PARAMETER_FORMAT variant. 495 Should we use the "condition" tag for this? 496 --> 497 <struct name="ISP_RGN_SIPF" length="1"> 498 <condition type="if" check="IPF_CREQ_PF"/> 499 <!-- FIXME: This should have a default value of 0x1F not setting it since 500 csbgen doesn't check if the feature is present or not so this will 501 be set even when the feature is not present. 502 --> 503 <field name="cs_size_ipf_creq_pf" start="24" end="28" type="uint"> 504 <define name="MAX" value="31"/> 505 </field> 506 <condition type="endif" check="IPF_CREQ_PF"/> 507 <field name="size" start="0" end="23" type="uint"> 508 <!-- Note that this differs from ISP_RGN. --> 509 <define name="UNIT_SIZE" value="1"/> 510 </field> 511 </struct> 512 513 <struct name="ISP_BGOBJDEPTH" length="1"> 514 <field name="value" start="0" end="31" type="uint"/> 515 </struct> 516 517 <struct name="ISP_BGOBJVALS" length="1"> 518 <field name="enablebgtag" start="9" end="9" type="bool"/> 519 <field name="mask" start="8" end="8" type="bool"/> 520 <field name="stencil" start="0" end="7" type="uint"/> 521 </struct> 522 523 <struct name="ISP_AA" length="1"> 524 <field name="mode" start="0" end="1" type="ISP_AA_MODE_TYPE" default="AA_NONE"/> 525 </struct> 526 527 <struct name="ISP_CTL" length="1"> 528 <field name="skip_init_hdrs" start="31" end="31" type="bool"/> 529 <field name="line_style" start="30" end="30" type="bool"/> 530 <field name="line_style_pix" start="29" end="29" type="bool"/> 531 <field name="pair_tiles_vert" start="28" end="28" type="bool"/> 532 <field name="pair_tiles" start="27" end="27" type="bool"/> 533 <field name="creq_buf_en" start="26" end="26" type="bool"/> 534 <field name="tile_age_en" start="25" end="25" type="bool"/> 535 <field name="isp_sample_pos_mode" start="23" end="24" type="MODE_TYPE"/> 536 <field name="num_tiles_per_usc" start="21" end="22" type="uint"/> 537 <field name="dbias_is_int" start="20" end="20" type="bool"/> 538 <field name="overlap_check_mode" start="19" end="19" type="bool"/> 539 <field name="pt_upfront_depth_disable" start="18" end="18" type="bool"/> 540 <field name="process_empty_tiles" start="17" end="17" type="bool"/> 541 <field name="sample_pos" start="16" end="16" type="bool"/> 542 <field name="pipe_enable" start="12" end="15" type="PIPE_NUM"/> 543 <field name="valid_id" start="4" end="9" type="uint"/> 544 <field name="upass_start" start="0" end="3" type="uint"> 545 <define name="SIZE_MAX" value="15"/> 546 </field> 547 </struct> 548 549 <struct name="ISP_ZLSCTL" length="2"> 550 <field name="zlsextent_y_s" start="48" end="57" type="uint"/> 551 <field name="zlsextent_x_s" start="38" end="47" type="uint"/> 552 <field name="stencil_extent_enable" start="37" end="37" type="bool"/> 553 <field name="zlsextent_y_z" start="27" end="36" type="uint"/> 554 <field name="zstoreformat" start="25" end="26" type="ZLS_FORMAT_TYPE"/> 555 <field name="zloadformat" start="23" end="24" type="ZLS_FORMAT_TYPE"/> 556 <field name="fb_storeen" start="22" end="22" type="bool"/> 557 <field name="fb_loaden" start="21" end="21" type="bool"/> 558 <field name="mstoreen" start="20" end="20" type="bool"/> 559 <field name="zstoreen" start="19" end="19" type="bool"/> 560 <field name="sstoreen" start="18" end="18" type="bool"/> 561 <field name="storetwiddled" start="17" end="17" type="bool"/> 562 <field name="mloaden" start="16" end="16" type="bool"/> 563 <field name="zloaden" start="15" end="15" type="bool"/> 564 <field name="sloaden" start="14" end="14" type="bool"/> 565 <field name="loadtwiddled" start="13" end="13" type="bool"/> 566 <field name="zlsextent_x_z" start="3" end="12" type="uint"/> 567 <field name="forcezstore" start="2" end="2" type="bool"/> 568 <field name="forcezload" start="1" end="1" type="bool"/> 569 <field name="zonlyrender" start="0" end="0" type="bool"/> 570 </struct> 571 572 <struct name="ISP_ZLOAD_BASE" length="2"> 573 <field name="addr" start="4" end="39" shift="4" type="address"/> 574 </struct> 575 576 <struct name="ISP_STENCIL_LOAD_BASE" length="2"> 577 <field name="addr" start="4" end="39" shift="4" type="address"/> 578 <field name="enable" start="0" end="0" type="bool"/> 579 </struct> 580 581 <struct name="ISP_SCISSOR_BASE" length="2"> 582 <field name="addr" start="2" end="39" shift="2" type="address"/> 583 </struct> 584 585 <struct name="ISP_DBIAS_BASE" length="2"> 586 <field name="addr" start="2" end="39" shift="2" type="address"/> 587 </struct> 588 589 <struct name="ISP_OCLQRY_BASE" length="2"> 590 <field name="addr" start="4" end="39" shift="4" type="address"/> 591 </struct> 592 593 <struct name="ISP_ZLS_PIXELS" length="1"> 594 <field name="y" start="15" end="29" type="uint"/> 595 <field name="x" start="0" end="14" type="uint"/> 596 </struct> 597 598 <struct name="PBE_WORD0_MRT0" length="2"> 599 <condition type="if" check="TFBC"/> 600 <field name="tfbc_lossy" start="62" end="63" type="TFBC_LOSSY"/> 601 <condition type="endif" check="TFBC"/> 602 <field name="x_rsrvd" start="63" end="63" type="bool"/> 603 <field name="pair_tiles" start="60" end="60" type="uint"/> 604 <field name="comp_iaddr_mode" start="60" end="60" type="COMP_IADDR_TYPE"/> 605 <field name="x_rsrvd2" start="59" end="59" type="bool"/> 606 <field name="comp_cor_enable" start="59" end="59" type="bool"/> 607 <field name="dither" start="58" end="58" type="bool"/> 608 <field name="tilerelative" start="57" end="57" type="bool"/> 609 <field name="downscale" start="56" end="56" type="bool"/> 610 <field name="size_z" start="52" end="55" type="SIZE"/> 611 <field name="rotation" start="50" end="51" type="ROTATION_TYPE"/> 612 <field name="linestride" start="34" end="49" type="uint"> 613 <define name="ALIGNMENT" value="2"/> 614 </field> 615 <field name="memlayout" start="32" end="33" type="MEMLAYOUT"/> 616 <field name="swiz_chan3" start="29" end="31" type="SWIZ"/> 617 <field name="swiz_chan2" start="26" end="28" type="SWIZ"/> 618 <field name="swiz_chan1" start="23" end="25" type="SWIZ"/> 619 <field name="swiz_chan0" start="20" end="22" type="SWIZ"/> 620 <field name="minclip_x" start="6" end="19" type="uint"/> 621 <field name="twocomp_gamma" start="5" end="5" type="TWOCOMP_GAMMA"/> 622 <field name="gamma" start="4" end="4" type="bool"/> 623 <field name="compression" start="3" end="3" type="bool"/> 624 <field name="compress_size" start="2" end="2" type="COMPRESS_SIZE"/> 625 <field name="comp_indirect_table" start="1" end="1" type="bool"/> 626 <condition type="if" check="PBE_YFLIP"/> 627 <field name="y_flip" start="0" end="0" type="bool"/> 628 <condition type="endif" check="PBE_YFLIP"/> 629 </struct> 630 631 <struct name="FRAG_SCREEN" length="1"> 632 <field name="ymax" start="16" end="30" type="uint"/> 633 <field name="xmax" start="0" end="14" type="uint"/> 634 </struct> 635 636 <struct name="TPU" length="1"> 637 <condition type="if" check="PDSL0SIZE > 0"/> 638 <field name="mcu_pds_l0_off" start="8" end="8" type="bool"/> 639 <condition type="endif" check="PDSL0SIZE > 0"/> 640 <condition type="if" check="TPU_CEM_DATAMASTER_GLOBAL_REGISTERS"/> 641 <field name="tag_cem_64_face_packing" start="7" end="7" type="bool"/> 642 <condition type="endif" check="TPU_CEM_DATAMASTER_GLOBAL_REGISTERS"/> 643 <field name="tag_enable_mmu_prefetch" start="6" end="6" type="bool"/> 644 <field name="tag_cem_4k_face_packing" start="5" end="5" type="bool"/> 645 <field name="madd_config_l0off" start="4" end="4" type="bool"/> 646 <field name="tag_cem_face_packing" start="3" end="3" type="bool"/> 647 <field name="tag_cemedge_dontfilter" start="2" end="2" type="bool"/> 648 <condition type="if" check="TPU_CEM_USG_NORMALISATION"/> 649 <field name="tag_cemgrad_dontnegate" start="1" end="1" type="bool"/> 650 <condition type="endif" check="TPU_CEM_USG_NORMALISATION"/> 651 <field name="madd_config_dxt35_transovr" start="0" end="0" type="bool"/> 652 </struct> 653 654 <struct name="TPU_BORDER_COLOUR_TABLE_PDM" length="2"> 655 <field name="border_colour_table_address" start="0" end="37" shift="2" type="address"/> 656 </struct> 657 658 <struct name="TPU_BORDER_COLOUR_TABLE_VDM" length="2"> 659 <field name="border_colour_table_address" start="0" end="37" shift="2" type="address"/> 660 </struct> 661 662 <struct name="TPU_BORDER_COLOUR_TABLE_CDM" length="2"> 663 <field name="border_colour_table_address" start="0" end="37" shift="2" type="address"/> 664 </struct> 665 666 <!-- FIXME: This register depends on TPU_DM_GLOBAL_REGISTERS. --> 667 <struct name="TPU_TAG_CDM_CTRL" length="1"> 668 <field name="af_ratio_truncate_to_integer" start="3" end="3" type="bool"/> 669 <field name="af_ratio_truncate_to_half" start="2" end="2" type="bool"/> 670 <field name="af_filtering_mode" start="1" end="1" type="bool"/> 671 <field name="yuv_cam_invalidate" start="0" end="0" type="bool"/> 672 </struct> 673 674 <struct name="USC_PIXEL_OUTPUT_CTRL" length="1"> 675 <field name="partition_mask" start="3" end="20" type="uint"/> 676 <field name="enable_4th_partition" start="2" end="2" type="bool"/> 677 <field name="width" start="0" end="1" type="PIXEL_WIDTH"/> 678 </struct> 679 680 <struct name="USC_CLEAR_REGISTER" length="1"> 681 <field name="val" start="0" end="31" type="uint"/> 682 </struct> 683 684 <!-- FIXME: When csbgen supports conditional structs, make this conditional 685 on FB_CDC. 686 --> 687 <struct name="FB_CDC_ZLS" length="2"> 688 <condition type="if" check="!ROGUEXE"/> 689 <field name="fbc_iaddr_mode" start="42" end="42" type="bool"/> 690 <field name="fbdc_iaddr_mode" start="41" end="41" type="bool"/> 691 <condition type="endif" check="!ROGUEXE"/> 692 <!-- FIXME: should be dependent on !ROGUEXE || (ROGUEXE && FB_CDC_V4) --> 693 <field name="fbdc_stencil_fmt" start="34" end="40" type="uint"/> 694 <!-- FIXME: should be dependent on !ROGUEXE || (ROGUEXE && FB_CDC_V4) --> 695 <field name="fbdc_depth_fmt" start="27" end="33" type="uint"/> 696 <field name="fbc_num_tiles" start="4" end="26" type="uint"/> 697 <field name="fbc_iaddr" start="1" end="1" type="bool"/> 698 <field name="fbdc_iaddr" start="0" end="0" type="bool"/> 699 </struct> 700 701</csbgen> 702