sna/gen2: Precompute floats-per-rect

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2011-10-17 23:34:19 +01:00
parent 729f1ec786
commit b2d842df5e
1 changed files with 9 additions and 2 deletions

View File

@ -899,7 +899,7 @@ inline static int gen2_get_rectangles(struct sna *sna,
assert(op->floats_per_vertex);
need = 1;
size = 3*op->floats_per_vertex;
size = op->floats_per_rect;
if (op->need_magic_ca_pass)
need += 6 + size*sna->render.vertex_index, size *= 2;
@ -929,7 +929,7 @@ inline static int gen2_get_rectangles(struct sna *sna,
want = rem / size;
assert(want);
sna->render.vertex_index += 3*want*op->floats_per_vertex;
sna->render.vertex_index += want*op->floats_per_rect;
return want;
}
@ -1348,6 +1348,7 @@ gen2_render_composite(struct sna *sna,
tmp->floats_per_vertex += tmp->src.is_affine ? 2 : 3;
if (tmp->mask.bo)
tmp->floats_per_vertex += tmp->mask.is_affine ? 2 : 3;
tmp->floats_per_rect = 3*tmp->floats_per_vertex;
tmp->prim_emit = gen2_emit_composite_primitive;
if (tmp->mask.bo) {
@ -1756,6 +1757,7 @@ gen2_render_composite_spans(struct sna *sna,
}
}
}
tmp->base.floats_per_rect = 3*tmp->base.floats_per_vertex;
tmp->box = gen2_render_composite_spans_box;
tmp->boxes = gen2_render_composite_spans_boxes;
@ -1954,6 +1956,7 @@ gen2_render_fill_boxes(struct sna *sna,
tmp.dst.format = format;
tmp.dst.bo = dst_bo;
tmp.floats_per_vertex = 2;
tmp.floats_per_rect = 6;
if (!kgem_check_bo(&sna->kgem, dst_bo, NULL))
kgem_submit(&sna->kgem);
@ -2079,6 +2082,7 @@ gen2_render_fill(struct sna *sna, uint8_t alu,
tmp->base.dst.format = sna_format_for_depth(dst->drawable.depth);
tmp->base.dst.bo = dst_bo;
tmp->base.floats_per_vertex = 2;
tmp->base.floats_per_rect = 6;
tmp->base.src.u.gen2.pixel =
sna_rgba_for_color(color, dst->drawable.depth);
@ -2156,6 +2160,7 @@ gen2_render_fill_one(struct sna *sna, PixmapPtr dst, struct kgem_bo *bo,
tmp.dst.format = sna_format_for_depth(dst->drawable.depth);
tmp.dst.bo = bo;
tmp.floats_per_vertex = 2;
tmp.floats_per_rect = 6;
tmp.need_magic_ca_pass = false;
tmp.src.u.gen2.pixel =
@ -2325,6 +2330,7 @@ gen2_render_copy_boxes(struct sna *sna, uint8_t alu,
tmp.dst.bo = dst_bo;
tmp.floats_per_vertex = 4;
tmp.floats_per_rect = 12;
gen2_render_copy_setup_source(&tmp.src, src, src_bo);
gen2_emit_copy_state(sna, &tmp);
@ -2450,6 +2456,7 @@ gen2_render_copy(struct sna *sna, uint8_t alu,
gen2_render_copy_setup_source(&tmp->base.src, src, src_bo);
tmp->base.floats_per_vertex = 4;
tmp->base.floats_per_rect = 12;
if (!kgem_check_bo(&sna->kgem, dst_bo, src_bo, NULL))
kgem_submit(&sna->kgem);