mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 15:58:05 +02:00
r300: emit cliprect when in dri2 mode
This commit is contained in:
parent
466c78c935
commit
5dec94696e
1 changed files with 23 additions and 0 deletions
|
|
@ -215,6 +215,7 @@ static void emit_cb_offset(GLcontext *ctx, struct radeon_state_atom * atom)
|
|||
uint32_t cbpitch;
|
||||
uint32_t offset = r300->radeon.state.color.draw_offset;
|
||||
uint32_t dw = 6;
|
||||
int i;
|
||||
|
||||
rrb = radeon_get_colorbuffer(&r300->radeon);
|
||||
if (!rrb || !rrb->bo) {
|
||||
|
|
@ -250,6 +251,17 @@ static void emit_cb_offset(GLcontext *ctx, struct radeon_state_atom * atom)
|
|||
OUT_BATCH((rrb->width << R300_SCISSORS_X_SHIFT) |
|
||||
(rrb->height << R300_SCISSORS_Y_SHIFT));
|
||||
END_BATCH();
|
||||
BEGIN_BATCH_NO_AUTOSTATE(16);
|
||||
for (i = 0; i < 4; i++) {
|
||||
OUT_BATCH_REGSEQ(R300_SC_CLIPRECT_TL_0 + (i * 8), 2);
|
||||
OUT_BATCH((0 << R300_CLIPRECT_X_SHIFT) | (0 << R300_CLIPRECT_Y_SHIFT));
|
||||
OUT_BATCH((rrb->width << R300_CLIPRECT_X_SHIFT) | (rrb->height << R300_CLIPRECT_Y_SHIFT));
|
||||
}
|
||||
OUT_BATCH_REGSEQ(R300_SC_CLIP_RULE, 1);
|
||||
OUT_BATCH(0xAAAA);
|
||||
OUT_BATCH_REGSEQ(R300_SC_SCREENDOOR, 1);
|
||||
OUT_BATCH(0xffffff);
|
||||
END_BATCH();
|
||||
} else {
|
||||
BEGIN_BATCH_NO_AUTOSTATE(3);
|
||||
OUT_BATCH_REGSEQ(R300_SC_SCISSORS_TL, 2);
|
||||
|
|
@ -258,6 +270,17 @@ static void emit_cb_offset(GLcontext *ctx, struct radeon_state_atom * atom)
|
|||
OUT_BATCH(((rrb->width + R300_SCISSORS_OFFSET) << R300_SCISSORS_X_SHIFT) |
|
||||
((rrb->height + R300_SCISSORS_OFFSET) << R300_SCISSORS_Y_SHIFT));
|
||||
END_BATCH();
|
||||
BEGIN_BATCH_NO_AUTOSTATE(16);
|
||||
for (i = 0; i < 4; i++) {
|
||||
OUT_BATCH_REGSEQ(R300_SC_CLIPRECT_TL_0 + (i * 8), 2);
|
||||
OUT_BATCH((1088 << R300_CLIPRECT_X_SHIFT) | (1088 << R300_CLIPRECT_Y_SHIFT));
|
||||
OUT_BATCH(((1088 + rrb->width) << R300_CLIPRECT_X_SHIFT) | ((1088 + rrb->height) << R300_CLIPRECT_Y_SHIFT));
|
||||
}
|
||||
OUT_BATCH_REGSEQ(R300_SC_CLIP_RULE, 1);
|
||||
OUT_BATCH(0xAAAA);
|
||||
OUT_BATCH_REGSEQ(R300_SC_SCREENDOOR, 1);
|
||||
OUT_BATCH(0xffffff);
|
||||
END_BATCH();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue