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