Voodoo fast fill command now affected by Y origin bit

This commit is contained in:
SarahW 2017-01-23 21:04:55 +00:00
commit 6d9624505d

View file

@ -3411,6 +3411,18 @@ static inline void queue_triangle(voodoo_t *voodoo, voodoo_params_t *params)
static void voodoo_fastfill(voodoo_t *voodoo, voodoo_params_t *params) static void voodoo_fastfill(voodoo_t *voodoo, voodoo_params_t *params)
{ {
int y; int y;
int low_y, high_y;
if (params->fbzMode & (1 << 17))
{
high_y = voodoo->v_disp - params->clipLowY;
low_y = voodoo->v_disp - params->clipHighY;
}
else
{
low_y = params->clipLowY;
high_y = params->clipHighY;
}
if (params->fbzMode & FBZ_RGB_WMASK) if (params->fbzMode & FBZ_RGB_WMASK)
{ {
@ -3422,7 +3434,7 @@ static void voodoo_fastfill(voodoo_t *voodoo, voodoo_params_t *params)
b = (params->color1 >> 3) & 0x1f; b = (params->color1 >> 3) & 0x1f;
col = b | (g << 5) | (r << 11); col = b | (g << 5) | (r << 11);
for (y = params->clipLowY; y < params->clipHighY; y++) for (y = low_y; y < high_y; y++)
{ {
uint16_t *cbuf = (uint16_t *)&voodoo->fb_mem[(params->draw_offset + y*voodoo->row_width) & voodoo->fb_mask]; uint16_t *cbuf = (uint16_t *)&voodoo->fb_mem[(params->draw_offset + y*voodoo->row_width) & voodoo->fb_mask];
int x; int x;
@ -3433,7 +3445,7 @@ static void voodoo_fastfill(voodoo_t *voodoo, voodoo_params_t *params)
} }
if (params->fbzMode & FBZ_DEPTH_WMASK) if (params->fbzMode & FBZ_DEPTH_WMASK)
{ {
for (y = params->clipLowY; y < params->clipHighY; y++) for (y = low_y; y < high_y; y++)
{ {
uint16_t *abuf = (uint16_t *)&voodoo->fb_mem[(params->aux_offset + y*voodoo->row_width) & voodoo->fb_mask]; uint16_t *abuf = (uint16_t *)&voodoo->fb_mem[(params->aux_offset + y*voodoo->row_width) & voodoo->fb_mask];
int x; int x;