xref: /aosp_15_r20/external/mesa3d/src/compiler/nir/tests/opt_varyings_tests_dead_input.cpp (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 /*
2  * Copyright 2023 Advanced Micro Devices, Inc.
3  *
4  * SPDX-License-Identifier: MIT
5  */
6 
7 #include "nir_opt_varyings_test.h"
8 
9 class nir_opt_varyings_test_dead_input : public nir_opt_varyings_test
10 {};
11 
12 #define TEST_DEAD_INPUT_TO_UNDEF(producer_stage, consumer_stage, slot, bitsize) \
13 TEST_F(nir_opt_varyings_test_dead_input, producer_stage##_##consumer_stage##_##slot##_##bitsize) \
14 { \
15    create_shaders(MESA_SHADER_##producer_stage, MESA_SHADER_##consumer_stage); \
16    nir_def *input = load_input(b2, VARYING_SLOT_##slot, 0, nir_type_float##bitsize, 0, 0); \
17    store_output(b2, VARYING_SLOT_POS, 0, nir_type_float##bitsize, input, 0); \
18    \
19    ASSERT_TRUE(opt_varyings() == nir_progress_consumer); \
20    ASSERT_TRUE(b2->shader->info.inputs_read == 0 && \
21                b2->shader->info.patch_inputs_read == 0 && \
22                b2->shader->info.inputs_read_16bit == 0); \
23    ASSERT_TRUE(!shader_contains_def(b2, input)); \
24    ASSERT_TRUE(shader_contains_undef(b2, bitsize)); \
25 }
26 
27 #define TEST_DEAD_INPUT_TO_CONST(producer_stage, consumer_stage, slot, comp, bitsize, value) \
28 TEST_F(nir_opt_varyings_test_dead_input, producer_stage##_##consumer_stage##_##slot##_##comp##_##bitsize) \
29 { \
30    create_shaders(MESA_SHADER_##producer_stage, MESA_SHADER_##consumer_stage); \
31    nir_def *input = load_input(b2, VARYING_SLOT_##slot, comp, nir_type_float##bitsize, 0, 0); \
32    store_output(b2, VARYING_SLOT_POS, 0, nir_type_float##bitsize, input, 0); \
33    \
34    ASSERT_TRUE(opt_varyings() == nir_progress_consumer); \
35    ASSERT_TRUE(b2->shader->info.inputs_read == 0 && \
36                b2->shader->info.patch_inputs_read == 0 && \
37                b2->shader->info.inputs_read_16bit == 0); \
38    ASSERT_TRUE(!shader_contains_def(b2, input)); \
39    ASSERT_TRUE(shader_contains_const_float(b2, value, bitsize)); \
40 }
41 
42 #define TEST_DEAD_INPUT_KEPT(producer_stage, consumer_stage, slot, bitsize) \
43 TEST_F(nir_opt_varyings_test_dead_input, producer_stage##_##consumer_stage##_##slot##_##bitsize) \
44 { \
45    create_shaders(MESA_SHADER_##producer_stage, MESA_SHADER_##consumer_stage); \
46    nir_def *input = load_input(b2, VARYING_SLOT_##slot, 0, nir_type_float##bitsize, 0, 0); \
47    store_output(b2, VARYING_SLOT_POS, 0, nir_type_float##bitsize, input, 0); \
48    \
49    ASSERT_TRUE(opt_varyings() == 0); \
50    ASSERT_TRUE(b2->shader->info.inputs_read == VARYING_BIT_##slot); \
51    ASSERT_TRUE(shader_contains_def(b2, input)); \
52 }
53 
54 #define TEST_OUTPUT_INPUT_ROUTING_KEPT(producer_stage, consumer_stage, pslot, cslot, bitsize) \
55 TEST_F(nir_opt_varyings_test_dead_input, \
56        routing_##producer_stage##_##pslot##_##consumer_stage##_##cslot##_##bitsize) \
57 { \
58    create_shaders(MESA_SHADER_##producer_stage, MESA_SHADER_##consumer_stage); \
59    store_output(b1, VARYING_SLOT_##pslot, 0, nir_type_float##bitsize, \
60                 load_input(b1, VARYING_SLOT_POS, 0, nir_type_float##bitsize, 0, 0), 0); \
61    \
62    nir_def *input = load_input(b2, VARYING_SLOT_##cslot, 0, nir_type_float##bitsize, 0, 0); \
63    store_output(b2, VARYING_SLOT_POS, 0, nir_type_float##bitsize, input, 0); \
64    \
65    /* Compaction moves COL1 to COL0. */ \
66    unsigned pindex = VARYING_SLOT_##pslot; \
67    unsigned cindex = VARYING_SLOT_##cslot; \
68    if (cindex == VARYING_SLOT_COL1) { \
69       pindex--; \
70       cindex--; \
71    } \
72    \
73    ASSERT_TRUE(opt_varyings() == 0); \
74    ASSERT_TRUE(b1->shader->info.outputs_written == BITFIELD64_BIT(pindex)); \
75    ASSERT_TRUE(b2->shader->info.inputs_read == BITFIELD64_BIT(cindex)); \
76    ASSERT_TRUE(shader_contains_def(b2, input)); \
77 }
78 
79 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, POS, 32)
80 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, COL0, 32)
81 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, COL1, 32)
82 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, FOGC, 32)
83 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, TEX0, 32)
84 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, PSIZ, 32)
85 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, BFC0, 32)
86 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, BFC1, 32)
87 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, CLIP_VERTEX, 32)
88 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, CLIP_DIST0, 32)
89 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, CLIP_DIST1, 32)
90 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, CULL_DIST0, 32)
91 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, CULL_DIST1, 32)
92 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, PRIMITIVE_ID, 32)
93 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, LAYER, 32)
94 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, VIEWPORT, 32)
95 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, VAR0, 32)
96 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, VAR0, 16)
97 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_CTRL, VAR0_16BIT, 16)
98 
99 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, POS, 32)
100 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, COL0, 32)
101 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, COL1, 32)
102 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, FOGC, 32)
103 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, TEX0, 32)
104 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, PSIZ, 32)
105 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, BFC0, 32)
106 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, BFC1, 32)
107 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, CLIP_VERTEX, 32)
108 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, CLIP_DIST0, 32)
109 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, CLIP_DIST1, 32)
110 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, CULL_DIST0, 32)
111 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, CULL_DIST1, 32)
112 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, PRIMITIVE_ID, 32)
113 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, LAYER, 32)
114 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, VIEWPORT, 32)
115 TEST_DEAD_INPUT_KEPT(VERTEX, TESS_EVAL, TESS_LEVEL_INNER, 32)
116 TEST_DEAD_INPUT_KEPT(VERTEX, TESS_EVAL, TESS_LEVEL_OUTER, 32)
117 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, VAR0, 32)
118 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, VAR0, 16)
119 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, TESS_EVAL, VAR0_16BIT, 16)
120 
121 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, POS, 32)
122 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, COL0, 32)
123 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, COL1, 32)
124 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, FOGC, 32)
125 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, TEX0, 32)
126 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, PSIZ, 32)
127 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, BFC0, 32)
128 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, BFC1, 32)
129 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, CLIP_VERTEX, 32)
130 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, CLIP_DIST0, 32)
131 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, CLIP_DIST1, 32)
132 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, CULL_DIST0, 32)
133 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, CULL_DIST1, 32)
134 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, PRIMITIVE_ID, 32)
135 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, LAYER, 32)
136 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, VIEWPORT, 32)
137 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, TESS_LEVEL_INNER, 32)
138 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, TESS_LEVEL_OUTER, 32)
139 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, VAR0, 32)
140 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, VAR0, 16)
141 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, VAR0_16BIT, 16)
142 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, PATCH0, 32)
143 TEST_DEAD_INPUT_TO_UNDEF(TESS_CTRL, TESS_EVAL, PATCH0, 16)
144 
145 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, POS, 32)
146 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, COL0, 32)
147 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, COL1, 32)
148 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, FOGC, 32)
149 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, TEX0, 32)
150 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, PSIZ, 32)
151 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, BFC0, 32)
152 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, BFC1, 32)
153 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, CLIP_VERTEX, 32)
154 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, CLIP_DIST0, 32)
155 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, CLIP_DIST1, 32)
156 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, CULL_DIST0, 32)
157 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, CULL_DIST1, 32)
158 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, PRIMITIVE_ID, 32)
159 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, LAYER, 32)
160 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, VIEWPORT, 32)
161 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, VAR0, 32)
162 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, VAR0, 16)
163 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, GEOMETRY, VAR0_16BIT, 16)
164 
165 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, POS, 32)
166 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, COL0, 32)
167 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, COL1, 32)
168 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, FOGC, 32)
169 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, TEX0, 32)
170 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, PSIZ, 32)
171 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, BFC0, 32)
172 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, BFC1, 32)
173 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, CLIP_VERTEX, 32)
174 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, CLIP_DIST0, 32)
175 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, CLIP_DIST1, 32)
176 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, CULL_DIST0, 32)
177 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, CULL_DIST1, 32)
178 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, PRIMITIVE_ID, 32)
179 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, LAYER, 32)
180 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, VIEWPORT, 32)
181 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, VAR0, 32)
182 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, VAR0, 16)
183 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, GEOMETRY, VAR0_16BIT, 16)
184 
185 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, FRAGMENT, COL0, 32)
186 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, FRAGMENT, COL1, 32)
187 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, FRAGMENT, FOGC, 32)
188 TEST_DEAD_INPUT_KEPT(VERTEX, FRAGMENT, TEX0, 32)
189 TEST_DEAD_INPUT_TO_CONST(VERTEX, FRAGMENT, TEX0, 2, 32, 0)
190 TEST_DEAD_INPUT_TO_CONST(VERTEX, FRAGMENT, TEX0, 3, 32, 1)
191 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, FRAGMENT, CLIP_DIST0, 32)
192 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, FRAGMENT, CLIP_DIST1, 32)
193 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, FRAGMENT, CULL_DIST0, 32)
194 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, FRAGMENT, CULL_DIST1, 32)
195 TEST_DEAD_INPUT_KEPT(VERTEX, FRAGMENT, PRIMITIVE_ID, 32)
196 TEST_DEAD_INPUT_TO_CONST(VERTEX, FRAGMENT, LAYER, 0, 32, 0)
197 TEST_DEAD_INPUT_TO_CONST(VERTEX, FRAGMENT, VIEWPORT, 0, 32, 0)
198 TEST_DEAD_INPUT_KEPT(VERTEX, FRAGMENT, PNTC, 32)
199 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, FRAGMENT, VAR0, 32)
200 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, FRAGMENT, VAR0, 16)
201 TEST_DEAD_INPUT_TO_UNDEF(VERTEX, FRAGMENT, VAR0_16BIT, 16)
202 
203 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, FRAGMENT, COL0, 32)
204 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, FRAGMENT, COL1, 32)
205 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, FRAGMENT, FOGC, 32)
206 TEST_DEAD_INPUT_KEPT(TESS_EVAL, FRAGMENT, TEX0, 32)
207 TEST_DEAD_INPUT_TO_CONST(TESS_EVAL, FRAGMENT, TEX0, 2, 32, 0)
208 TEST_DEAD_INPUT_TO_CONST(TESS_EVAL, FRAGMENT, TEX0, 3, 32, 1)
209 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, FRAGMENT, CLIP_DIST0, 32)
210 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, FRAGMENT, CLIP_DIST1, 32)
211 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, FRAGMENT, CULL_DIST0, 32)
212 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, FRAGMENT, CULL_DIST1, 32)
213 TEST_DEAD_INPUT_KEPT(TESS_EVAL, FRAGMENT, PRIMITIVE_ID, 32)
214 TEST_DEAD_INPUT_TO_CONST(TESS_EVAL, FRAGMENT, LAYER, 0, 32, 0)
215 TEST_DEAD_INPUT_TO_CONST(TESS_EVAL, FRAGMENT, VIEWPORT, 0, 32, 0)
216 TEST_DEAD_INPUT_KEPT(TESS_EVAL, FRAGMENT, PNTC, 32)
217 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, FRAGMENT, VAR0, 32)
218 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, FRAGMENT, VAR0, 16)
219 TEST_DEAD_INPUT_TO_UNDEF(TESS_EVAL, FRAGMENT, VAR0_16BIT, 16)
220 
221 TEST_DEAD_INPUT_TO_UNDEF(GEOMETRY, FRAGMENT, COL0, 32)
222 TEST_DEAD_INPUT_TO_UNDEF(GEOMETRY, FRAGMENT, COL1, 32)
223 TEST_DEAD_INPUT_TO_UNDEF(GEOMETRY, FRAGMENT, FOGC, 32)
224 TEST_DEAD_INPUT_KEPT(GEOMETRY, FRAGMENT, TEX0, 32)
225 TEST_DEAD_INPUT_TO_CONST(GEOMETRY, FRAGMENT, TEX0, 2, 32, 0)
226 TEST_DEAD_INPUT_TO_CONST(GEOMETRY, FRAGMENT, TEX0, 3, 32, 1)
227 TEST_DEAD_INPUT_TO_UNDEF(GEOMETRY, FRAGMENT, CLIP_DIST0, 32)
228 TEST_DEAD_INPUT_TO_UNDEF(GEOMETRY, FRAGMENT, CLIP_DIST1, 32)
229 TEST_DEAD_INPUT_TO_UNDEF(GEOMETRY, FRAGMENT, CULL_DIST0, 32)
230 TEST_DEAD_INPUT_TO_UNDEF(GEOMETRY, FRAGMENT, CULL_DIST1, 32)
231 TEST_DEAD_INPUT_TO_UNDEF(GEOMETRY, FRAGMENT, PRIMITIVE_ID, 32)
232 TEST_DEAD_INPUT_TO_CONST(GEOMETRY, FRAGMENT, LAYER, 0, 32, 0)
233 TEST_DEAD_INPUT_TO_CONST(GEOMETRY, FRAGMENT, VIEWPORT, 0, 32, 0)
234 TEST_DEAD_INPUT_KEPT(GEOMETRY, FRAGMENT, PNTC, 32)
235 TEST_DEAD_INPUT_TO_UNDEF(GEOMETRY, FRAGMENT, VAR0, 32)
236 TEST_DEAD_INPUT_TO_UNDEF(GEOMETRY, FRAGMENT, VAR0, 16)
237 TEST_DEAD_INPUT_TO_UNDEF(GEOMETRY, FRAGMENT, VAR0_16BIT, 16)
238 
239 TEST_DEAD_INPUT_KEPT(MESH, FRAGMENT, PNTC, 32)
240 TEST_DEAD_INPUT_TO_UNDEF(MESH, FRAGMENT, VAR0, 32)
241 TEST_DEAD_INPUT_TO_UNDEF(MESH, FRAGMENT, VAR0, 16)
242 TEST_DEAD_INPUT_TO_UNDEF(MESH, FRAGMENT, VAR0_16BIT, 16)
243 
244 TEST_OUTPUT_INPUT_ROUTING_KEPT(VERTEX, FRAGMENT, BFC0, COL0, 32)
245 TEST_OUTPUT_INPUT_ROUTING_KEPT(VERTEX, FRAGMENT, BFC1, COL1, 32)
246 TEST_OUTPUT_INPUT_ROUTING_KEPT(TESS_EVAL, FRAGMENT, BFC0, COL0, 32)
247 TEST_OUTPUT_INPUT_ROUTING_KEPT(TESS_EVAL, FRAGMENT, BFC1, COL1, 32)
248 TEST_OUTPUT_INPUT_ROUTING_KEPT(GEOMETRY, FRAGMENT, BFC0, COL0, 32)
249 TEST_OUTPUT_INPUT_ROUTING_KEPT(GEOMETRY, FRAGMENT, BFC1, COL1, 32)
250 
251 }
252