1*7688df22SAndroid Build Coastguard Worker /* 2*7688df22SAndroid Build Coastguard Worker * Copyright 2022 Advanced Micro Devices, Inc. 3*7688df22SAndroid Build Coastguard Worker * 4*7688df22SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 5*7688df22SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 6*7688df22SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 7*7688df22SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8*7688df22SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 9*7688df22SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 10*7688df22SAndroid Build Coastguard Worker * 11*7688df22SAndroid Build Coastguard Worker * The above copyright notice and this permission notice shall be included in 12*7688df22SAndroid Build Coastguard Worker * all copies or substantial portions of the Software. 13*7688df22SAndroid Build Coastguard Worker * 14*7688df22SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15*7688df22SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16*7688df22SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17*7688df22SAndroid Build Coastguard Worker * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 18*7688df22SAndroid Build Coastguard Worker * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 19*7688df22SAndroid Build Coastguard Worker * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 20*7688df22SAndroid Build Coastguard Worker * OTHER DEALINGS IN THE SOFTWARE. 21*7688df22SAndroid Build Coastguard Worker * 22*7688df22SAndroid Build Coastguard Worker */ 23*7688df22SAndroid Build Coastguard Worker 24*7688df22SAndroid Build Coastguard Worker #ifndef _shader_code_h_ 25*7688df22SAndroid Build Coastguard Worker #define _shader_code_h_ 26*7688df22SAndroid Build Coastguard Worker 27*7688df22SAndroid Build Coastguard Worker #ifndef ARRAY_SIZE 28*7688df22SAndroid Build Coastguard Worker #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) 29*7688df22SAndroid Build Coastguard Worker #endif 30*7688df22SAndroid Build Coastguard Worker 31*7688df22SAndroid Build Coastguard Worker enum amdgpu_test_gfx_version { 32*7688df22SAndroid Build Coastguard Worker AMDGPU_TEST_GFX_V9 = 0, 33*7688df22SAndroid Build Coastguard Worker AMDGPU_TEST_GFX_V10, 34*7688df22SAndroid Build Coastguard Worker AMDGPU_TEST_GFX_V11, 35*7688df22SAndroid Build Coastguard Worker AMDGPU_TEST_GFX_MAX, 36*7688df22SAndroid Build Coastguard Worker }; 37*7688df22SAndroid Build Coastguard Worker 38*7688df22SAndroid Build Coastguard Worker enum cs_type { 39*7688df22SAndroid Build Coastguard Worker CS_BUFFERCLEAR = 0, 40*7688df22SAndroid Build Coastguard Worker CS_BUFFERCOPY, 41*7688df22SAndroid Build Coastguard Worker CS_HANG, 42*7688df22SAndroid Build Coastguard Worker CS_HANG_SLOW, 43*7688df22SAndroid Build Coastguard Worker }; 44*7688df22SAndroid Build Coastguard Worker 45*7688df22SAndroid Build Coastguard Worker enum ps_type { 46*7688df22SAndroid Build Coastguard Worker PS_CONST, 47*7688df22SAndroid Build Coastguard Worker PS_TEX, 48*7688df22SAndroid Build Coastguard Worker PS_HANG, 49*7688df22SAndroid Build Coastguard Worker PS_HANG_SLOW 50*7688df22SAndroid Build Coastguard Worker }; 51*7688df22SAndroid Build Coastguard Worker 52*7688df22SAndroid Build Coastguard Worker enum vs_type { 53*7688df22SAndroid Build Coastguard Worker VS_RECTPOSTEXFAST, 54*7688df22SAndroid Build Coastguard Worker }; 55*7688df22SAndroid Build Coastguard Worker 56*7688df22SAndroid Build Coastguard Worker struct reg_info { 57*7688df22SAndroid Build Coastguard Worker uint32_t reg_offset; ///< Memory mapped register offset 58*7688df22SAndroid Build Coastguard Worker uint32_t reg_value; ///< register value 59*7688df22SAndroid Build Coastguard Worker }; 60*7688df22SAndroid Build Coastguard Worker 61*7688df22SAndroid Build Coastguard Worker #include "shader_code_hang.h" 62*7688df22SAndroid Build Coastguard Worker #include "shader_code_gfx9.h" 63*7688df22SAndroid Build Coastguard Worker #include "shader_code_gfx10.h" 64*7688df22SAndroid Build Coastguard Worker #include "shader_code_gfx11.h" 65*7688df22SAndroid Build Coastguard Worker 66*7688df22SAndroid Build Coastguard Worker struct shader_test_cs_shader { 67*7688df22SAndroid Build Coastguard Worker const uint32_t *shader; 68*7688df22SAndroid Build Coastguard Worker uint32_t shader_size; 69*7688df22SAndroid Build Coastguard Worker const struct reg_info *sh_reg; 70*7688df22SAndroid Build Coastguard Worker uint32_t num_sh_reg; 71*7688df22SAndroid Build Coastguard Worker const struct reg_info *context_reg; 72*7688df22SAndroid Build Coastguard Worker uint32_t num_context_reg; 73*7688df22SAndroid Build Coastguard Worker }; 74*7688df22SAndroid Build Coastguard Worker 75*7688df22SAndroid Build Coastguard Worker struct shader_test_ps_shader { 76*7688df22SAndroid Build Coastguard Worker const uint32_t *shader; 77*7688df22SAndroid Build Coastguard Worker unsigned shader_size; 78*7688df22SAndroid Build Coastguard Worker uint32_t patchinfo_code_size; 79*7688df22SAndroid Build Coastguard Worker const uint32_t *patchinfo_code; 80*7688df22SAndroid Build Coastguard Worker const uint32_t *patchinfo_code_offset; 81*7688df22SAndroid Build Coastguard Worker const struct reg_info *sh_reg; 82*7688df22SAndroid Build Coastguard Worker uint32_t num_sh_reg; 83*7688df22SAndroid Build Coastguard Worker const struct reg_info *context_reg; 84*7688df22SAndroid Build Coastguard Worker uint32_t num_context_reg; 85*7688df22SAndroid Build Coastguard Worker }; 86*7688df22SAndroid Build Coastguard Worker 87*7688df22SAndroid Build Coastguard Worker struct shader_test_vs_shader { 88*7688df22SAndroid Build Coastguard Worker const uint32_t *shader; 89*7688df22SAndroid Build Coastguard Worker uint32_t shader_size; 90*7688df22SAndroid Build Coastguard Worker const struct reg_info *sh_reg; 91*7688df22SAndroid Build Coastguard Worker uint32_t num_sh_reg; 92*7688df22SAndroid Build Coastguard Worker const struct reg_info *context_reg; 93*7688df22SAndroid Build Coastguard Worker uint32_t num_context_reg; 94*7688df22SAndroid Build Coastguard Worker }; 95*7688df22SAndroid Build Coastguard Worker 96*7688df22SAndroid Build Coastguard Worker static const struct shader_test_cs_shader shader_test_cs[AMDGPU_TEST_GFX_MAX][2] = { 97*7688df22SAndroid Build Coastguard Worker // gfx9, cs_bufferclear 98*7688df22SAndroid Build Coastguard Worker {{bufferclear_cs_shader_gfx9, sizeof(bufferclear_cs_shader_gfx9), bufferclear_cs_shader_registers_gfx9, ARRAY_SIZE(bufferclear_cs_shader_registers_gfx9)}, 99*7688df22SAndroid Build Coastguard Worker // gfx9, cs_buffercopy 100*7688df22SAndroid Build Coastguard Worker {buffercopy_cs_shader_gfx9, sizeof(buffercopy_cs_shader_gfx9), bufferclear_cs_shader_registers_gfx9, ARRAY_SIZE(bufferclear_cs_shader_registers_gfx9)}}, 101*7688df22SAndroid Build Coastguard Worker // gfx10, cs_bufferclear 102*7688df22SAndroid Build Coastguard Worker {{bufferclear_cs_shader_gfx10, sizeof(bufferclear_cs_shader_gfx10), bufferclear_cs_shader_registers_gfx9, ARRAY_SIZE(bufferclear_cs_shader_registers_gfx9)}, 103*7688df22SAndroid Build Coastguard Worker // gfx10, cs_buffercopy 104*7688df22SAndroid Build Coastguard Worker {buffercopy_cs_shader_gfx10, sizeof(bufferclear_cs_shader_gfx10), bufferclear_cs_shader_registers_gfx9, ARRAY_SIZE(bufferclear_cs_shader_registers_gfx9)}}, 105*7688df22SAndroid Build Coastguard Worker // gfx11, cs_bufferclear 106*7688df22SAndroid Build Coastguard Worker {{bufferclear_cs_shader_gfx11, sizeof(bufferclear_cs_shader_gfx11), bufferclear_cs_shader_registers_gfx11, ARRAY_SIZE(bufferclear_cs_shader_registers_gfx11)}, 107*7688df22SAndroid Build Coastguard Worker // gfx11, cs_buffercopy 108*7688df22SAndroid Build Coastguard Worker {buffercopy_cs_shader_gfx11, sizeof(bufferclear_cs_shader_gfx11), bufferclear_cs_shader_registers_gfx11, ARRAY_SIZE(bufferclear_cs_shader_registers_gfx11)}}, 109*7688df22SAndroid Build Coastguard Worker }; 110*7688df22SAndroid Build Coastguard Worker 111*7688df22SAndroid Build Coastguard Worker #define SHADER_PS_INFO(_ps, _n) \ 112*7688df22SAndroid Build Coastguard Worker {ps_##_ps##_shader_gfx##_n, sizeof(ps_##_ps##_shader_gfx##_n), \ 113*7688df22SAndroid Build Coastguard Worker ps_##_ps##_shader_patchinfo_code_size_gfx##_n, \ 114*7688df22SAndroid Build Coastguard Worker &(ps_##_ps##_shader_patchinfo_code_gfx##_n)[0][0][0], \ 115*7688df22SAndroid Build Coastguard Worker ps_##_ps##_shader_patchinfo_offset_gfx##_n, \ 116*7688df22SAndroid Build Coastguard Worker ps_##_ps##_sh_registers_gfx##_n, ps_##_ps##_num_sh_registers_gfx##_n, \ 117*7688df22SAndroid Build Coastguard Worker ps_##_ps##_context_registers_gfx##_n, ps_##_ps##_num_context_registers_gfx##_n} 118*7688df22SAndroid Build Coastguard Worker static const struct shader_test_ps_shader shader_test_ps[AMDGPU_TEST_GFX_MAX][2] = { 119*7688df22SAndroid Build Coastguard Worker {SHADER_PS_INFO(const, 9), SHADER_PS_INFO(tex, 9)}, 120*7688df22SAndroid Build Coastguard Worker {SHADER_PS_INFO(const, 10), SHADER_PS_INFO(tex, 10)}, 121*7688df22SAndroid Build Coastguard Worker {SHADER_PS_INFO(const, 11), SHADER_PS_INFO(tex, 11)}, 122*7688df22SAndroid Build Coastguard Worker }; 123*7688df22SAndroid Build Coastguard Worker 124*7688df22SAndroid Build Coastguard Worker #define SHADER_VS_INFO(_vs, _n) \ 125*7688df22SAndroid Build Coastguard Worker {vs_##_vs##_shader_gfx##_n, sizeof(vs_##_vs##_shader_gfx##_n), \ 126*7688df22SAndroid Build Coastguard Worker vs_##_vs##_sh_registers_gfx##_n, vs_##_vs##_num_sh_registers_gfx##_n, \ 127*7688df22SAndroid Build Coastguard Worker vs_##_vs##_context_registers_gfx##_n, vs_##_vs##_num_context_registers_gfx##_n} 128*7688df22SAndroid Build Coastguard Worker static const struct shader_test_vs_shader shader_test_vs[AMDGPU_TEST_GFX_MAX][1] = { 129*7688df22SAndroid Build Coastguard Worker {SHADER_VS_INFO(RectPosTexFast, 9)}, 130*7688df22SAndroid Build Coastguard Worker {SHADER_VS_INFO(RectPosTexFast, 10)}, 131*7688df22SAndroid Build Coastguard Worker {SHADER_VS_INFO(RectPosTexFast, 11)}, 132*7688df22SAndroid Build Coastguard Worker }; 133*7688df22SAndroid Build Coastguard Worker 134*7688df22SAndroid Build Coastguard Worker struct shader_test_gfx_info { 135*7688df22SAndroid Build Coastguard Worker const uint32_t *preamble_cache; 136*7688df22SAndroid Build Coastguard Worker uint32_t size_preamble_cache; 137*7688df22SAndroid Build Coastguard Worker const uint32_t *cached_cmd; 138*7688df22SAndroid Build Coastguard Worker uint32_t size_cached_cmd; 139*7688df22SAndroid Build Coastguard Worker uint32_t sh_reg_base; 140*7688df22SAndroid Build Coastguard Worker uint32_t context_reg_base; 141*7688df22SAndroid Build Coastguard Worker }; 142*7688df22SAndroid Build Coastguard Worker 143*7688df22SAndroid Build Coastguard Worker #define SHADER_TEST_GFX_INFO(_n) \ 144*7688df22SAndroid Build Coastguard Worker preamblecache_gfx##_n, sizeof(preamblecache_gfx##_n), \ 145*7688df22SAndroid Build Coastguard Worker cached_cmd_gfx##_n, sizeof(cached_cmd_gfx##_n), \ 146*7688df22SAndroid Build Coastguard Worker sh_reg_base_gfx##_n, context_reg_base_gfx##_n 147*7688df22SAndroid Build Coastguard Worker 148*7688df22SAndroid Build Coastguard Worker static struct shader_test_gfx_info shader_test_gfx_info[AMDGPU_TEST_GFX_MAX] = { 149*7688df22SAndroid Build Coastguard Worker {SHADER_TEST_GFX_INFO(9),}, 150*7688df22SAndroid Build Coastguard Worker {SHADER_TEST_GFX_INFO(10),}, 151*7688df22SAndroid Build Coastguard Worker {SHADER_TEST_GFX_INFO(11),}, 152*7688df22SAndroid Build Coastguard Worker }; 153*7688df22SAndroid Build Coastguard Worker #endif 154