1de2362d3Smrg/* 2de2362d3Smrg * Evergeen Register documentation 3de2362d3Smrg * 4de2362d3Smrg * Copyright (C) 2010 Advanced Micro Devices, Inc. 5de2362d3Smrg * 6de2362d3Smrg * Permission is hereby granted, free of charge, to any person obtaining a 7de2362d3Smrg * copy of this software and associated documentation files (the "Software"), 8de2362d3Smrg * to deal in the Software without restriction, including without limitation 9de2362d3Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10de2362d3Smrg * and/or sell copies of the Software, and to permit persons to whom the 11de2362d3Smrg * Software is furnished to do so, subject to the following conditions: 12de2362d3Smrg * 13de2362d3Smrg * The above copyright notice and this permission notice shall be included 14de2362d3Smrg * in all copies or substantial portions of the Software. 15de2362d3Smrg * 16de2362d3Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17de2362d3Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18de2362d3Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19de2362d3Smrg * THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 20de2362d3Smrg * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21de2362d3Smrg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22de2362d3Smrg */ 23de2362d3Smrg 24de2362d3Smrg#ifndef _EVERGREEN_REG_H_ 25de2362d3Smrg#define _EVERGREEN_REG_H_ 26de2362d3Smrg 27de2362d3Smrg/* 28de2362d3Smrg * Register definitions 29de2362d3Smrg */ 30de2362d3Smrg 31de2362d3Smrg#include "evergreen_reg_auto.h" 32de2362d3Smrg 33de2362d3Smrgenum { 34de2362d3Smrg SHADER_TYPE_PS, 35de2362d3Smrg SHADER_TYPE_VS, 36de2362d3Smrg SHADER_TYPE_GS, 37de2362d3Smrg SHADER_TYPE_HS, 38de2362d3Smrg SHADER_TYPE_LS, 39de2362d3Smrg SHADER_TYPE_CS, 40de2362d3Smrg SHADER_TYPE_FS, 41de2362d3Smrg}; 42de2362d3Smrg 43de2362d3Smrg 44de2362d3Smrg/* SET_*_REG offsets + ends */ 45de2362d3Smrg#define SET_CONFIG_REG_offset 0x00008000 46de2362d3Smrg#define SET_CONFIG_REG_end 0x0000ac00 47de2362d3Smrg#define SET_CONTEXT_REG_offset 0x00028000 48de2362d3Smrg#define SET_CONTEXT_REG_end 0x00029000 49de2362d3Smrg#define SET_RESOURCE_offset 0x00030000 50de2362d3Smrg#define SET_RESOURCE_end 0x00038000 51de2362d3Smrg#define SET_SAMPLER_offset 0x0003c000 52de2362d3Smrg#define SET_SAMPLER_end 0x0003c600 53de2362d3Smrg#define SET_CTL_CONST_offset 0x0003cff0 54de2362d3Smrg#define SET_CTL_CONST_end 0x0003ff0c 55de2362d3Smrg#define SET_LOOP_CONST_offset 0x0003a200 56de2362d3Smrg#define SET_LOOP_CONST_end 0x0003a500 57de2362d3Smrg#define SET_BOOL_CONST_offset 0x0003a500 58de2362d3Smrg#define SET_BOOL_CONST_end 0x0003a518 59de2362d3Smrg 60de2362d3Smrg 61de2362d3Smrg/* Packet3 commands */ 62de2362d3Smrgenum { 63de2362d3Smrg IT_NOP = 0x10, 64de2362d3Smrg IT_INDIRECT_BUFFER_END = 0x17, 65de2362d3Smrg IT_SET_PREDICATION = 0x20, 66de2362d3Smrg IT_COND_EXEC = 0x22, 67de2362d3Smrg IT_PRED_EXEC = 0x23, 68de2362d3Smrg IT_DRAW_INDEX_2 = 0x27, 69de2362d3Smrg IT_CONTEXT_CONTROL = 0x28, 70de2362d3Smrg IT_DRAW_INDEX_OFFSET = 0x29, 71de2362d3Smrg IT_INDEX_TYPE = 0x2A, 72de2362d3Smrg IT_DRAW_INDEX = 0x2B, 73de2362d3Smrg IT_DRAW_INDEX_AUTO = 0x2D, 74de2362d3Smrg IT_DRAW_INDEX_IMMD = 0x2E, 75de2362d3Smrg IT_NUM_INSTANCES = 0x2F, 76de2362d3Smrg IT_INDIRECT_BUFFER = 0x32, 77de2362d3Smrg IT_STRMOUT_BUFFER_UPDATE = 0x34, 78de2362d3Smrg IT_MEM_SEMAPHORE = 0x39, 79de2362d3Smrg IT_MPEG_INDEX = 0x3A, 80de2362d3Smrg IT_WAIT_REG_MEM = 0x3C, 81de2362d3Smrg IT_MEM_WRITE = 0x3D, 82de2362d3Smrg IT_SURFACE_SYNC = 0x43, 83de2362d3Smrg IT_ME_INITIALIZE = 0x44, 84de2362d3Smrg IT_COND_WRITE = 0x45, 85de2362d3Smrg IT_EVENT_WRITE = 0x46, 86de2362d3Smrg IT_EVENT_WRITE_EOP = 0x47, 87de2362d3Smrg IT_EVENT_WRITE_EOS = 0x48, 88de2362d3Smrg IT_SET_CONFIG_REG = 0x68, 89de2362d3Smrg IT_SET_CONTEXT_REG = 0x69, 90de2362d3Smrg IT_SET_ALU_CONST = 0x6A, 91de2362d3Smrg IT_SET_BOOL_CONST = 0x6B, 92de2362d3Smrg IT_SET_LOOP_CONST = 0x6C, 93de2362d3Smrg IT_SET_RESOURCE = 0x6D, 94de2362d3Smrg IT_SET_SAMPLER = 0x6E, 95de2362d3Smrg IT_SET_CTL_CONST = 0x6F, 96de2362d3Smrg}; 97de2362d3Smrg 98de2362d3Smrg/* IT_WAIT_REG_MEM operation encoding */ 99de2362d3Smrg 100de2362d3Smrg#define IT_WAIT_ALWAYS (0 << 0) 101de2362d3Smrg#define IT_WAIT_LT (1 << 0) 102de2362d3Smrg#define IT_WAIT_LE (2 << 0) 103de2362d3Smrg#define IT_WAIT_EQ (3 << 0) 104de2362d3Smrg#define IT_WAIT_NE (4 << 0) 105de2362d3Smrg#define IT_WAIT_GE (5 << 0) 106de2362d3Smrg#define IT_WAIT_GT (6 << 0) 107de2362d3Smrg#define IT_WAIT_REG (0 << 4) 108de2362d3Smrg#define IT_WAIT_MEM (1 << 4) 109de2362d3Smrg 110de2362d3Smrg#define IT_WAIT_ADDR(x) ((x) >> 2) 111de2362d3Smrg 112de2362d3Smrg/* IT_INDEX_TYPE */ 113de2362d3Smrg#define IT_INDEX_TYPE_SWAP_MODE(x) ((x) << 2) 114de2362d3Smrg 115de2362d3Smrgenum { 116de2362d3Smrg 117de2362d3Smrg SQ_LDS_ALLOC_PS = 0x288ec, 118de2362d3Smrg SQ_DYN_GPR_RESOURCE_LIMIT_1 = 0x28838, 119de2362d3Smrg SQ_DYN_GPR_CNTL_PS_FLUSH_REQ = 0x8d8c, 120de2362d3Smrg SQ_LDS_RESOURCE_MGMT = 0x8e2c, 121de2362d3Smrg 122de2362d3Smrg WAIT_UNTIL = 0x8040, 123de2362d3Smrg WAIT_CP_DMA_IDLE_bit = 1 << 8, 124de2362d3Smrg WAIT_CMDFIFO_bit = 1 << 10, 125de2362d3Smrg WAIT_3D_IDLE_bit = 1 << 15, 126de2362d3Smrg WAIT_3D_IDLECLEAN_bit = 1 << 17, 127de2362d3Smrg WAIT_EXTERN_SIG_bit = 1 << 19, 128de2362d3Smrg CMDFIFO_ENTRIES_mask = 0xf << 20, 129de2362d3Smrg CMDFIFO_ENTRIES_shift = 20, 130de2362d3Smrg 131de2362d3Smrg CP_COHER_CNTL = 0x85f0, 132de2362d3Smrg DEST_BASE_0_ENA_bit = 1 << 0, 133de2362d3Smrg DEST_BASE_1_ENA_bit = 1 << 1, 134de2362d3Smrg SO0_DEST_BASE_ENA_bit = 1 << 2, 135de2362d3Smrg SO1_DEST_BASE_ENA_bit = 1 << 3, 136de2362d3Smrg SO2_DEST_BASE_ENA_bit = 1 << 4, 137de2362d3Smrg SO3_DEST_BASE_ENA_bit = 1 << 5, 138de2362d3Smrg CB0_DEST_BASE_ENA_bit = 1 << 6, 139de2362d3Smrg CB1_DEST_BASE_ENA_bit = 1 << 7, 140de2362d3Smrg CB2_DEST_BASE_ENA_bit = 1 << 8, 141de2362d3Smrg CB3_DEST_BASE_ENA_bit = 1 << 9, 142de2362d3Smrg CB4_DEST_BASE_ENA_bit = 1 << 10, 143de2362d3Smrg CB5_DEST_BASE_ENA_bit = 1 << 11, 144de2362d3Smrg CB6_DEST_BASE_ENA_bit = 1 << 12, 145de2362d3Smrg CB7_DEST_BASE_ENA_bit = 1 << 13, 146de2362d3Smrg DB_DEST_BASE_ENA_bit = 1 << 14, 147de2362d3Smrg CB8_DEST_BASE_ENA_bit = 1 << 15, 148de2362d3Smrg CB9_DEST_BASE_ENA_bit = 1 << 16, 149de2362d3Smrg CB10_DEST_BASE_ENA_bit = 1 << 17, 150de2362d3Smrg CB11_DEST_BASE_ENA_bit = 1 << 18, 151de2362d3Smrg FULL_CACHE_ENA_bit = 1 << 20, 152de2362d3Smrg TC_ACTION_ENA_bit = 1 << 23, 153de2362d3Smrg VC_ACTION_ENA_bit = 1 << 24, 154de2362d3Smrg CB_ACTION_ENA_bit = 1 << 25, 155de2362d3Smrg DB_ACTION_ENA_bit = 1 << 26, 156de2362d3Smrg SH_ACTION_ENA_bit = 1 << 27, 157de2362d3Smrg SX_ACTION_ENA_bit = 1 << 28, 158de2362d3Smrg CP_COHER_SIZE = 0x85f4, 159de2362d3Smrg CP_COHER_BASE = 0x85f8, 160de2362d3Smrg CP_COHER_STATUS = 0x85fc, 161de2362d3Smrg MATCHING_GFX_CNTX_mask = 0xff << 0, 162de2362d3Smrg MATCHING_GFX_CNTX_shift = 0, 163de2362d3Smrg STATUS_bit = 1 << 31, 164de2362d3Smrg 165de2362d3Smrg// SQ_VTX_CONSTANT_WORD2_0 = 0x00030008, 166de2362d3Smrg// SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_mask = 0x3f << 20, 167de2362d3Smrg FMT_INVALID=0, FMT_8, FMT_4_4, FMT_3_3_2, 168de2362d3Smrg FMT_16=5, FMT_16_FLOAT, FMT_8_8, 169de2362d3Smrg FMT_5_6_5, FMT_6_5_5, FMT_1_5_5_5, FMT_4_4_4_4, 170de2362d3Smrg FMT_5_5_5_1, FMT_32, FMT_32_FLOAT, FMT_16_16, 171de2362d3Smrg FMT_16_16_FLOAT=16, FMT_8_24, FMT_8_24_FLOAT, FMT_24_8, 172de2362d3Smrg FMT_24_8_FLOAT, FMT_10_11_11, FMT_10_11_11_FLOAT, FMT_11_11_10, 173de2362d3Smrg FMT_11_11_10_FLOAT, FMT_2_10_10_10, FMT_8_8_8_8, FMT_10_10_10_2, 174de2362d3Smrg FMT_X24_8_32_FLOAT, FMT_32_32, FMT_32_32_FLOAT, FMT_16_16_16_16, 175de2362d3Smrg FMT_16_16_16_16_FLOAT=32, FMT_32_32_32_32=34, FMT_32_32_32_32_FLOAT, 176de2362d3Smrg FMT_1 = 37, FMT_GB_GR=39, 177de2362d3Smrg FMT_BG_RG, FMT_32_AS_8, FMT_32_AS_8_8, FMT_5_9_9_9_SHAREDEXP, 178de2362d3Smrg FMT_8_8_8, FMT_16_16_16, FMT_16_16_16_FLOAT, FMT_32_32_32, 179de2362d3Smrg FMT_32_32_32_FLOAT=48, 180de2362d3Smrg 181de2362d3Smrg// High level register file lengths 182de2362d3Smrg SQ_FETCH_RESOURCE = SQ_TEX_RESOURCE_WORD0_0, 183de2362d3Smrg SQ_FETCH_RESOURCE_ps_num = 176, 184de2362d3Smrg SQ_FETCH_RESOURCE_vs_num = 160, 185de2362d3Smrg SQ_FETCH_RESOURCE_gs_num = 160, 186de2362d3Smrg SQ_FETCH_RESOURCE_hs_num = 160, 187de2362d3Smrg SQ_FETCH_RESOURCE_ls_num = 160, 188de2362d3Smrg SQ_FETCH_RESOURCE_cs_num = 176, 189de2362d3Smrg SQ_FETCH_RESOURCE_fs_num = 32, 190de2362d3Smrg SQ_FETCH_RESOURCE_all_num = 1024, 191de2362d3Smrg SQ_FETCH_RESOURCE_offset = 32, 192de2362d3Smrg SQ_FETCH_RESOURCE_ps = 0, // 0...175 193de2362d3Smrg SQ_FETCH_RESOURCE_vs = SQ_FETCH_RESOURCE_ps + SQ_FETCH_RESOURCE_ps_num, // 176...335 194de2362d3Smrg SQ_FETCH_RESOURCE_gs = SQ_FETCH_RESOURCE_vs + SQ_FETCH_RESOURCE_vs_num, // 336...495 195de2362d3Smrg SQ_FETCH_RESOURCE_hs = SQ_FETCH_RESOURCE_gs + SQ_FETCH_RESOURCE_gs_num, // 496...655 196de2362d3Smrg SQ_FETCH_RESOURCE_ls = SQ_FETCH_RESOURCE_hs + SQ_FETCH_RESOURCE_hs_num, // 656...815 197de2362d3Smrg SQ_FETCH_RESOURCE_cs = SQ_FETCH_RESOURCE_ls + SQ_FETCH_RESOURCE_ls_num, // 816...991 198de2362d3Smrg SQ_FETCH_RESOURCE_fs = SQ_FETCH_RESOURCE_cs + SQ_FETCH_RESOURCE_cs_num, // 992...1023 199de2362d3Smrg 200de2362d3Smrg SQ_TEX_SAMPLER_WORD = SQ_TEX_SAMPLER_WORD0_0, 201de2362d3Smrg SQ_TEX_SAMPLER_WORD_ps_num = 18, 202de2362d3Smrg SQ_TEX_SAMPLER_WORD_vs_num = 18, 203de2362d3Smrg SQ_TEX_SAMPLER_WORD_gs_num = 18, 204de2362d3Smrg SQ_TEX_SAMPLER_WORD_hs_num = 18, 205de2362d3Smrg SQ_TEX_SAMPLER_WORD_ls_num = 18, 206de2362d3Smrg SQ_TEX_SAMPLER_WORD_cs_num = 18, 207de2362d3Smrg SQ_TEX_SAMPLER_WORD_all_num = 108, 208de2362d3Smrg SQ_TEX_SAMPLER_WORD_offset = 12, 209de2362d3Smrg SQ_TEX_SAMPLER_WORD_ps = 0, // 0...17 210de2362d3Smrg SQ_TEX_SAMPLER_WORD_vs = SQ_TEX_SAMPLER_WORD_ps + SQ_TEX_SAMPLER_WORD_ps_num, // 18...35 211de2362d3Smrg SQ_TEX_SAMPLER_WORD_gs = SQ_TEX_SAMPLER_WORD_vs + SQ_TEX_SAMPLER_WORD_vs_num, // 36...53 212de2362d3Smrg SQ_TEX_SAMPLER_WORD_hs = SQ_TEX_SAMPLER_WORD_gs + SQ_TEX_SAMPLER_WORD_gs_num, // 54...71 213de2362d3Smrg SQ_TEX_SAMPLER_WORD_ls = SQ_TEX_SAMPLER_WORD_hs + SQ_TEX_SAMPLER_WORD_hs_num, // 72...89 214de2362d3Smrg SQ_TEX_SAMPLER_WORD_cs = SQ_TEX_SAMPLER_WORD_ls + SQ_TEX_SAMPLER_WORD_ls_num, // 90...107 215de2362d3Smrg 216de2362d3Smrg SQ_LOOP_CONST = SQ_LOOP_CONST_0, 217de2362d3Smrg SQ_LOOP_CONST_ps_num = 32, 218de2362d3Smrg SQ_LOOP_CONST_vs_num = 32, 219de2362d3Smrg SQ_LOOP_CONST_gs_num = 32, 220de2362d3Smrg SQ_LOOP_CONST_hs_num = 32, 221de2362d3Smrg SQ_LOOP_CONST_ls_num = 32, 222de2362d3Smrg SQ_LOOP_CONST_cs_num = 32, 223de2362d3Smrg SQ_LOOP_CONST_all_num = 192, 224de2362d3Smrg SQ_LOOP_CONST_offset = 4, 225de2362d3Smrg SQ_LOOP_CONST_ps = 0, // 0...31 226de2362d3Smrg SQ_LOOP_CONST_vs = SQ_LOOP_CONST_ps + SQ_LOOP_CONST_ps_num, // 32...63 227de2362d3Smrg SQ_LOOP_CONST_gs = SQ_LOOP_CONST_vs + SQ_LOOP_CONST_vs_num, // 64...95 228de2362d3Smrg SQ_LOOP_CONST_hs = SQ_LOOP_CONST_gs + SQ_LOOP_CONST_gs_num, // 96...127 229de2362d3Smrg SQ_LOOP_CONST_ls = SQ_LOOP_CONST_hs + SQ_LOOP_CONST_hs_num, // 128...159 230de2362d3Smrg SQ_LOOP_CONST_cs = SQ_LOOP_CONST_ls + SQ_LOOP_CONST_ls_num, // 160...191 231de2362d3Smrg 232de2362d3Smrg SQ_BOOL_CONST = SQ_BOOL_CONST_0, /* 32 bits each */ 233de2362d3Smrg SQ_BOOL_CONST_ps_num = 1, 234de2362d3Smrg SQ_BOOL_CONST_vs_num = 1, 235de2362d3Smrg SQ_BOOL_CONST_gs_num = 1, 236de2362d3Smrg SQ_BOOL_CONST_hs_num = 1, 237de2362d3Smrg SQ_BOOL_CONST_ls_num = 1, 238de2362d3Smrg SQ_BOOL_CONST_cs_num = 1, 239de2362d3Smrg SQ_BOOL_CONST_all_num = 6, 240de2362d3Smrg SQ_BOOL_CONST_offset = 4, 241de2362d3Smrg SQ_BOOL_CONST_ps = 0, 242de2362d3Smrg SQ_BOOL_CONST_vs = SQ_BOOL_CONST_ps + SQ_BOOL_CONST_ps_num, 243de2362d3Smrg SQ_BOOL_CONST_gs = SQ_BOOL_CONST_vs + SQ_BOOL_CONST_vs_num, 244de2362d3Smrg SQ_BOOL_CONST_hs = SQ_BOOL_CONST_gs + SQ_BOOL_CONST_gs_num, 245de2362d3Smrg SQ_BOOL_CONST_ls = SQ_BOOL_CONST_hs + SQ_BOOL_CONST_hs_num, 246de2362d3Smrg SQ_BOOL_CONST_cs = SQ_BOOL_CONST_ls + SQ_BOOL_CONST_ls_num, 247de2362d3Smrg 248de2362d3Smrg}; 249de2362d3Smrg 250de2362d3Smrg#endif 251