1bf215546Sopenharmony_ci/* 2bf215546Sopenharmony_ci * Copyright © 2020 Advanced Micro Devices, Inc. 3bf215546Sopenharmony_ci * 4bf215546Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining 5bf215546Sopenharmony_ci * a copy of this software and associated documentation files (the 6bf215546Sopenharmony_ci * "Software"), to deal in the Software without restriction, including 7bf215546Sopenharmony_ci * without limitation the rights to use, copy, modify, merge, publish, 8bf215546Sopenharmony_ci * distribute, sub license, and/or sell copies of the Software, and to 9bf215546Sopenharmony_ci * permit persons to whom the Software is furnished to do so, subject to 10bf215546Sopenharmony_ci * the following conditions: 11bf215546Sopenharmony_ci * 12bf215546Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 13bf215546Sopenharmony_ci * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 14bf215546Sopenharmony_ci * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 15bf215546Sopenharmony_ci * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS 16bf215546Sopenharmony_ci * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17bf215546Sopenharmony_ci * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 18bf215546Sopenharmony_ci * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 19bf215546Sopenharmony_ci * USE OR OTHER DEALINGS IN THE SOFTWARE. 20bf215546Sopenharmony_ci * 21bf215546Sopenharmony_ci * The above copyright notice and this permission notice (including the 22bf215546Sopenharmony_ci * next paragraph) shall be included in all copies or substantial portions 23bf215546Sopenharmony_ci * of the Software. 24bf215546Sopenharmony_ci */ 25bf215546Sopenharmony_ci 26bf215546Sopenharmony_ci#ifndef AC_SHADOWED_REGS 27bf215546Sopenharmony_ci#define AC_SHADOWED_REGS 28bf215546Sopenharmony_ci 29bf215546Sopenharmony_ci#include "ac_gpu_info.h" 30bf215546Sopenharmony_ci 31bf215546Sopenharmony_cistruct radeon_cmdbuf; 32bf215546Sopenharmony_ci 33bf215546Sopenharmony_cistruct ac_reg_range { 34bf215546Sopenharmony_ci unsigned offset; 35bf215546Sopenharmony_ci unsigned size; 36bf215546Sopenharmony_ci}; 37bf215546Sopenharmony_ci 38bf215546Sopenharmony_cienum ac_reg_range_type 39bf215546Sopenharmony_ci{ 40bf215546Sopenharmony_ci SI_REG_RANGE_UCONFIG, 41bf215546Sopenharmony_ci SI_REG_RANGE_CONTEXT, 42bf215546Sopenharmony_ci SI_REG_RANGE_SH, 43bf215546Sopenharmony_ci SI_REG_RANGE_CS_SH, 44bf215546Sopenharmony_ci SI_NUM_SHADOWED_REG_RANGES, 45bf215546Sopenharmony_ci 46bf215546Sopenharmony_ci SI_REG_RANGE_NON_SHADOWED = SI_NUM_SHADOWED_REG_RANGES, 47bf215546Sopenharmony_ci SI_NUM_ALL_REG_RANGES, 48bf215546Sopenharmony_ci}; 49bf215546Sopenharmony_ci 50bf215546Sopenharmony_ci#ifdef __cplusplus 51bf215546Sopenharmony_ciextern "C" { 52bf215546Sopenharmony_ci#endif 53bf215546Sopenharmony_ci 54bf215546Sopenharmony_citypedef void (*set_context_reg_seq_array_fn)(struct radeon_cmdbuf *cs, unsigned reg, unsigned num, 55bf215546Sopenharmony_ci const uint32_t *values); 56bf215546Sopenharmony_ci 57bf215546Sopenharmony_civoid ac_get_reg_ranges(enum amd_gfx_level gfx_level, enum radeon_family family, 58bf215546Sopenharmony_ci enum ac_reg_range_type type, unsigned *num_ranges, 59bf215546Sopenharmony_ci const struct ac_reg_range **ranges); 60bf215546Sopenharmony_civoid ac_emulate_clear_state(const struct radeon_info *info, struct radeon_cmdbuf *cs, 61bf215546Sopenharmony_ci set_context_reg_seq_array_fn set_context_reg_seq_array); 62bf215546Sopenharmony_civoid ac_check_shadowed_regs(enum amd_gfx_level gfx_level, enum radeon_family family, 63bf215546Sopenharmony_ci unsigned reg_offset, unsigned count); 64bf215546Sopenharmony_civoid ac_print_shadowed_regs(const struct radeon_info *info); 65bf215546Sopenharmony_ci 66bf215546Sopenharmony_ci#ifdef __cplusplus 67bf215546Sopenharmony_ci} 68bf215546Sopenharmony_ci#endif 69bf215546Sopenharmony_ci 70bf215546Sopenharmony_ci 71bf215546Sopenharmony_ci#endif 72