• Home
  • Raw
  • Download

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()
447 * The result will be put into setup->coef[slot].a0[i].
452 const_coeff(struct setup_context *setup, in const_coeff() argument
463 coef->a0[i] = setup->vprovoke[vertSlot][i]; in const_coeff()
473 tri_linear_coeff(struct setup_context *setup, in tri_linear_coeff() argument
480 float a = setup->ebot.dy * majda - botda * setup->emaj.dy; in tri_linear_coeff()
481 float b = setup->emaj.dx * botda - majda * setup->ebot.dx; in tri_linear_coeff()
482 float dadx = a * setup->oneoverarea; in tri_linear_coeff()
483 float dady = b * setup->oneoverarea; in tri_linear_coeff()
503 (dadx * (setup->vmin[0][0] - setup->pixel_offset) + in tri_linear_coeff()
504 dady * (setup->vmin[0][1] - setup->pixel_offset))); in tri_linear_coeff()
518 tri_persp_coeff(struct setup_context *setup, in tri_persp_coeff() argument
525 float mina = v[0] * setup->vmin[0][3]; in tri_persp_coeff()
526 float mida = v[1] * setup->vmid[0][3]; in tri_persp_coeff()
527 float maxa = v[2] * setup->vmax[0][3]; in tri_persp_coeff()
530 float a = setup->ebot.dy * majda - botda * setup->emaj.dy; in tri_persp_coeff()
531 float b = setup->emaj.dx * botda - majda * setup->ebot.dx; in tri_persp_coeff()
532 float dadx = a * setup->oneoverarea; in tri_persp_coeff()
533 float dady = b * setup->oneoverarea; in tri_persp_coeff()
540 (dadx * (setup->vmin[0][0] - setup->pixel_offset) + in tri_persp_coeff()
541 dady * (setup->vmin[0][1] - setup->pixel_offset))); in tri_persp_coeff()
546 * Special coefficient setup for gl_FragCoord.
552 setup_fragcoord_coeff(struct setup_context *setup, uint slot) in setup_fragcoord_coeff() argument
554 const struct tgsi_shader_info *fsInfo = &setup->softpipe->fs_variant->info; in setup_fragcoord_coeff()
561 setup->coef[slot].a0[0] = pixel_center_integer ? 0.0f : 0.5f; in setup_fragcoord_coeff()
562 setup->coef[slot].dadx[0] = 1.0f; in setup_fragcoord_coeff()
563 setup->coef[slot].dady[0] = 0.0f; in setup_fragcoord_coeff()
565 setup->coef[slot].a0[1] = in setup_fragcoord_coeff()
566 (origin_lower_left ? setup->softpipe->framebuffer.height-1 : 0) in setup_fragcoord_coeff()
568 setup->coef[slot].dadx[1] = 0.0f; in setup_fragcoord_coeff()
569 setup->coef[slot].dady[1] = origin_lower_left ? -1.0f : 1.0f; in setup_fragcoord_coeff()
571 setup->coef[slot].a0[2] = setup->posCoef.a0[2]; in setup_fragcoord_coeff()
572 setup->coef[slot].dadx[2] = setup->posCoef.dadx[2]; in setup_fragcoord_coeff()
573 setup->coef[slot].dady[2] = setup->posCoef.dady[2]; in setup_fragcoord_coeff()
575 setup->coef[slot].a0[3] = setup->posCoef.a0[3]; in setup_fragcoord_coeff()
576 setup->coef[slot].dadx[3] = setup->posCoef.dadx[3]; in setup_fragcoord_coeff()
577 setup->coef[slot].dady[3] = setup->posCoef.dady[3]; in setup_fragcoord_coeff()
583 * Compute the setup->coef[] array dadx, dady, a0 values.
584 * Must be called after setup->vmin,vmid,vmax,vprovoke are initialized.
587 setup_tri_coefficients(struct setup_context *setup) in setup_tri_coefficients() argument
589 struct softpipe_context *softpipe = setup->softpipe; in setup_tri_coefficients()
590 const struct tgsi_shader_info *fsInfo = &setup->softpipe->fs_variant->info; in setup_tri_coefficients()
599 v[0] = setup->vmin[0][2]; in setup_tri_coefficients()
600 v[1] = setup->vmid[0][2]; in setup_tri_coefficients()
601 v[2] = setup->vmax[0][2]; in setup_tri_coefficients()
602 tri_linear_coeff(setup, &setup->posCoef, 2, v); in setup_tri_coefficients()
604 v[0] = setup->vmin[0][3]; in setup_tri_coefficients()
605 v[1] = setup->vmid[0][3]; in setup_tri_coefficients()
606 v[2] = setup->vmax[0][3]; in setup_tri_coefficients()
607 tri_linear_coeff(setup, &setup->posCoef, 3, v); in setup_tri_coefficients()
609 /* setup interpolation for all the remaining attributes: in setup_tri_coefficients()
618 const_coeff(setup, &setup->coef[fragSlot], vertSlot, j); in setup_tri_coefficients()
623 tri_apply_cylindrical_wrap(setup->vmin[vertSlot][j], in setup_tri_coefficients()
624 setup->vmid[vertSlot][j], in setup_tri_coefficients()
625 setup->vmax[vertSlot][j], in setup_tri_coefficients()
628 tri_linear_coeff(setup, &setup->coef[fragSlot], j, v); in setup_tri_coefficients()
633 tri_apply_cylindrical_wrap(setup->vmin[vertSlot][j], in setup_tri_coefficients()
634 setup->vmid[vertSlot][j], in setup_tri_coefficients()
635 setup->vmax[vertSlot][j], in setup_tri_coefficients()
638 tri_persp_coeff(setup, &setup->coef[fragSlot], j, v); in setup_tri_coefficients()
642 setup_fragcoord_coeff(setup, fragSlot); in setup_tri_coefficients()
650 setup->coef[fragSlot].a0[0] = setup->facing * -2.0f + 1.0f; in setup_tri_coefficients()
651 setup->coef[fragSlot].dadx[0] = 0.0; in setup_tri_coefficients()
652 setup->coef[fragSlot].dady[0] = 0.0; in setup_tri_coefficients()
659 setup->coef[fragSlot].a0[j], in setup_tri_coefficients()
660 setup->coef[fragSlot].dadx[j], in setup_tri_coefficients()
661 setup->coef[fragSlot].dady[j]); in setup_tri_coefficients()
669 setup_tri_edges(struct setup_context *setup) in setup_tri_edges() argument
671 float vmin_x = setup->vmin[0][0] + setup->pixel_offset; in setup_tri_edges()
672 float vmid_x = setup->vmid[0][0] + setup->pixel_offset; in setup_tri_edges()
674 float vmin_y = setup->vmin[0][1] - setup->pixel_offset; in setup_tri_edges()
675 float vmid_y = setup->vmid[0][1] - setup->pixel_offset; in setup_tri_edges()
676 float vmax_y = setup->vmax[0][1] - setup->pixel_offset; in setup_tri_edges()
678 setup->emaj.sy = ceilf(vmin_y); in setup_tri_edges()
679 setup->emaj.lines = (int) ceilf(vmax_y - setup->emaj.sy); in setup_tri_edges()
680 setup->emaj.dxdy = setup->emaj.dy ? setup->emaj.dx / setup->emaj.dy : .0f; in setup_tri_edges()
681 setup->emaj.sx = vmin_x + (setup->emaj.sy - vmin_y) * setup->emaj.dxdy; in setup_tri_edges()
683 setup->etop.sy = ceilf(vmid_y); in setup_tri_edges()
684 setup->etop.lines = (int) ceilf(vmax_y - setup->etop.sy); in setup_tri_edges()
685 setup->etop.dxdy = setup->etop.dy ? setup->etop.dx / setup->etop.dy : .0f; in setup_tri_edges()
686 setup->etop.sx = vmid_x + (setup->etop.sy - vmid_y) * setup->etop.dxdy; in setup_tri_edges()
688 setup->ebot.sy = ceilf(vmin_y); in setup_tri_edges()
689 setup->ebot.lines = (int) ceilf(vmid_y - setup->ebot.sy); in setup_tri_edges()
690 setup->ebot.dxdy = setup->ebot.dy ? setup->ebot.dx / setup->ebot.dy : .0f; in setup_tri_edges()
691 setup->ebot.sx = vmin_x + (setup->ebot.sy - vmin_y) * setup->ebot.dxdy; in setup_tri_edges()
700 subtriangle(struct setup_context *setup, in subtriangle() argument
706 const struct pipe_scissor_state *cliprect = &setup->softpipe->cliprect[viewport_index]; in subtriangle()
752 if (block(_y) != setup->span.y) { in subtriangle()
753 flush_spans(setup); in subtriangle()
754 setup->span.y = block(_y); in subtriangle()
757 setup->span.left[_y&1] = left; in subtriangle()
758 setup->span.right[_y&1] = right; in subtriangle()
794 * Do setup for triangle rasterization, then render the triangle.
797 sp_setup_tri(struct setup_context *setup, in sp_setup_tri() argument
806 debug_printf("Setup triangle:\n"); in sp_setup_tri()
807 print_vertex(setup, v0); in sp_setup_tri()
808 print_vertex(setup, v1); in sp_setup_tri()
809 print_vertex(setup, v2); in sp_setup_tri()
813 setup->softpipe->rasterizer->rasterizer_discard) in sp_setup_tri()
822 setup->numFragsEmitted = 0; in sp_setup_tri()
823 setup->numFragsWritten = 0; in sp_setup_tri()
826 if (!setup_sort_vertices( setup, det, v0, v1, v2 )) in sp_setup_tri()
829 setup_tri_coefficients( setup ); in sp_setup_tri()
830 setup_tri_edges( setup ); in sp_setup_tri()
832 assert(setup->softpipe->reduced_prim == PIPE_PRIM_TRIANGLES); in sp_setup_tri()
834 setup->span.y = 0; in sp_setup_tri()
835 setup->span.right[0] = 0; in sp_setup_tri()
836 setup->span.right[1] = 0; in sp_setup_tri()
837 /* setup->span.z_mode = tri_z_mode( setup->ctx ); */ in sp_setup_tri()
838 if (setup->softpipe->layer_slot > 0) { in sp_setup_tri()
839 layer = *(unsigned *)setup->vprovoke[setup->softpipe->layer_slot]; in sp_setup_tri()
840 layer = MIN2(layer, setup->max_layer); in sp_setup_tri()
842 setup->quad[0].input.layer = layer; in sp_setup_tri()
844 if (setup->softpipe->viewport_index_slot > 0) { in sp_setup_tri()
845 unsigned *udata = (unsigned*)v0[setup->softpipe->viewport_index_slot]; in sp_setup_tri()
848 setup->quad[0].input.viewport_index = viewport_index; in sp_setup_tri()
850 /* init_constant_attribs( setup ); */ in sp_setup_tri()
852 if (setup->oneoverarea < 0.0) { in sp_setup_tri()
855 subtriangle(setup, &setup->emaj, &setup->ebot, setup->ebot.lines, viewport_index); in sp_setup_tri()
856 subtriangle(setup, &setup->emaj, &setup->etop, setup->etop.lines, viewport_index); in sp_setup_tri()
861 subtriangle(setup, &setup->ebot, &setup->emaj, setup->ebot.lines, viewport_index); in sp_setup_tri()
862 subtriangle(setup, &setup->etop, &setup->emaj, setup->etop.lines, viewport_index); in sp_setup_tri()
865 flush_spans( setup ); in sp_setup_tri()
867 if (setup->softpipe->active_statistics_queries) { in sp_setup_tri()
868 setup->softpipe->pipeline_statistics.c_primitives++; in sp_setup_tri()
873 setup->numFragsEmitted, in sp_setup_tri()
874 setup->numFragsWritten); in sp_setup_tri()
911 line_linear_coeff(const struct setup_context *setup, in line_linear_coeff() argument
917 const float dadx = da * setup->emaj.dx * setup->oneoverarea; in line_linear_coeff()
918 const float dady = da * setup->emaj.dy * setup->oneoverarea; in line_linear_coeff()
922 (dadx * (setup->vmin[0][0] - setup->pixel_offset) + in line_linear_coeff()
923 dady * (setup->vmin[0][1] - setup->pixel_offset))); in line_linear_coeff()
933 line_persp_coeff(const struct setup_context *setup, in line_persp_coeff() argument
938 const float a0 = v[0] * setup->vmin[0][3]; in line_persp_coeff()
939 const float a1 = v[1] * setup->vmax[0][3]; in line_persp_coeff()
941 const float dadx = da * setup->emaj.dx * setup->oneoverarea; in line_persp_coeff()
942 const float dady = da * setup->emaj.dy * setup->oneoverarea; in line_persp_coeff()
946 (dadx * (setup->vmin[0][0] - setup->pixel_offset) + in line_persp_coeff()
947 dady * (setup->vmin[0][1] - setup->pixel_offset))); in line_persp_coeff()
952 * Compute the setup->coef[] array dadx, dady, a0 values.
953 * Must be called after setup->vmin,vmax are initialized.
956 setup_line_coefficients(struct setup_context *setup, in setup_line_coefficients() argument
960 struct softpipe_context *softpipe = setup->softpipe; in setup_line_coefficients()
961 const struct tgsi_shader_info *fsInfo = &setup->softpipe->fs_variant->info; in setup_line_coefficients()
969 /* use setup->vmin, vmax to point to vertices */ in setup_line_coefficients()
971 setup->vprovoke = v0; in setup_line_coefficients()
973 setup->vprovoke = v1; in setup_line_coefficients()
974 setup->vmin = v0; in setup_line_coefficients()
975 setup->vmax = v1; in setup_line_coefficients()
977 setup->emaj.dx = setup->vmax[0][0] - setup->vmin[0][0]; in setup_line_coefficients()
978 setup->emaj.dy = setup->vmax[0][1] - setup->vmin[0][1]; in setup_line_coefficients()
981 area = setup->emaj.dx * setup->emaj.dx + setup->emaj.dy * setup->emaj.dy; in setup_line_coefficients()
984 setup->oneoverarea = 1.0f / area; in setup_line_coefficients()
988 v[0] = setup->vmin[0][2]; in setup_line_coefficients()
989 v[1] = setup->vmax[0][2]; in setup_line_coefficients()
990 line_linear_coeff(setup, &setup->posCoef, 2, v); in setup_line_coefficients()
992 v[0] = setup->vmin[0][3]; in setup_line_coefficients()
993 v[1] = setup->vmax[0][3]; in setup_line_coefficients()
994 line_linear_coeff(setup, &setup->posCoef, 3, v); in setup_line_coefficients()
996 /* setup interpolation for all the remaining attributes: in setup_line_coefficients()
1005 const_coeff(setup, &setup->coef[fragSlot], vertSlot, j); in setup_line_coefficients()
1009 line_apply_cylindrical_wrap(setup->vmin[vertSlot][j], in setup_line_coefficients()
1010 setup->vmax[vertSlot][j], in setup_line_coefficients()
1013 line_linear_coeff(setup, &setup->coef[fragSlot], j, v); in setup_line_coefficients()
1018 line_apply_cylindrical_wrap(setup->vmin[vertSlot][j], in setup_line_coefficients()
1019 setup->vmax[vertSlot][j], in setup_line_coefficients()
1022 line_persp_coeff(setup, &setup->coef[fragSlot], j, v); in setup_line_coefficients()
1026 setup_fragcoord_coeff(setup, fragSlot); in setup_line_coefficients()
1034 setup->coef[fragSlot].a0[0] = setup->facing * -2.0f + 1.0f; in setup_line_coefficients()
1035 setup->coef[fragSlot].dadx[0] = 0.0; in setup_line_coefficients()
1036 setup->coef[fragSlot].dady[0] = 0.0; in setup_line_coefficients()
1047 plot(struct setup_context *setup, int x, int y) in plot() argument
1055 if (quadX != setup->quad[0].input.x0 || in plot()
1056 quadY != setup->quad[0].input.y0) in plot()
1060 if (setup->quad[0].input.x0 != -1) in plot()
1061 clip_emit_quad(setup, &setup->quad[0]); in plot()
1063 setup->quad[0].input.x0 = quadX; in plot()
1064 setup->quad[0].input.y0 = quadY; in plot()
1065 setup->quad[0].inout.mask = 0x0; in plot()
1068 setup->quad[0].inout.mask |= mask; in plot()
1073 * Do setup for line rasterization, then render the line.
1078 sp_setup_line(struct setup_context *setup, in sp_setup_line() argument
1093 debug_printf("Setup line:\n"); in sp_setup_line()
1094 print_vertex(setup, v0); in sp_setup_line()
1095 print_vertex(setup, v1); in sp_setup_line()
1099 setup->softpipe->rasterizer->rasterizer_discard) in sp_setup_line()
1105 if (!setup_line_coefficients(setup, v0, v1)) in sp_setup_line()
1131 assert(setup->softpipe->reduced_prim == PIPE_PRIM_LINES); in sp_setup_line()
1133 setup->quad[0].input.x0 = setup->quad[0].input.y0 = -1; in sp_setup_line()
1134 setup->quad[0].inout.mask = 0x0; in sp_setup_line()
1135 if (setup->softpipe->layer_slot > 0) { in sp_setup_line()
1136 layer = *(unsigned *)setup->vprovoke[setup->softpipe->layer_slot]; in sp_setup_line()
1137 layer = MIN2(layer, setup->max_layer); in sp_setup_line()
1139 setup->quad[0].input.layer = layer; in sp_setup_line()
1141 if (setup->softpipe->viewport_index_slot > 0) { in sp_setup_line()
1142 unsigned *udata = (unsigned*)setup->vprovoke[setup->softpipe->viewport_index_slot]; in sp_setup_line()
1145 setup->quad[0].input.viewport_index = viewport_index; in sp_setup_line()
1150 setup->quad[0].input.coverage[0] = in sp_setup_line()
1151 setup->quad[0].input.coverage[1] = in sp_setup_line()
1152 setup->quad[0].input.coverage[2] = in sp_setup_line()
1153 setup->quad[0].input.coverage[3] = 1.0; in sp_setup_line()
1163 plot(setup, x0, y0); in sp_setup_line()
1183 plot(setup, x0, y0); in sp_setup_line()
1197 if (setup->quad[0].inout.mask) { in sp_setup_line()
1198 clip_emit_quad(setup, &setup->quad[0]); in sp_setup_line()
1204 point_persp_coeff(const struct setup_context *setup, in point_persp_coeff() argument
1217 * Do setup for point rasterization, then render the point.
1222 sp_setup_point(struct setup_context *setup, in sp_setup_point() argument
1225 struct softpipe_context *softpipe = setup->softpipe; in sp_setup_point()
1226 const struct tgsi_shader_info *fsInfo = &setup->softpipe->fs_variant->info; in sp_setup_point()
1227 const int sizeAttr = setup->softpipe->psize_slot; in sp_setup_point()
1230 : setup->softpipe->rasterizer->point_size; in sp_setup_point()
1232 const boolean round = (boolean) setup->softpipe->rasterizer->point_smooth; in sp_setup_point()
1240 debug_printf("Setup point:\n"); in sp_setup_point()
1241 print_vertex(setup, v0); in sp_setup_point()
1247 setup->softpipe->rasterizer->rasterizer_discard) in sp_setup_point()
1250 assert(setup->softpipe->reduced_prim == PIPE_PRIM_POINTS); in sp_setup_point()
1252 if (setup->softpipe->layer_slot > 0) { in sp_setup_point()
1253 layer = *(unsigned *)v0[setup->softpipe->layer_slot]; in sp_setup_point()
1254 layer = MIN2(layer, setup->max_layer); in sp_setup_point()
1256 setup->quad[0].input.layer = layer; in sp_setup_point()
1258 if (setup->softpipe->viewport_index_slot > 0) { in sp_setup_point()
1259 unsigned *udata = (unsigned*)v0[setup->softpipe->viewport_index_slot]; in sp_setup_point()
1262 setup->quad[0].input.viewport_index = viewport_index; in sp_setup_point()
1265 * However, for point sprites, we'll need to setup texcoords appropriately. in sp_setup_point()
1280 setup->vprovoke = v0; in sp_setup_point()
1282 /* setup Z, W */ in sp_setup_point()
1283 const_coeff(setup, &setup->posCoef, 0, 2); in sp_setup_point()
1284 const_coeff(setup, &setup->posCoef, 0, 3); in sp_setup_point()
1295 const_coeff(setup, &setup->coef[fragSlot], vertSlot, j); in sp_setup_point()
1299 point_persp_coeff(setup, setup->vprovoke, in sp_setup_point()
1300 &setup->coef[fragSlot], vertSlot, j); in sp_setup_point()
1303 setup_fragcoord_coeff(setup, fragSlot); in sp_setup_point()
1311 setup->coef[fragSlot].a0[0] = setup->facing * -2.0f + 1.0f; in sp_setup_point()
1312 setup->coef[fragSlot].dadx[0] = 0.0; in sp_setup_point()
1313 setup->coef[fragSlot].dady[0] = 0.0; in sp_setup_point()
1322 setup->quad[0].input.x0 = (int) x - ix; in sp_setup_point()
1323 setup->quad[0].input.y0 = (int) y - iy; in sp_setup_point()
1324 setup->quad[0].inout.mask = (1 << ix) << (2 * iy); in sp_setup_point()
1325 clip_emit_quad(setup, &setup->quad[0]); in sp_setup_point()
1345 setup->quad[0].inout.mask = 0x0; in sp_setup_point()
1352 setup->quad[0].input.coverage[QUAD_TOP_LEFT] = MIN2(cover, 1.0f); in sp_setup_point()
1353 setup->quad[0].inout.mask |= MASK_TOP_LEFT; in sp_setup_point()
1361 setup->quad[0].input.coverage[QUAD_TOP_RIGHT] = MIN2(cover, 1.0f); in sp_setup_point()
1362 setup->quad[0].inout.mask |= MASK_TOP_RIGHT; in sp_setup_point()
1370 setup->quad[0].input.coverage[QUAD_BOTTOM_LEFT] = MIN2(cover, 1.0f); in sp_setup_point()
1371 setup->quad[0].inout.mask |= MASK_BOTTOM_LEFT; in sp_setup_point()
1379 setup->quad[0].input.coverage[QUAD_BOTTOM_RIGHT] = MIN2(cover, 1.0f); in sp_setup_point()
1380 setup->quad[0].inout.mask |= MASK_BOTTOM_RIGHT; in sp_setup_point()
1383 if (setup->quad[0].inout.mask) { in sp_setup_point()
1384 setup->quad[0].input.x0 = ix; in sp_setup_point()
1385 setup->quad[0].input.y0 = iy; in sp_setup_point()
1386 clip_emit_quad(setup, &setup->quad[0]); in sp_setup_point()
1430 setup->quad[0].inout.mask = mask; in sp_setup_point()
1431 setup->quad[0].input.x0 = ix; in sp_setup_point()
1432 setup->quad[0].input.y0 = iy; in sp_setup_point()
1433 clip_emit_quad(setup, &setup->quad[0]); in sp_setup_point()
1445 sp_setup_prepare(struct setup_context *setup) in sp_setup_prepare() argument
1447 struct softpipe_context *sp = setup->softpipe; in sp_setup_prepare()
1455 setup->nr_vertex_attrs = draw_num_shader_outputs(sp->draw); in sp_setup_prepare()
1463 for (i = 0; i < setup->softpipe->framebuffer.nr_cbufs; i++) { in sp_setup_prepare()
1464 struct pipe_surface *cbuf = setup->softpipe->framebuffer.cbufs[i]; in sp_setup_prepare()
1476 if (setup->softpipe->rasterizer->half_pixel_center) { in sp_setup_prepare()
1477 setup->pixel_offset = 0.5f; in sp_setup_prepare()
1479 setup->pixel_offset = 0.0f; in sp_setup_prepare()
1482 setup->max_layer = max_layer; in sp_setup_prepare()
1490 setup->cull_face = sp->rasterizer->cull_face; in sp_setup_prepare()
1494 setup->cull_face = PIPE_FACE_NONE; in sp_setup_prepare()
1500 sp_setup_destroy_context(struct setup_context *setup) in sp_setup_destroy_context() argument
1502 FREE( setup ); in sp_setup_destroy_context()
1507 * Create a new primitive setup/render stage.
1512 struct setup_context *setup = CALLOC_STRUCT(setup_context); in sp_setup_create_context() local
1515 setup->softpipe = softpipe; in sp_setup_create_context()
1518 setup->quad[i].coef = setup->coef; in sp_setup_create_context()
1519 setup->quad[i].posCoef = &setup->posCoef; in sp_setup_create_context()
1522 setup->span.left[0] = 1000000; /* greater than right[0] */ in sp_setup_create_context()
1523 setup->span.left[1] = 1000000; /* greater than right[1] */ in sp_setup_create_context()
1525 return setup; in sp_setup_create_context()