diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-10-17 23:34:19 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-10-18 10:29:33 +0100 |
commit | b2d842df5e3198dab401fbd450d4af83d44917dd (patch) | |
tree | 2c660d0b48e2f9094059bc17bcb1ae00ccb9cb15 | |
parent | 729f1ec7869167ff91fa969d06dbdfbf0e8b4126 (diff) |
sna/gen2: Precompute floats-per-rect
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | src/sna/gen2_render.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/sna/gen2_render.c b/src/sna/gen2_render.c index 041b4c08..6b300697 100644 --- a/src/sna/gen2_render.c +++ b/src/sna/gen2_render.c @@ -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); |