Skip to content
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

VBE Canvas - 1366x768 is "tilted" #3010

Open
Szymekk44 opened this issue Apr 30, 2024 · 7 comments
Open

VBE Canvas - 1366x768 is "tilted" #3010

Szymekk44 opened this issue Apr 30, 2024 · 7 comments
Labels

Comments

@Szymekk44
Copy link
Contributor

Area of Cosmos - What area of Cosmos are we dealing with?

VBE Canvas/Graphics - 1366x768

Expected Behaviour - What do you think that should happen?

It should render normally.
(SVGAII 1360x768; 1366 should be supported but its black
https://github.com/CosmosOS/Cosmos/blob/8adc6864c20ac616f05e8d85e17b47fd6d986db7/source/Cosmos.System2/Graphics/SVGAIICanvas.cs#L123C1-L123C38)
obraz_2024-04-30_201234325

Actual Behaviour - What unexpectedly happens?

obraz_2024-04-30_200529482
yep even rectangles (loading bar) are broken

Reproduction - How did you get this error to appear?

Just create a new 1366x768 VBE Canvas and draw something (a rectangle, bitmap, text, anything)

Version - Were you using the User Kit or Dev Kit? And what User Kit version or Dev Kit commit (Cosmos, IL2CPU, X#)?

Devkit - latest c6155b9

@Szymekk44 Szymekk44 added the Bug label Apr 30, 2024
@Szymekk44
Copy link
Contributor Author

Also its not vmware, on real hardware it looks the same

@ascpixi
Copy link
Contributor

ascpixi commented May 2, 2024

I haven't looked into this, but it looks like all implementations of Canvas, while having it defined, aren't completely using the stride information. This isn't a problem with resolutions like 1280x720, where the stride is equal to the width - but a resolution like 1366x768 would normally have some padding on each scanline to account for the alignment.

For e.g. 1280x720, each scanline is 1280 pixels long - meaning that two consecutive scanlines are already aligned on a 4 (or even 8!) byte boundary. For 1366px-wide scan-lines, this is no longer the case, so it's very much likely the stride is different than the width.

This could be fixed by making the formula for getting the position of a single pixel $(y * s) + x$, where $s$ is the stride.

@zarlo
Copy link
Member

zarlo commented May 2, 2024

(y * (Mode.width + Mode.padding)) + x so adding padding data to Mode should fix it

@DuperNO-Alt
Copy link

i think windows had this kind of problem too

@Szymekk44
Copy link
Contributor Author

Update: its creating a 1368x768 canvas, but displaying 1366x768. Padding won't fix it because if you draw something on bottom two lines it is going to crash.

Here are some examples
Square 10x10

on x1356 y0
image

x1358 y0
image

and now on x1359 y0
image

if you add in VBECanvas driver (Cosmos.System2) a new mode 1368x768 and set1366x768x32 in vbe resolution (vmware does not support 1368!)
when creating a 1368x768 canvas it works. But with the same issue.

@gamma63
Copy link

gamma63 commented Jul 19, 2024

i think windows had this kind of problem too

Yes (at least on Rectify 11)

@ADev531
Copy link

ADev531 commented Oct 30, 2024

i think windows had this kind of problem too

That's right. Windows is solved by installing VMware tools,
but There's no VMware Tools for CosmosOS.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants