Lines Matching defs:shader
54 llvm_fetch_tcs_input(struct draw_tess_ctrl_shader *shader,
60 float (*input_data)[32][NUM_TCS_INPUTS][TGSI_NUM_CHANNELS] = &shader->tcs_input->data;
63 unsigned input_vertex_stride = shader->input_vertex_stride;
65 input_ptr = shader->input;
76 for (slot = 0, vs_slot = 0; slot < shader->info.num_inputs; ++slot) {
78 shader->info.input_semantic_name[slot],
79 shader->info.input_semantic_index[slot],
80 shader->input_info);
107 llvm_store_tcs_output(struct draw_tess_ctrl_shader *shader,
113 float (*output_data)[32][PIPE_MAX_SHADER_INPUTS][TGSI_NUM_CHANNELS] = &shader->tcs_output->data;
115 unsigned num_vertices = shader->vertices_out;
128 for (slot = 0; slot < shader->info.num_outputs; ++slot) {
146 llvm_tcs_run(struct draw_tess_ctrl_shader *shader, uint32_t prim_id)
148 shader->current_variant->jit_func(shader->jit_context, shader->tcs_input->data, shader->tcs_output->data, prim_id,
149 shader->draw->pt.vertices_per_patch, shader->draw->pt.user.viewid);
154 * Execute tess ctrl shader.
156 int draw_tess_ctrl_shader_run(struct draw_tess_ctrl_shader *shader,
166 unsigned num_outputs = draw_total_tcs_outputs(shader->draw);
169 unsigned num_patches = input_prim->count / shader->draw->pt.vertices_per_patch;
175 shader->input = input;
176 shader->input_vertex_stride = input_stride;
177 shader->input_info = input_info;
188 if (shader->draw->collect_statistics) {
189 shader->draw->statistics.hs_invocations += num_patches;
195 output_verts->count += shader->vertices_out;
197 llvm_fetch_tcs_input(shader, input_prim, i, shader->draw->pt.vertices_per_patch);
199 llvm_tcs_run(shader, i);
207 llvm_store_tcs_output(shader, i, output_verts, vert_start);
218 llvm_fetch_tes_input(struct draw_tess_eval_shader *shader,
224 float (*input_data)[32][PIPE_MAX_SHADER_INPUTS][TGSI_NUM_CHANNELS] = &shader->tes_input->data;
227 unsigned input_vertex_stride = shader->input_vertex_stride;
229 input_ptr = shader->input;
241 for (slot = 0, vs_slot = 0; slot < shader->info.num_inputs; ++slot) {
243 shader->info.input_semantic_name[slot],
244 shader->info.input_semantic_index[slot],
245 shader->input_info);
272 llvm_fetch_tess_factors(struct draw_tess_eval_shader *shader,
278 TGSI_SEMANTIC_TESSOUTER, 0, shader->input_info);
280 TGSI_SEMANTIC_TESSINNER, 0, shader->input_info);
283 input_ptr = shader->input;
284 input = (const float (*)[4])((const char *)input_ptr + ((patch_id * num_vertices) * shader->input_vertex_stride));
291 factors->outer_tf[i] = shader->draw->default_outer_tess_level[i];
298 factors->inner_tf[i] = shader->draw->default_inner_tess_level[i];
303 llvm_tes_run(struct draw_tess_eval_shader *shader,
310 shader->current_variant->jit_func(shader->jit_context, shader->tes_input->data, output, prim_id,
313 shader->draw->pt.user.viewid);
318 * Execute tess eval shader.
320 int draw_tess_eval_shader_run(struct draw_tess_eval_shader *shader,
332 unsigned num_outputs = draw_total_tes_outputs(shader->draw);
345 output_prims->prim = get_tes_output_prim(shader);
350 shader->input = input;
351 shader->input_vertex_stride = input_stride;
352 shader->input_info = input_info;
357 struct pipe_tessellator *ptess = p_tess_init(shader->prim_mode,
358 shader->spacing,
359 !shader->vertex_order_cw,
360 shader->point_mode);
366 llvm_fetch_tess_factors(shader, i, num_input_vertices_per_patch, &factors);
389 llvm_fetch_tes_input(shader, input_prim, i, num_input_vertices_per_patch);
393 llvm_tes_run(shader, i, num_input_vertices_per_patch, &data, &factors, (struct vertex_header *)output);
395 if (shader->draw->collect_statistics) {
396 shader->draw->statistics.ds_invocations += data.num_domain_points;
490 struct llvm_tess_ctrl_shader *shader = llvm_tess_ctrl_shader(dtcs);
494 LIST_FOR_EACH_ENTRY_SAFE(li, next, &shader->variants.list, list) {
498 assert(shader->variants_cached == 0);
510 void draw_tcs_set_current_variant(struct draw_tess_ctrl_shader *shader,
513 shader->current_variant = variant;
618 struct llvm_tess_eval_shader *shader = llvm_tess_eval_shader(dtes);
621 LIST_FOR_EACH_ENTRY_SAFE(li, next, &shader->variants.list, list) {
625 assert(shader->variants_cached == 0);
635 void draw_tes_set_current_variant(struct draw_tess_eval_shader *shader,
638 shader->current_variant = variant;
642 enum pipe_prim_type get_tes_output_prim(struct draw_tess_eval_shader *shader)
644 if (shader->point_mode)
646 else if (shader->prim_mode == PIPE_PRIM_LINES)