Rev 877 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 877 | Rev 878 | ||
---|---|---|---|
Line 68... | Line 68... | ||
68 | } |
68 | } |
69 | 69 | ||
Line 70... | Line 70... | ||
70 | int DrawRect(draw_t* draw) |
70 | int DrawRect(draw_t* draw) |
71 | { |
71 | { |
72 | int x0, y0, x1, y1; |
72 | int x0, y0, x1, y1, xend, yend; |
Line 73... | Line 73... | ||
73 | 73 | ||
74 | local_pixmap_t *dstpixmap; |
74 | local_pixmap_t *dstpixmap; |
Line 75... | Line 75... | ||
75 | clip_t dst_clip; |
75 | clip_t dst_clip; |
Line 76... | Line 76... | ||
76 | 76 | ||
77 | dstpixmap = (draw->dstpix == (void*)-1) ? &scr_pixmap : draw->dstpix ; |
77 | dstpixmap = (draw->dstpix == (void*)-1) ? &scr_pixmap : draw->dstpix ; |
Line 78... | Line 78... | ||
78 | 78 | ||
79 | x0 = draw->x0; |
79 | x0 = draw->x0; |
Line 80... | Line 80... | ||
80 | y0 = draw->y0; |
80 | y0 = draw->y0; |
81 | 81 | ||
82 | x1 = x0+draw->w-1; |
82 | x1 = xend = x0 + draw->w - 1; |
83 | y1 = y0+draw->h-1; |
83 | y1 = yend = y0 + draw->h - 1; |
Line 117... | Line 117... | ||
117 | 117 | ||
Line 118... | Line 118... | ||
118 | OUTREG(R5XX_DP_BRUSH_FRGD_CLR, draw->color); |
118 | OUTREG(R5XX_DP_BRUSH_FRGD_CLR, draw->color); |
119 | OUTREG(R5XX_DP_CNTL, R5XX_DST_X_LEFT_TO_RIGHT | R5XX_DST_Y_TOP_TO_BOTTOM); |
119 | OUTREG(R5XX_DP_CNTL, R5XX_DST_X_LEFT_TO_RIGHT | R5XX_DST_Y_TOP_TO_BOTTOM); |
120 | OUTREG(R5XX_DST_PITCH_OFFSET, dstpixmap->pitch_offset); |
120 | OUTREG(R5XX_DST_PITCH_OFFSET, dstpixmap->pitch_offset); |
121 | OUTREG(R5XX_DST_Y_X,(draw->y0<<16)|draw->x0); |
121 | OUTREG(R5XX_DST_Y_X,(y0<<16)|x0); |
122 | OUTREG(R5XX_DST_WIDTH_HEIGHT,(w<<16)|h); |
122 | OUTREG(R5XX_DST_WIDTH_HEIGHT,(w<<16)|h); |
- | 123 | ||
- | 124 | if( draw->color != draw->border) |
|
- | 125 | { |
|
- | 126 | OUTREG(R5XX_DP_BRUSH_FRGD_CLR, draw->border); |
|
- | 127 | ||
- | 128 | if( y0 == draw->y0) |
|
- | 129 | { |
|
- | 130 | R5xxFIFOWait(2); |
|
- | 131 | ||
- | 132 | OUTREG(R5XX_DST_Y_X,(y0<<16)|x0); |
|
- | 133 | OUTREG(R5XX_DST_WIDTH_HEIGHT,(w<<16)|1); |
|
- | 134 | y0++; |
|
- | 135 | h--; |
|
- | 136 | } |
|
- | 137 | if( y1 == yend ) |
|
- | 138 | { |
|
- | 139 | R5xxFIFOWait(2); |
|
- | 140 | ||
- | 141 | OUTREG(R5XX_DST_Y_X,(y1<<16)|x0); |
|
- | 142 | OUTREG(R5XX_DST_WIDTH_HEIGHT,(w<<16)|1); |
|
- | 143 | h--; |
|
- | 144 | } |
|
- | 145 | if( x0 == draw->x0) |
|
- | 146 | { |
|
- | 147 | R5xxFIFOWait(2); |
|
- | 148 | ||
- | 149 | OUTREG(R5XX_DST_Y_X,(y0<<16)|x0); |
|
- | 150 | OUTREG(R5XX_DST_WIDTH_HEIGHT,(1<<16)|h); |
|
- | 151 | } |
|
- | 152 | if( x1 == xend) |
|
- | 153 | { |
|
- | 154 | R5xxFIFOWait(2); |
|
- | 155 | ||
- | 156 | OUTREG(R5XX_DST_Y_X,(y0<<16)|x1); |
|
- | 157 | OUTREG(R5XX_DST_WIDTH_HEIGHT,(1<<16)|h); |
|
- | 158 | } |
|
- | 159 | }; |
|
123 | #else |
160 | #else |
124 | BEGIN_RING(); |
161 | BEGIN_RING(); |
125 | OUT_RING(CP_PACKET3(RADEON_CNTL_PAINT_MULTI, 4)); |
162 | OUT_RING(CP_PACKET3(RADEON_CNTL_PAINT_MULTI, 4)); |
Line 126... | Line 163... | ||
126 | 163 |