diff options
Diffstat (limited to 'src/sna/gen6_render.c')
-rw-r--r-- | src/sna/gen6_render.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c index badade09..fc2fc471 100644 --- a/src/sna/gen6_render.c +++ b/src/sna/gen6_render.c @@ -2720,6 +2720,32 @@ gen6_render_fill_blt(struct sna *sna, OUT_VERTEX_F(0); } +fastcall static void +gen6_render_fill_box(struct sna *sna, + const struct sna_fill_op *op, + const BoxRec *box) +{ + DBG(("%s: (%d, %d),(%d, %d)\n", __FUNCTION__, + box->x1, box->y1, box->x2, box->y2)); + + if (!gen6_get_rectangles(sna, &op->base, 1)) { + gen6_emit_fill_state(sna, &op->base); + gen6_get_rectangles(sna, &op->base, 1); + } + + OUT_VERTEX(box->x2, box->y2); + OUT_VERTEX_F(1); + OUT_VERTEX_F(1); + + OUT_VERTEX(box->x1, box->y2); + OUT_VERTEX_F(0); + OUT_VERTEX_F(1); + + OUT_VERTEX(box->x1, box->y1); + OUT_VERTEX_F(0); + OUT_VERTEX_F(0); +} + static void gen6_render_fill_done(struct sna *sna, const struct sna_fill_op *op) { @@ -2791,6 +2817,7 @@ gen6_render_fill(struct sna *sna, uint8_t alu, gen6_align_vertex(sna, &op->base); op->blt = gen6_render_fill_blt; + op->box = gen6_render_fill_box; op->done = gen6_render_fill_done; return TRUE; } |