-
Notifications
You must be signed in to change notification settings - Fork 100
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cirrus: BLT with coordinate overflow does not update screen, may crash #221
Comments
I have now fixed the redraw values for backward BitBlt. According to the specs color expansion cannot be used with decreasing addresses. Please let me know if there are still issues. |
This sets w and h to 0 as well and makes Bochs freeze for several seconds. For the backwards case, incrementing both redraw.x and redraw.y by 1 fixed the original problem. The other problem is with (forwards) unaligned BLTs on the left side, that start before the beginning of the scanline. By adjusting the destination address according to the left side clipping settings before it is used in any calculations, this problem should be taken care of as well. |
Oops... |
If x0 + width exceeds the screen width, mark tile(s) on the left side of the screen, too. This should finally fix issue #221.
Are all of the Cirrus issues you reported fixed now? |
Yes, everything seems to work now. |
BLT operations that occur across screen edges fail to update the screen. For example, this may occur with decrementing BLTs along the left or top sides of the screen, or an unaligned color expansion BLT to the left side of the screen. An overflowing destination address, such as with an unaligned color expansion BLT to the top left corner, makes Bochs crash.
The text was updated successfully, but these errors were encountered: