Lines Matching full:setup
55 float dx; /**< X(v1) - X(v0), used only during setup */
56 float dy; /**< Y(v1) - Y(v0), used only during setup */
72 * Triangle setup info.
126 * Clip setup->quad against the scissor/surface bounds.
129 quad_clip(struct setup_context *setup, struct quad_header *quad) in quad_clip() argument
132 const struct pipe_scissor_state *cliprect = &setup->softpipe->cliprect[viewport_index]; in quad_clip()
161 clip_emit_quad(struct setup_context *setup, struct quad_header *quad) in clip_emit_quad() argument
163 quad_clip(setup, quad); in clip_emit_quad()
166 struct softpipe_context *sp = setup->softpipe; in clip_emit_quad()
169 setup->numFragsEmitted += util_bitcount(quad->inout.mask); in clip_emit_quad()
200 flush_spans(struct setup_context *setup) in flush_spans() argument
203 const int xleft0 = setup->span.left[0]; in flush_spans()
204 const int xleft1 = setup->span.left[1]; in flush_spans()
205 const int xright0 = setup->span.right[0]; in flush_spans()
206 const int xright1 = setup->span.right[1]; in flush_spans()
207 struct quad_stage *pipe = setup->softpipe->quad.first; in flush_spans()
237 setup->quad[q].input.x0 = lx; in flush_spans()
238 setup->quad[q].input.y0 = setup->span.y; in flush_spans()
239 setup->quad[q].input.facing = setup->facing; in flush_spans()
240 setup->quad[q].inout.mask = quadmask; in flush_spans()
241 setup->quad_ptrs[q] = &setup->quad[q]; in flush_spans()
244 setup->numFragsEmitted += util_bitcount(quadmask); in flush_spans()
252 pipe->run( pipe, setup->quad_ptrs, q ); in flush_spans()
257 setup->span.y = 0; in flush_spans()
258 setup->span.right[0] = 0; in flush_spans()
259 setup->span.right[1] = 0; in flush_spans()
260 setup->span.left[0] = 1000000; /* greater than right[0] */ in flush_spans()
261 setup->span.left[1] = 1000000; /* greater than right[1] */ in flush_spans()
267 print_vertex(const struct setup_context *setup, in print_vertex() argument
272 for (i = 0; i < setup->nr_vertex_attrs; i++) { in print_vertex()
289 setup_sort_vertices(struct setup_context *setup, in setup_sort_vertices() argument
295 if (setup->softpipe->rasterizer->flatshade_first) in setup_sort_vertices()
296 setup->vprovoke = v0; in setup_sort_vertices()
298 setup->vprovoke = v2; in setup_sort_vertices()
308 setup->vmin = v0; in setup_sort_vertices()
309 setup->vmid = v1; in setup_sort_vertices()
310 setup->vmax = v2; in setup_sort_vertices()
314 setup->vmin = v2; in setup_sort_vertices()
315 setup->vmid = v0; in setup_sort_vertices()
316 setup->vmax = v1; in setup_sort_vertices()
320 setup->vmin = v0; in setup_sort_vertices()
321 setup->vmid = v2; in setup_sort_vertices()
322 setup->vmax = v1; in setup_sort_vertices()
328 setup->vmin = v1; in setup_sort_vertices()
329 setup->vmid = v0; in setup_sort_vertices()
330 setup->vmax = v2; in setup_sort_vertices()
334 setup->vmin = v2; in setup_sort_vertices()
335 setup->vmid = v1; in setup_sort_vertices()
336 setup->vmax = v0; in setup_sort_vertices()
340 setup->vmin = v1; in setup_sort_vertices()
341 setup->vmid = v2; in setup_sort_vertices()
342 setup->vmax = v0; in setup_sort_vertices()
347 setup->ebot.dx = setup->vmid[0][0] - setup->vmin[0][0]; in setup_sort_vertices()
348 setup->ebot.dy = setup->vmid[0][1] - setup->vmin[0][1]; in setup_sort_vertices()
349 setup->emaj.dx = setup->vmax[0][0] - setup->vmin[0][0]; in setup_sort_vertices()
350 setup->emaj.dy = setup->vmax[0][1] - setup->vmin[0][1]; in setup_sort_vertices()
351 setup->etop.dx = setup->vmax[0][0] - setup->vmid[0][0]; in setup_sort_vertices()
352 setup->etop.dy = setup->vmax[0][1] - setup->vmid[0][1]; in setup_sort_vertices()
365 const float area = (setup->emaj.dx * setup->ebot.dy - in setup_sort_vertices()
366 setup->ebot.dx * setup->emaj.dy); in setup_sort_vertices()
368 setup->oneoverarea = 1.0f / area; in setup_sort_vertices()
372 __FUNCTION__, setup->oneoverarea, area, det ); in setup_sort_vertices()
374 if (util_is_inf_or_nan(setup->oneoverarea)) in setup_sort_vertices()
383 setup->facing = in setup_sort_vertices()
385 (setup->softpipe->rasterizer->front_ccw)); in setup_sort_vertices()
388 unsigned face = setup->facing == 0 ? PIPE_FACE_FRONT : PIPE_FACE_BACK; in setup_sort_vertices()
390 if (face & setup->cull_face) in setup_sort_vertices()
401 * The result will be put into setup->coef[slot].a0[i].
406 const_coeff(struct setup_context *setup, in const_coeff() argument
417 coef->a0[i] = setup->vprovoke[vertSlot][i]; in const_coeff()
427 tri_linear_coeff(struct setup_context *setup, in tri_linear_coeff() argument
434 float a = setup->ebot.dy * majda - botda * setup->emaj.dy; in tri_linear_coeff()
435 float b = setup->emaj.dx * botda - majda * setup->ebot.dx; in tri_linear_coeff()
436 float dadx = a * setup->oneoverarea; in tri_linear_coeff()
437 float dady = b * setup->oneoverarea; in tri_linear_coeff()
457 (dadx * (setup->vmin[0][0] - setup->pixel_offset) + in tri_linear_coeff()
458 dady * (setup->vmin[0][1] - setup->pixel_offset))); in tri_linear_coeff()
472 tri_persp_coeff(struct setup_context *setup, in tri_persp_coeff() argument
479 float mina = v[0] * setup->vmin[0][3]; in tri_persp_coeff()
480 float mida = v[1] * setup->vmid[0][3]; in tri_persp_coeff()
481 float maxa = v[2] * setup->vmax[0][3]; in tri_persp_coeff()
484 float a = setup->ebot.dy * majda - botda * setup->emaj.dy; in tri_persp_coeff()
485 float b = setup->emaj.dx * botda - majda * setup->ebot.dx; in tri_persp_coeff()
486 float dadx = a * setup->oneoverarea; in tri_persp_coeff()
487 float dady = b * setup->oneoverarea; in tri_persp_coeff()
494 (dadx * (setup->vmin[0][0] - setup->pixel_offset) + in tri_persp_coeff()
495 dady * (setup->vmin[0][1] - setup->pixel_offset))); in tri_persp_coeff()
500 * Special coefficient setup for gl_FragCoord.
506 setup_fragcoord_coeff(struct setup_context *setup, uint slot) in setup_fragcoord_coeff() argument
508 const struct tgsi_shader_info *fsInfo = &setup->softpipe->fs_variant->info; in setup_fragcoord_coeff()
515 setup->coef[slot].a0[0] = pixel_center_integer ? 0.0f : 0.5f; in setup_fragcoord_coeff()
516 setup->coef[slot].dadx[0] = 1.0f; in setup_fragcoord_coeff()
517 setup->coef[slot].dady[0] = 0.0f; in setup_fragcoord_coeff()
519 setup->coef[slot].a0[1] = in setup_fragcoord_coeff()
520 (origin_lower_left ? setup->softpipe->framebuffer.height-1 : 0) in setup_fragcoord_coeff()
522 setup->coef[slot].dadx[1] = 0.0f; in setup_fragcoord_coeff()
523 setup->coef[slot].dady[1] = origin_lower_left ? -1.0f : 1.0f; in setup_fragcoord_coeff()
525 setup->coef[slot].a0[2] = setup->posCoef.a0[2]; in setup_fragcoord_coeff()
526 setup->coef[slot].dadx[2] = setup->posCoef.dadx[2]; in setup_fragcoord_coeff()
527 setup->coef[slot].dady[2] = setup->posCoef.dady[2]; in setup_fragcoord_coeff()
529 setup->coef[slot].a0[3] = setup->posCoef.a0[3]; in setup_fragcoord_coeff()
530 setup->coef[slot].dadx[3] = setup->posCoef.dadx[3]; in setup_fragcoord_coeff()
531 setup->coef[slot].dady[3] = setup->posCoef.dady[3]; in setup_fragcoord_coeff()
537 * Compute the setup->coef[] array dadx, dady, a0 values.
538 * Must be called after setup->vmin,vmid,vmax,vprovoke are initialized.
541 setup_tri_coefficients(struct setup_context *setup) in setup_tri_coefficients() argument
543 struct softpipe_context *softpipe = setup->softpipe; in setup_tri_coefficients()
544 const struct tgsi_shader_info *fsInfo = &setup->softpipe->fs_variant->info; in setup_tri_coefficients()
553 v[0] = setup->vmin[0][2]; in setup_tri_coefficients()
554 v[1] = setup->vmid[0][2]; in setup_tri_coefficients()
555 v[2] = setup->vmax[0][2]; in setup_tri_coefficients()
556 tri_linear_coeff(setup, &setup->posCoef, 2, v); in setup_tri_coefficients()
558 v[0] = setup->vmin[0][3]; in setup_tri_coefficients()
559 v[1] = setup->vmid[0][3]; in setup_tri_coefficients()
560 v[2] = setup->vmax[0][3]; in setup_tri_coefficients()
561 tri_linear_coeff(setup, &setup->posCoef, 3, v); in setup_tri_coefficients()
563 /* setup interpolation for all the remaining attributes: in setup_tri_coefficients()
572 const_coeff(setup, &setup->coef[fragSlot], vertSlot, j); in setup_tri_coefficients()
577 v[0] = setup->vmin[vertSlot][j]; in setup_tri_coefficients()
578 v[1] = setup->vmid[vertSlot][j]; in setup_tri_coefficients()
579 v[2] = setup->vmax[vertSlot][j]; in setup_tri_coefficients()
580 tri_linear_coeff(setup, &setup->coef[fragSlot], j, v); in setup_tri_coefficients()
585 v[0] = setup->vmin[vertSlot][j]; in setup_tri_coefficients()
586 v[1] = setup->vmid[vertSlot][j]; in setup_tri_coefficients()
587 v[2] = setup->vmax[vertSlot][j]; in setup_tri_coefficients()
588 tri_persp_coeff(setup, &setup->coef[fragSlot], j, v); in setup_tri_coefficients()
592 setup_fragcoord_coeff(setup, fragSlot); in setup_tri_coefficients()
600 setup->coef[fragSlot].a0[0] = setup->facing * -2.0f + 1.0f; in setup_tri_coefficients()
601 setup->coef[fragSlot].dadx[0] = 0.0; in setup_tri_coefficients()
602 setup->coef[fragSlot].dady[0] = 0.0; in setup_tri_coefficients()
609 setup->coef[fragSlot].a0[j], in setup_tri_coefficients()
610 setup->coef[fragSlot].dadx[j], in setup_tri_coefficients()
611 setup->coef[fragSlot].dady[j]); in setup_tri_coefficients()
619 setup_tri_edges(struct setup_context *setup) in setup_tri_edges() argument
621 float vmin_x = setup->vmin[0][0] + setup->pixel_offset; in setup_tri_edges()
622 float vmid_x = setup->vmid[0][0] + setup->pixel_offset; in setup_tri_edges()
624 float vmin_y = setup->vmin[0][1] - setup->pixel_offset; in setup_tri_edges()
625 float vmid_y = setup->vmid[0][1] - setup->pixel_offset; in setup_tri_edges()
626 float vmax_y = setup->vmax[0][1] - setup->pixel_offset; in setup_tri_edges()
628 setup->emaj.sy = ceilf(vmin_y); in setup_tri_edges()
629 setup->emaj.lines = (int) ceilf(vmax_y - setup->emaj.sy); in setup_tri_edges()
630 setup->emaj.dxdy = setup->emaj.dy ? setup->emaj.dx / setup->emaj.dy : .0f; in setup_tri_edges()
631 setup->emaj.sx = vmin_x + (setup->emaj.sy - vmin_y) * setup->emaj.dxdy; in setup_tri_edges()
633 setup->etop.sy = ceilf(vmid_y); in setup_tri_edges()
634 setup->etop.lines = (int) ceilf(vmax_y - setup->etop.sy); in setup_tri_edges()
635 setup->etop.dxdy = setup->etop.dy ? setup->etop.dx / setup->etop.dy : .0f; in setup_tri_edges()
636 setup->etop.sx = vmid_x + (setup->etop.sy - vmid_y) * setup->etop.dxdy; in setup_tri_edges()
638 setup->ebot.sy = ceilf(vmin_y); in setup_tri_edges()
639 setup->ebot.lines = (int) ceilf(vmid_y - setup->ebot.sy); in setup_tri_edges()
640 setup->ebot.dxdy = setup->ebot.dy ? setup->ebot.dx / setup->ebot.dy : .0f; in setup_tri_edges()
641 setup->ebot.sx = vmin_x + (setup->ebot.sy - vmin_y) * setup->ebot.dxdy; in setup_tri_edges()
650 subtriangle(struct setup_context *setup, in subtriangle() argument
656 const struct pipe_scissor_state *cliprect = &setup->softpipe->cliprect[viewport_index]; in subtriangle()
702 if (block(_y) != setup->span.y) { in subtriangle()
703 flush_spans(setup); in subtriangle()
704 setup->span.y = block(_y); in subtriangle()
707 setup->span.left[_y&1] = left; in subtriangle()
708 setup->span.right[_y&1] = right; in subtriangle()
744 * Do setup for triangle rasterization, then render the triangle.
747 sp_setup_tri(struct setup_context *setup, in sp_setup_tri() argument
756 debug_printf("Setup triangle:\n"); in sp_setup_tri()
757 print_vertex(setup, v0); in sp_setup_tri()
758 print_vertex(setup, v1); in sp_setup_tri()
759 print_vertex(setup, v2); in sp_setup_tri()
763 setup->softpipe->rasterizer->rasterizer_discard) in sp_setup_tri()
772 setup->numFragsEmitted = 0; in sp_setup_tri()
773 setup->numFragsWritten = 0; in sp_setup_tri()
776 if (!setup_sort_vertices( setup, det, v0, v1, v2 )) in sp_setup_tri()
779 setup_tri_coefficients( setup ); in sp_setup_tri()
780 setup_tri_edges( setup ); in sp_setup_tri()
782 assert(setup->softpipe->reduced_prim == PIPE_PRIM_TRIANGLES); in sp_setup_tri()
784 setup->span.y = 0; in sp_setup_tri()
785 setup->span.right[0] = 0; in sp_setup_tri()
786 setup->span.right[1] = 0; in sp_setup_tri()
787 /* setup->span.z_mode = tri_z_mode( setup->ctx ); */ in sp_setup_tri()
788 if (setup->softpipe->layer_slot > 0) { in sp_setup_tri()
789 layer = *(unsigned *)setup->vprovoke[setup->softpipe->layer_slot]; in sp_setup_tri()
790 layer = MIN2(layer, setup->max_layer); in sp_setup_tri()
792 setup->quad[0].input.layer = layer; in sp_setup_tri()
794 if (setup->softpipe->viewport_index_slot > 0) { in sp_setup_tri()
795 unsigned *udata = (unsigned*)v0[setup->softpipe->viewport_index_slot]; in sp_setup_tri()
798 setup->quad[0].input.viewport_index = viewport_index; in sp_setup_tri()
800 /* init_constant_attribs( setup ); */ in sp_setup_tri()
802 if (setup->oneoverarea < 0.0) { in sp_setup_tri()
805 subtriangle(setup, &setup->emaj, &setup->ebot, setup->ebot.lines, viewport_index); in sp_setup_tri()
806 subtriangle(setup, &setup->emaj, &setup->etop, setup->etop.lines, viewport_index); in sp_setup_tri()
811 subtriangle(setup, &setup->ebot, &setup->emaj, setup->ebot.lines, viewport_index); in sp_setup_tri()
812 subtriangle(setup, &setup->etop, &setup->emaj, setup->etop.lines, viewport_index); in sp_setup_tri()
815 flush_spans( setup ); in sp_setup_tri()
817 if (setup->softpipe->active_statistics_queries) { in sp_setup_tri()
818 setup->softpipe->pipeline_statistics.c_primitives++; in sp_setup_tri()
823 setup->numFragsEmitted, in sp_setup_tri()
824 setup->numFragsWritten); in sp_setup_tri()
835 line_linear_coeff(const struct setup_context *setup, in line_linear_coeff() argument
841 const float dadx = da * setup->emaj.dx * setup->oneoverarea; in line_linear_coeff()
842 const float dady = da * setup->emaj.dy * setup->oneoverarea; in line_linear_coeff()
846 (dadx * (setup->vmin[0][0] - setup->pixel_offset) + in line_linear_coeff()
847 dady * (setup->vmin[0][1] - setup->pixel_offset))); in line_linear_coeff()
857 line_persp_coeff(const struct setup_context *setup, in line_persp_coeff() argument
862 const float a0 = v[0] * setup->vmin[0][3]; in line_persp_coeff()
863 const float a1 = v[1] * setup->vmax[0][3]; in line_persp_coeff()
865 const float dadx = da * setup->emaj.dx * setup->oneoverarea; in line_persp_coeff()
866 const float dady = da * setup->emaj.dy * setup->oneoverarea; in line_persp_coeff()
870 (dadx * (setup->vmin[0][0] - setup->pixel_offset) + in line_persp_coeff()
871 dady * (setup->vmin[0][1] - setup->pixel_offset))); in line_persp_coeff()
876 * Compute the setup->coef[] array dadx, dady, a0 values.
877 * Must be called after setup->vmin,vmax are initialized.
880 setup_line_coefficients(struct setup_context *setup, in setup_line_coefficients() argument
884 struct softpipe_context *softpipe = setup->softpipe; in setup_line_coefficients()
885 const struct tgsi_shader_info *fsInfo = &setup->softpipe->fs_variant->info; in setup_line_coefficients()
893 /* use setup->vmin, vmax to point to vertices */ in setup_line_coefficients()
895 setup->vprovoke = v0; in setup_line_coefficients()
897 setup->vprovoke = v1; in setup_line_coefficients()
898 setup->vmin = v0; in setup_line_coefficients()
899 setup->vmax = v1; in setup_line_coefficients()
901 setup->emaj.dx = setup->vmax[0][0] - setup->vmin[0][0]; in setup_line_coefficients()
902 setup->emaj.dy = setup->vmax[0][1] - setup->vmin[0][1]; in setup_line_coefficients()
905 area = setup->emaj.dx * setup->emaj.dx + setup->emaj.dy * setup->emaj.dy; in setup_line_coefficients()
908 setup->oneoverarea = 1.0f / area; in setup_line_coefficients()
912 v[0] = setup->vmin[0][2]; in setup_line_coefficients()
913 v[1] = setup->vmax[0][2]; in setup_line_coefficients()
914 line_linear_coeff(setup, &setup->posCoef, 2, v); in setup_line_coefficients()
916 v[0] = setup->vmin[0][3]; in setup_line_coefficients()
917 v[1] = setup->vmax[0][3]; in setup_line_coefficients()
918 line_linear_coeff(setup, &setup->posCoef, 3, v); in setup_line_coefficients()
920 /* setup interpolation for all the remaining attributes: in setup_line_coefficients()
929 const_coeff(setup, &setup->coef[fragSlot], vertSlot, j); in setup_line_coefficients()
933 v[0] = setup->vmin[vertSlot][j]; in setup_line_coefficients()
934 v[1] = setup->vmax[vertSlot][j]; in setup_line_coefficients()
935 line_linear_coeff(setup, &setup->coef[fragSlot], j, v); in setup_line_coefficients()
940 v[0] = setup->vmin[vertSlot][j]; in setup_line_coefficients()
941 v[1] = setup->vmax[vertSlot][j]; in setup_line_coefficients()
942 line_persp_coeff(setup, &setup->coef[fragSlot], j, v); in setup_line_coefficients()
946 setup_fragcoord_coeff(setup, fragSlot); in setup_line_coefficients()
954 setup->coef[fragSlot].a0[0] = setup->facing * -2.0f + 1.0f; in setup_line_coefficients()
955 setup->coef[fragSlot].dadx[0] = 0.0; in setup_line_coefficients()
956 setup->coef[fragSlot].dady[0] = 0.0; in setup_line_coefficients()
967 plot(struct setup_context *setup, int x, int y) in plot() argument
975 if (quadX != setup->quad[0].input.x0 || in plot()
976 quadY != setup->quad[0].input.y0) in plot()
980 if (setup->quad[0].input.x0 != -1) in plot()
981 clip_emit_quad(setup, &setup->quad[0]); in plot()
983 setup->quad[0].input.x0 = quadX; in plot()
984 setup->quad[0].input.y0 = quadY; in plot()
985 setup->quad[0].inout.mask = 0x0; in plot()
988 setup->quad[0].inout.mask |= mask; in plot()
993 * Do setup for line rasterization, then render the line.
998 sp_setup_line(struct setup_context *setup, in sp_setup_line() argument
1013 debug_printf("Setup line:\n"); in sp_setup_line()
1014 print_vertex(setup, v0); in sp_setup_line()
1015 print_vertex(setup, v1); in sp_setup_line()
1019 setup->softpipe->rasterizer->rasterizer_discard) in sp_setup_line()
1025 if (!setup_line_coefficients(setup, v0, v1)) in sp_setup_line()
1051 assert(setup->softpipe->reduced_prim == PIPE_PRIM_LINES); in sp_setup_line()
1053 setup->quad[0].input.x0 = setup->quad[0].input.y0 = -1; in sp_setup_line()
1054 setup->quad[0].inout.mask = 0x0; in sp_setup_line()
1055 if (setup->softpipe->layer_slot > 0) { in sp_setup_line()
1056 layer = *(unsigned *)setup->vprovoke[setup->softpipe->layer_slot]; in sp_setup_line()
1057 layer = MIN2(layer, setup->max_layer); in sp_setup_line()
1059 setup->quad[0].input.layer = layer; in sp_setup_line()
1061 if (setup->softpipe->viewport_index_slot > 0) { in sp_setup_line()
1062 unsigned *udata = (unsigned*)setup->vprovoke[setup->softpipe->viewport_index_slot]; in sp_setup_line()
1065 setup->quad[0].input.viewport_index = viewport_index; in sp_setup_line()
1070 setup->quad[0].input.coverage[0] = in sp_setup_line()
1071 setup->quad[0].input.coverage[1] = in sp_setup_line()
1072 setup->quad[0].input.coverage[2] = in sp_setup_line()
1073 setup->quad[0].input.coverage[3] = 1.0; in sp_setup_line()
1083 plot(setup, x0, y0); in sp_setup_line()
1103 plot(setup, x0, y0); in sp_setup_line()
1117 if (setup->quad[0].inout.mask) { in sp_setup_line()
1118 clip_emit_quad(setup, &setup->quad[0]); in sp_setup_line()
1124 point_persp_coeff(const struct setup_context *setup, in point_persp_coeff() argument
1137 * Do setup for point rasterization, then render the point.
1142 sp_setup_point(struct setup_context *setup, in sp_setup_point() argument
1145 struct softpipe_context *softpipe = setup->softpipe; in sp_setup_point()
1146 const struct tgsi_shader_info *fsInfo = &setup->softpipe->fs_variant->info; in sp_setup_point()
1147 const int sizeAttr = setup->softpipe->psize_slot; in sp_setup_point()
1150 : setup->softpipe->rasterizer->point_size; in sp_setup_point()
1152 const boolean round = (boolean) setup->softpipe->rasterizer->point_smooth; in sp_setup_point()
1160 debug_printf("Setup point:\n"); in sp_setup_point()
1161 print_vertex(setup, v0); in sp_setup_point()
1167 setup->softpipe->rasterizer->rasterizer_discard) in sp_setup_point()
1170 assert(setup->softpipe->reduced_prim == PIPE_PRIM_POINTS); in sp_setup_point()
1172 if (setup->softpipe->layer_slot > 0) { in sp_setup_point()
1173 layer = *(unsigned *)v0[setup->softpipe->layer_slot]; in sp_setup_point()
1174 layer = MIN2(layer, setup->max_layer); in sp_setup_point()
1176 setup->quad[0].input.layer = layer; in sp_setup_point()
1178 if (setup->softpipe->viewport_index_slot > 0) { in sp_setup_point()
1179 unsigned *udata = (unsigned*)v0[setup->softpipe->viewport_index_slot]; in sp_setup_point()
1182 setup->quad[0].input.viewport_index = viewport_index; in sp_setup_point()
1185 * However, for point sprites, we'll need to setup texcoords appropriately. in sp_setup_point()
1200 setup->vprovoke = v0; in sp_setup_point()
1202 /* setup Z, W */ in sp_setup_point()
1203 const_coeff(setup, &setup->posCoef, 0, 2); in sp_setup_point()
1204 const_coeff(setup, &setup->posCoef, 0, 3); in sp_setup_point()
1215 const_coeff(setup, &setup->coef[fragSlot], vertSlot, j); in sp_setup_point()
1219 point_persp_coeff(setup, setup->vprovoke, in sp_setup_point()
1220 &setup->coef[fragSlot], vertSlot, j); in sp_setup_point()
1223 setup_fragcoord_coeff(setup, fragSlot); in sp_setup_point()
1231 setup->coef[fragSlot].a0[0] = setup->facing * -2.0f + 1.0f; in sp_setup_point()
1232 setup->coef[fragSlot].dadx[0] = 0.0; in sp_setup_point()
1233 setup->coef[fragSlot].dady[0] = 0.0; in sp_setup_point()
1242 setup->quad[0].input.x0 = (int) x - ix; in sp_setup_point()
1243 setup->quad[0].input.y0 = (int) y - iy; in sp_setup_point()
1244 setup->quad[0].inout.mask = (1 << ix) << (2 * iy); in sp_setup_point()
1245 clip_emit_quad(setup, &setup->quad[0]); in sp_setup_point()
1265 setup->quad[0].inout.mask = 0x0; in sp_setup_point()
1272 setup->quad[0].input.coverage[QUAD_TOP_LEFT] = MIN2(cover, 1.0f); in sp_setup_point()
1273 setup->quad[0].inout.mask |= MASK_TOP_LEFT; in sp_setup_point()
1281 setup->quad[0].input.coverage[QUAD_TOP_RIGHT] = MIN2(cover, 1.0f); in sp_setup_point()
1282 setup->quad[0].inout.mask |= MASK_TOP_RIGHT; in sp_setup_point()
1290 setup->quad[0].input.coverage[QUAD_BOTTOM_LEFT] = MIN2(cover, 1.0f); in sp_setup_point()
1291 setup->quad[0].inout.mask |= MASK_BOTTOM_LEFT; in sp_setup_point()
1299 setup->quad[0].input.coverage[QUAD_BOTTOM_RIGHT] = MIN2(cover, 1.0f); in sp_setup_point()
1300 setup->quad[0].inout.mask |= MASK_BOTTOM_RIGHT; in sp_setup_point()
1303 if (setup->quad[0].inout.mask) { in sp_setup_point()
1304 setup->quad[0].input.x0 = ix; in sp_setup_point()
1305 setup->quad[0].input.y0 = iy; in sp_setup_point()
1306 clip_emit_quad(setup, &setup->quad[0]); in sp_setup_point()
1350 setup->quad[0].inout.mask = mask; in sp_setup_point()
1351 setup->quad[0].input.x0 = ix; in sp_setup_point()
1352 setup->quad[0].input.y0 = iy; in sp_setup_point()
1353 clip_emit_quad(setup, &setup->quad[0]); in sp_setup_point()
1365 sp_setup_prepare(struct setup_context *setup) in sp_setup_prepare() argument
1367 struct softpipe_context *sp = setup->softpipe; in sp_setup_prepare()
1375 setup->nr_vertex_attrs = draw_num_shader_outputs(sp->draw); in sp_setup_prepare()
1383 for (i = 0; i < setup->softpipe->framebuffer.nr_cbufs; i++) { in sp_setup_prepare()
1384 struct pipe_surface *cbuf = setup->softpipe->framebuffer.cbufs[i]; in sp_setup_prepare()
1396 if (setup->softpipe->rasterizer->half_pixel_center) { in sp_setup_prepare()
1397 setup->pixel_offset = 0.5f; in sp_setup_prepare()
1399 setup->pixel_offset = 0.0f; in sp_setup_prepare()
1402 setup->max_layer = max_layer; in sp_setup_prepare()
1410 setup->cull_face = sp->rasterizer->cull_face; in sp_setup_prepare()
1414 setup->cull_face = PIPE_FACE_NONE; in sp_setup_prepare()
1420 sp_setup_destroy_context(struct setup_context *setup) in sp_setup_destroy_context() argument
1422 FREE( setup ); in sp_setup_destroy_context()
1427 * Create a new primitive setup/render stage.
1432 struct setup_context *setup = CALLOC_STRUCT(setup_context); in sp_setup_create_context() local
1435 setup->softpipe = softpipe; in sp_setup_create_context()
1438 setup->quad[i].coef = setup->coef; in sp_setup_create_context()
1439 setup->quad[i].posCoef = &setup->posCoef; in sp_setup_create_context()
1442 setup->span.left[0] = 1000000; /* greater than right[0] */ in sp_setup_create_context()
1443 setup->span.left[1] = 1000000; /* greater than right[1] */ in sp_setup_create_context()
1445 return setup; in sp_setup_create_context()