1921a55d8Smrg/* 2921a55d8Smrg * Evergeen Register documentation 3921a55d8Smrg * 4921a55d8Smrg * Copyright (C) 2010 Advanced Micro Devices, Inc. 5921a55d8Smrg * 6921a55d8Smrg * Permission is hereby granted, free of charge, to any person obtaining a 7921a55d8Smrg * copy of this software and associated documentation files (the "Software"), 8921a55d8Smrg * to deal in the Software without restriction, including without limitation 9921a55d8Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10921a55d8Smrg * and/or sell copies of the Software, and to permit persons to whom the 11921a55d8Smrg * Software is furnished to do so, subject to the following conditions: 12921a55d8Smrg * 13921a55d8Smrg * The above copyright notice and this permission notice shall be included 14921a55d8Smrg * in all copies or substantial portions of the Software. 15921a55d8Smrg * 16921a55d8Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17921a55d8Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18921a55d8Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19921a55d8Smrg * THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 20921a55d8Smrg * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21921a55d8Smrg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22921a55d8Smrg */ 23921a55d8Smrg 24921a55d8Smrg#ifndef _EVERGREEN_REG_H_ 25921a55d8Smrg#define _EVERGREEN_REG_H_ 26921a55d8Smrg 27921a55d8Smrg/* 28921a55d8Smrg * Register definitions 29921a55d8Smrg */ 30921a55d8Smrg 31921a55d8Smrg#include "evergreen_reg_auto.h" 32921a55d8Smrg 33921a55d8Smrgenum { 34921a55d8Smrg SHADER_TYPE_PS, 35921a55d8Smrg SHADER_TYPE_VS, 36921a55d8Smrg SHADER_TYPE_GS, 37921a55d8Smrg SHADER_TYPE_HS, 38921a55d8Smrg SHADER_TYPE_LS, 39921a55d8Smrg SHADER_TYPE_CS, 40921a55d8Smrg SHADER_TYPE_FS, 41921a55d8Smrg}; 42921a55d8Smrg 43921a55d8Smrg 44921a55d8Smrg/* SET_*_REG offsets + ends */ 4540732134Srjs#define SET_CONFIG_REG_offset 0x00008000 4640732134Srjs#define SET_CONFIG_REG_end 0x0000ac00 4740732134Srjs#define SET_CONTEXT_REG_offset 0x00028000 4840732134Srjs#define SET_CONTEXT_REG_end 0x00029000 4940732134Srjs#define SET_RESOURCE_offset 0x00030000 5040732134Srjs#define SET_RESOURCE_end 0x00038000 5140732134Srjs#define SET_SAMPLER_offset 0x0003c000 5240732134Srjs#define SET_SAMPLER_end 0x0003c600 5340732134Srjs#define SET_CTL_CONST_offset 0x0003cff0 5440732134Srjs#define SET_CTL_CONST_end 0x0003ff0c 5540732134Srjs#define SET_LOOP_CONST_offset 0x0003a200 5640732134Srjs#define SET_LOOP_CONST_end 0x0003a500 5740732134Srjs#define SET_BOOL_CONST_offset 0x0003a500 5840732134Srjs#define SET_BOOL_CONST_end 0x0003a518 5940732134Srjs 60921a55d8Smrg 61921a55d8Smrg/* Packet3 commands */ 62921a55d8Smrgenum { 63921a55d8Smrg IT_NOP = 0x10, 64921a55d8Smrg IT_INDIRECT_BUFFER_END = 0x17, 65921a55d8Smrg IT_SET_PREDICATION = 0x20, 66921a55d8Smrg IT_COND_EXEC = 0x22, 67921a55d8Smrg IT_PRED_EXEC = 0x23, 68921a55d8Smrg IT_DRAW_INDEX_2 = 0x27, 69921a55d8Smrg IT_CONTEXT_CONTROL = 0x28, 70921a55d8Smrg IT_DRAW_INDEX_OFFSET = 0x29, 71921a55d8Smrg IT_INDEX_TYPE = 0x2A, 72921a55d8Smrg IT_DRAW_INDEX = 0x2B, 73921a55d8Smrg IT_DRAW_INDEX_AUTO = 0x2D, 74921a55d8Smrg IT_DRAW_INDEX_IMMD = 0x2E, 75921a55d8Smrg IT_NUM_INSTANCES = 0x2F, 76921a55d8Smrg IT_INDIRECT_BUFFER = 0x32, 77921a55d8Smrg IT_STRMOUT_BUFFER_UPDATE = 0x34, 78921a55d8Smrg IT_MEM_SEMAPHORE = 0x39, 79921a55d8Smrg IT_MPEG_INDEX = 0x3A, 80921a55d8Smrg IT_WAIT_REG_MEM = 0x3C, 81921a55d8Smrg IT_MEM_WRITE = 0x3D, 82921a55d8Smrg IT_SURFACE_SYNC = 0x43, 83921a55d8Smrg IT_ME_INITIALIZE = 0x44, 84921a55d8Smrg IT_COND_WRITE = 0x45, 85921a55d8Smrg IT_EVENT_WRITE = 0x46, 86921a55d8Smrg IT_EVENT_WRITE_EOP = 0x47, 87921a55d8Smrg IT_EVENT_WRITE_EOS = 0x48, 88921a55d8Smrg IT_SET_CONFIG_REG = 0x68, 89921a55d8Smrg IT_SET_CONTEXT_REG = 0x69, 90921a55d8Smrg IT_SET_ALU_CONST = 0x6A, 91921a55d8Smrg IT_SET_BOOL_CONST = 0x6B, 92921a55d8Smrg IT_SET_LOOP_CONST = 0x6C, 93921a55d8Smrg IT_SET_RESOURCE = 0x6D, 94921a55d8Smrg IT_SET_SAMPLER = 0x6E, 95921a55d8Smrg IT_SET_CTL_CONST = 0x6F, 96921a55d8Smrg}; 97921a55d8Smrg 98921a55d8Smrg/* IT_WAIT_REG_MEM operation encoding */ 99921a55d8Smrg 100921a55d8Smrg#define IT_WAIT_ALWAYS (0 << 0) 101921a55d8Smrg#define IT_WAIT_LT (1 << 0) 102921a55d8Smrg#define IT_WAIT_LE (2 << 0) 103921a55d8Smrg#define IT_WAIT_EQ (3 << 0) 104921a55d8Smrg#define IT_WAIT_NE (4 << 0) 105921a55d8Smrg#define IT_WAIT_GE (5 << 0) 106921a55d8Smrg#define IT_WAIT_GT (6 << 0) 107921a55d8Smrg#define IT_WAIT_REG (0 << 4) 108921a55d8Smrg#define IT_WAIT_MEM (1 << 4) 109921a55d8Smrg 110921a55d8Smrg#define IT_WAIT_ADDR(x) ((x) >> 2) 111921a55d8Smrg 112b13dfe66Smrg/* IT_INDEX_TYPE */ 113b13dfe66Smrg#define IT_INDEX_TYPE_SWAP_MODE(x) ((x) << 2) 114b13dfe66Smrg 115921a55d8Smrgenum { 116921a55d8Smrg 117921a55d8Smrg SQ_LDS_ALLOC_PS = 0x288ec, 118921a55d8Smrg SQ_DYN_GPR_RESOURCE_LIMIT_1 = 0x28838, 119921a55d8Smrg SQ_DYN_GPR_CNTL_PS_FLUSH_REQ = 0x8d8c, 12040732134Srjs SQ_LDS_RESOURCE_MGMT = 0x8e2c, 121921a55d8Smrg 122921a55d8Smrg WAIT_UNTIL = 0x8040, 123921a55d8Smrg WAIT_CP_DMA_IDLE_bit = 1 << 8, 124921a55d8Smrg WAIT_CMDFIFO_bit = 1 << 10, 125921a55d8Smrg WAIT_3D_IDLE_bit = 1 << 15, 126921a55d8Smrg WAIT_3D_IDLECLEAN_bit = 1 << 17, 127921a55d8Smrg WAIT_EXTERN_SIG_bit = 1 << 19, 128921a55d8Smrg CMDFIFO_ENTRIES_mask = 0xf << 20, 129921a55d8Smrg CMDFIFO_ENTRIES_shift = 20, 130921a55d8Smrg 131921a55d8Smrg CP_COHER_CNTL = 0x85f0, 132921a55d8Smrg DEST_BASE_0_ENA_bit = 1 << 0, 133921a55d8Smrg DEST_BASE_1_ENA_bit = 1 << 1, 134921a55d8Smrg SO0_DEST_BASE_ENA_bit = 1 << 2, 135921a55d8Smrg SO1_DEST_BASE_ENA_bit = 1 << 3, 136921a55d8Smrg SO2_DEST_BASE_ENA_bit = 1 << 4, 137921a55d8Smrg SO3_DEST_BASE_ENA_bit = 1 << 5, 138921a55d8Smrg CB0_DEST_BASE_ENA_bit = 1 << 6, 139921a55d8Smrg CB1_DEST_BASE_ENA_bit = 1 << 7, 140921a55d8Smrg CB2_DEST_BASE_ENA_bit = 1 << 8, 141921a55d8Smrg CB3_DEST_BASE_ENA_bit = 1 << 9, 142921a55d8Smrg CB4_DEST_BASE_ENA_bit = 1 << 10, 143921a55d8Smrg CB5_DEST_BASE_ENA_bit = 1 << 11, 144921a55d8Smrg CB6_DEST_BASE_ENA_bit = 1 << 12, 145921a55d8Smrg CB7_DEST_BASE_ENA_bit = 1 << 13, 146921a55d8Smrg DB_DEST_BASE_ENA_bit = 1 << 14, 147921a55d8Smrg CB8_DEST_BASE_ENA_bit = 1 << 15, 148921a55d8Smrg CB9_DEST_BASE_ENA_bit = 1 << 16, 149921a55d8Smrg CB10_DEST_BASE_ENA_bit = 1 << 17, 150921a55d8Smrg CB11_DEST_BASE_ENA_bit = 1 << 18, 151921a55d8Smrg FULL_CACHE_ENA_bit = 1 << 20, 152921a55d8Smrg TC_ACTION_ENA_bit = 1 << 23, 153921a55d8Smrg VC_ACTION_ENA_bit = 1 << 24, 154921a55d8Smrg CB_ACTION_ENA_bit = 1 << 25, 155921a55d8Smrg DB_ACTION_ENA_bit = 1 << 26, 156921a55d8Smrg SH_ACTION_ENA_bit = 1 << 27, 157921a55d8Smrg SX_ACTION_ENA_bit = 1 << 28, 158921a55d8Smrg CP_COHER_SIZE = 0x85f4, 159921a55d8Smrg CP_COHER_BASE = 0x85f8, 160921a55d8Smrg CP_COHER_STATUS = 0x85fc, 161921a55d8Smrg MATCHING_GFX_CNTX_mask = 0xff << 0, 162921a55d8Smrg MATCHING_GFX_CNTX_shift = 0, 163921a55d8Smrg STATUS_bit = 1 << 31, 164921a55d8Smrg 165921a55d8Smrg// SQ_VTX_CONSTANT_WORD2_0 = 0x00030008, 166921a55d8Smrg// SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_mask = 0x3f << 20, 167921a55d8Smrg FMT_INVALID=0, FMT_8, FMT_4_4, FMT_3_3_2, 168921a55d8Smrg FMT_16=5, FMT_16_FLOAT, FMT_8_8, 169921a55d8Smrg FMT_5_6_5, FMT_6_5_5, FMT_1_5_5_5, FMT_4_4_4_4, 170921a55d8Smrg FMT_5_5_5_1, FMT_32, FMT_32_FLOAT, FMT_16_16, 171921a55d8Smrg FMT_16_16_FLOAT=16, FMT_8_24, FMT_8_24_FLOAT, FMT_24_8, 172921a55d8Smrg FMT_24_8_FLOAT, FMT_10_11_11, FMT_10_11_11_FLOAT, FMT_11_11_10, 173921a55d8Smrg FMT_11_11_10_FLOAT, FMT_2_10_10_10, FMT_8_8_8_8, FMT_10_10_10_2, 174921a55d8Smrg FMT_X24_8_32_FLOAT, FMT_32_32, FMT_32_32_FLOAT, FMT_16_16_16_16, 175921a55d8Smrg FMT_16_16_16_16_FLOAT=32, FMT_32_32_32_32=34, FMT_32_32_32_32_FLOAT, 176921a55d8Smrg FMT_1 = 37, FMT_GB_GR=39, 177921a55d8Smrg FMT_BG_RG, FMT_32_AS_8, FMT_32_AS_8_8, FMT_5_9_9_9_SHAREDEXP, 178921a55d8Smrg FMT_8_8_8, FMT_16_16_16, FMT_16_16_16_FLOAT, FMT_32_32_32, 179921a55d8Smrg FMT_32_32_32_FLOAT=48, 180921a55d8Smrg 181921a55d8Smrg// High level register file lengths 182921a55d8Smrg SQ_FETCH_RESOURCE = SQ_TEX_RESOURCE_WORD0_0, 183921a55d8Smrg SQ_FETCH_RESOURCE_ps_num = 176, 184921a55d8Smrg SQ_FETCH_RESOURCE_vs_num = 160, 185921a55d8Smrg SQ_FETCH_RESOURCE_gs_num = 160, 186921a55d8Smrg SQ_FETCH_RESOURCE_hs_num = 160, 187921a55d8Smrg SQ_FETCH_RESOURCE_ls_num = 160, 188921a55d8Smrg SQ_FETCH_RESOURCE_cs_num = 176, 189921a55d8Smrg SQ_FETCH_RESOURCE_fs_num = 32, 190921a55d8Smrg SQ_FETCH_RESOURCE_all_num = 1024, 191921a55d8Smrg SQ_FETCH_RESOURCE_offset = 32, 192921a55d8Smrg SQ_FETCH_RESOURCE_ps = 0, // 0...175 193921a55d8Smrg SQ_FETCH_RESOURCE_vs = SQ_FETCH_RESOURCE_ps + SQ_FETCH_RESOURCE_ps_num, // 176...335 194921a55d8Smrg SQ_FETCH_RESOURCE_gs = SQ_FETCH_RESOURCE_vs + SQ_FETCH_RESOURCE_vs_num, // 336...495 195921a55d8Smrg SQ_FETCH_RESOURCE_hs = SQ_FETCH_RESOURCE_gs + SQ_FETCH_RESOURCE_gs_num, // 496...655 196921a55d8Smrg SQ_FETCH_RESOURCE_ls = SQ_FETCH_RESOURCE_hs + SQ_FETCH_RESOURCE_hs_num, // 656...815 197921a55d8Smrg SQ_FETCH_RESOURCE_cs = SQ_FETCH_RESOURCE_ls + SQ_FETCH_RESOURCE_ls_num, // 816...991 198921a55d8Smrg SQ_FETCH_RESOURCE_fs = SQ_FETCH_RESOURCE_cs + SQ_FETCH_RESOURCE_cs_num, // 992...1023 199921a55d8Smrg 200921a55d8Smrg SQ_TEX_SAMPLER_WORD = SQ_TEX_SAMPLER_WORD0_0, 201921a55d8Smrg SQ_TEX_SAMPLER_WORD_ps_num = 18, 202921a55d8Smrg SQ_TEX_SAMPLER_WORD_vs_num = 18, 203921a55d8Smrg SQ_TEX_SAMPLER_WORD_gs_num = 18, 204921a55d8Smrg SQ_TEX_SAMPLER_WORD_hs_num = 18, 205921a55d8Smrg SQ_TEX_SAMPLER_WORD_ls_num = 18, 206921a55d8Smrg SQ_TEX_SAMPLER_WORD_cs_num = 18, 207921a55d8Smrg SQ_TEX_SAMPLER_WORD_all_num = 108, 208921a55d8Smrg SQ_TEX_SAMPLER_WORD_offset = 12, 209921a55d8Smrg SQ_TEX_SAMPLER_WORD_ps = 0, // 0...17 210921a55d8Smrg SQ_TEX_SAMPLER_WORD_vs = SQ_TEX_SAMPLER_WORD_ps + SQ_TEX_SAMPLER_WORD_ps_num, // 18...35 211921a55d8Smrg SQ_TEX_SAMPLER_WORD_gs = SQ_TEX_SAMPLER_WORD_vs + SQ_TEX_SAMPLER_WORD_vs_num, // 36...53 212921a55d8Smrg SQ_TEX_SAMPLER_WORD_hs = SQ_TEX_SAMPLER_WORD_gs + SQ_TEX_SAMPLER_WORD_gs_num, // 54...71 213921a55d8Smrg SQ_TEX_SAMPLER_WORD_ls = SQ_TEX_SAMPLER_WORD_hs + SQ_TEX_SAMPLER_WORD_hs_num, // 72...89 214921a55d8Smrg SQ_TEX_SAMPLER_WORD_cs = SQ_TEX_SAMPLER_WORD_ls + SQ_TEX_SAMPLER_WORD_ls_num, // 90...107 215921a55d8Smrg 216921a55d8Smrg SQ_LOOP_CONST = SQ_LOOP_CONST_0, 217921a55d8Smrg SQ_LOOP_CONST_ps_num = 32, 218921a55d8Smrg SQ_LOOP_CONST_vs_num = 32, 219921a55d8Smrg SQ_LOOP_CONST_gs_num = 32, 220921a55d8Smrg SQ_LOOP_CONST_hs_num = 32, 221921a55d8Smrg SQ_LOOP_CONST_ls_num = 32, 222921a55d8Smrg SQ_LOOP_CONST_cs_num = 32, 223921a55d8Smrg SQ_LOOP_CONST_all_num = 192, 224921a55d8Smrg SQ_LOOP_CONST_offset = 4, 225921a55d8Smrg SQ_LOOP_CONST_ps = 0, // 0...31 226921a55d8Smrg SQ_LOOP_CONST_vs = SQ_LOOP_CONST_ps + SQ_LOOP_CONST_ps_num, // 32...63 227921a55d8Smrg SQ_LOOP_CONST_gs = SQ_LOOP_CONST_vs + SQ_LOOP_CONST_vs_num, // 64...95 228921a55d8Smrg SQ_LOOP_CONST_hs = SQ_LOOP_CONST_gs + SQ_LOOP_CONST_gs_num, // 96...127 229921a55d8Smrg SQ_LOOP_CONST_ls = SQ_LOOP_CONST_hs + SQ_LOOP_CONST_hs_num, // 128...159 230921a55d8Smrg SQ_LOOP_CONST_cs = SQ_LOOP_CONST_ls + SQ_LOOP_CONST_ls_num, // 160...191 231921a55d8Smrg 232921a55d8Smrg SQ_BOOL_CONST = SQ_BOOL_CONST_0, /* 32 bits each */ 233921a55d8Smrg SQ_BOOL_CONST_ps_num = 1, 234921a55d8Smrg SQ_BOOL_CONST_vs_num = 1, 235921a55d8Smrg SQ_BOOL_CONST_gs_num = 1, 236921a55d8Smrg SQ_BOOL_CONST_hs_num = 1, 237921a55d8Smrg SQ_BOOL_CONST_ls_num = 1, 238921a55d8Smrg SQ_BOOL_CONST_cs_num = 1, 239921a55d8Smrg SQ_BOOL_CONST_all_num = 6, 240921a55d8Smrg SQ_BOOL_CONST_offset = 4, 241921a55d8Smrg SQ_BOOL_CONST_ps = 0, 242921a55d8Smrg SQ_BOOL_CONST_vs = SQ_BOOL_CONST_ps + SQ_BOOL_CONST_ps_num, 243921a55d8Smrg SQ_BOOL_CONST_gs = SQ_BOOL_CONST_vs + SQ_BOOL_CONST_vs_num, 244921a55d8Smrg SQ_BOOL_CONST_hs = SQ_BOOL_CONST_gs + SQ_BOOL_CONST_gs_num, 245921a55d8Smrg SQ_BOOL_CONST_ls = SQ_BOOL_CONST_hs + SQ_BOOL_CONST_hs_num, 246921a55d8Smrg SQ_BOOL_CONST_cs = SQ_BOOL_CONST_ls + SQ_BOOL_CONST_ls_num, 247921a55d8Smrg 248921a55d8Smrg}; 249921a55d8Smrg 250921a55d8Smrg#endif 251