- switch (tep->program.info.tes.spacing) {
- case GL_EQUAL:
- prog_data.partitioning = BRW_TESS_PARTITIONING_INTEGER;
- break;
- case GL_FRACTIONAL_ODD:
- prog_data.partitioning = BRW_TESS_PARTITIONING_ODD_FRACTIONAL;
- break;
- case GL_FRACTIONAL_EVEN:
- prog_data.partitioning = BRW_TESS_PARTITIONING_EVEN_FRACTIONAL;
- break;
- default:
- unreachable("invalid domain shader spacing");
- }
-
- switch (tep->program.info.tes.primitive_mode) {
- case GL_QUADS:
- prog_data.domain = BRW_TESS_DOMAIN_QUAD;
- break;
- case GL_TRIANGLES:
- prog_data.domain = BRW_TESS_DOMAIN_TRI;
- break;
- case GL_ISOLINES:
- prog_data.domain = BRW_TESS_DOMAIN_ISOLINE;
- break;
- default:
- unreachable("invalid domain shader primitive mode");
- }
-
- if (tep->program.info.tes.point_mode) {
- prog_data.output_topology = BRW_TESS_OUTPUT_TOPOLOGY_POINT;
- } else if (tep->program.info.tes.primitive_mode == GL_ISOLINES) {
- prog_data.output_topology = BRW_TESS_OUTPUT_TOPOLOGY_LINE;
- } else {
- /* Hardware winding order is backwards from OpenGL */
- switch (tep->program.info.tes.vertex_order) {
- case GL_CCW:
- prog_data.output_topology = BRW_TESS_OUTPUT_TOPOLOGY_TRI_CW;
- break;
- case GL_CW:
- prog_data.output_topology = BRW_TESS_OUTPUT_TOPOLOGY_TRI_CCW;
- break;
- default:
- unreachable("invalid domain shader vertex order");
- }
- }
-
- /* Allocate the references to the uniforms that will end up in the
- * prog_data associated with the compiled program, and which will be freed
- * by the state cache.
- *
- * Note: param_count needs to be num_uniform_components * 4, since we add
- * padding around uniform values below vec4 size, so the worst case is that
- * every uniform is a float which gets padded to the size of a vec4.
- */
- int param_count = nir->num_uniforms / 4;
-
- prog_data.base.base.param =
- rzalloc_array(NULL, const gl_constant_value *, param_count);
- prog_data.base.base.pull_param =
- rzalloc_array(NULL, const gl_constant_value *, param_count);
- prog_data.base.base.image_param =
- rzalloc_array(NULL, struct brw_image_param,
- tep->program.info.num_images);
- prog_data.base.base.nr_params = param_count;
- prog_data.base.base.nr_image_params = tep->program.info.num_images;
-
- brw_nir_setup_glsl_uniforms(nir, &tep->program, &prog_data.base.base,