Lines Matching defs:draw
27 #include "draw/draw_context.h"
28 #include "draw/draw_vbuf.h"
334 * The HWTCL draw functions. *
339 const struct pipe_draw_start_count_bias *draw)
349 /* The number of dwords for this draw operation. */
350 unsigned dwords = 4 + draw->count * vertex_size;
381 map[vbi] += (vbuf->buffer_offset / 4) + stride[i] * draw->start;
386 r300_emit_draw_init(r300, info->mode, draw->count-1);
390 OUT_CS_PKT3(R300_PACKET3_3D_DRAW_IMMD_2, draw->count * vertex_size);
391 OUT_CS(R300_VAP_VF_CNTL__PRIM_WALK_VERTEX_EMBEDDED | (draw->count << 16) |
395 for (v = 0; v < draw->count; v++) {
503 const struct pipe_draw_start_count_bias *draw)
509 unsigned i, count_dwords = index_size == 4 ? draw->count :
510 (draw->count + 1) / 2;
516 PREP_INDEXED, NULL, 2+count_dwords, 0, draw->index_bias, -1))
527 ptr1 += draw->start;
529 OUT_CS(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (draw->count << 16) |
532 if (draw->index_bias && !r300->screen->caps.is_r500) {
533 for (i = 0; i < draw->count-1; i += 2)
534 OUT_CS(((ptr1[i+1] + draw->index_bias) << 16) |
535 (ptr1[i] + draw->index_bias));
537 if (draw->count & 1)
538 OUT_CS(ptr1[i] + draw->index_bias);
540 for (i = 0; i < draw->count-1; i += 2)
544 if (draw->count & 1)
551 ptr2 += draw->start;
553 OUT_CS(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (draw->count << 16) |
556 if (draw->index_bias && !r300->screen->caps.is_r500) {
557 for (i = 0; i < draw->count-1; i += 2)
558 OUT_CS(((ptr2[i+1] + draw->index_bias) << 16) |
559 (ptr2[i] + draw->index_bias));
561 if (draw->count & 1)
562 OUT_CS(ptr2[i] + draw->index_bias);
570 ptr4 += draw->start;
572 OUT_CS(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (draw->count << 16) |
576 if (draw->index_bias && !r300->screen->caps.is_r500) {
577 for (i = 0; i < draw->count; i++)
578 OUT_CS(ptr4[i] + draw->index_bias);
589 const struct pipe_draw_start_count_bias *draw,
596 unsigned start = draw->start;
597 unsigned count = draw->count;
604 if (draw->index_bias && !r300->screen->caps.is_r500) {
605 r300_split_index_bias(r300, draw->index_bias, &buffer_offset,
639 PREP_INDEXED, indexBuffer, 19, buffer_offset, draw->index_bias,
666 indexBuffer, 19, buffer_offset, draw->index_bias,
681 const struct pipe_draw_start_count_bias *draw,
685 draw->count > 65536;
686 unsigned start = draw->start;
687 unsigned count = draw->count;
723 const struct pipe_draw_start_count_bias *draw)
728 r300_draw_arrays(r300, info, draw, i);
733 const struct pipe_draw_start_count_bias *draw)
738 r300_draw_elements(r300, info, draw, i);
804 struct pipe_draw_start_count_bias draw = draws[0];
807 !u_trim_pipe_prim(info.mode, &draw.count)) {
819 /* Skip draw if we failed to compile the vertex shader. */
828 fprintf(stderr, "r300: Skipping a draw command. There is a buffer "
841 if (draw.count <= 8 && info.has_user_indices) {
842 r300_draw_elements_immediate(r300, &info, &draw);
844 r300_draw_elements(r300, &info, &draw, -1);
847 r300_draw_elements_instanced(r300, &info, &draw);
851 if (immd_is_good_idea(r300, draw.count)) {
852 r300_draw_arrays_immediate(r300, &info, &draw);
854 r300_draw_arrays(r300, &info, &draw, -1);
857 r300_draw_arrays_instanced(r300, &info, &draw);
881 struct pipe_draw_start_count_bias draw = draws[0];
887 if (!u_trim_pipe_prim(info->mode, &draw.count))
891 draw_set_indexes(r300->draw,
906 draw_vbo(r300->draw, info, drawid_offset, NULL, &draw, 1, 0);
907 draw_flush(r300->draw);
1139 stage = draw_vbuf_stage(r300->draw, render);
1146 draw_set_render(r300->draw, render);
1155 /* This functions is used to draw a rectangle for the blitter module.
1174 type == UTIL_BLITTER_ATTRIB_COLOR || !r300->draw ? 8 : 4;
1263 /* Set draw functions based on presence of HW TCL. */