xref: /aosp_15_r20/external/libdrm/tests/amdgpu/shader_code.h (revision 7688df22e49036ff52a766b7101da3a49edadb8c)
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