diff options
| author | SamJakob <me@samjakob.com> | 2024-07-13 17:03:53 +0100 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2024-07-18 13:49:29 +0100 |
| commit | 345acc443905eda8008a1d328dd89b73c4a3f89e (patch) | |
| tree | 9d0a0923c67dbf79b4f3ac6bac407caef968cb7f /hw/display/bcm2835_fb.c | |
| parent | 25489b521b61b874c4c6583956db0012a3674e3a (diff) | |
| download | focaccia-qemu-345acc443905eda8008a1d328dd89b73c4a3f89e.tar.gz focaccia-qemu-345acc443905eda8008a1d328dd89b73c4a3f89e.zip | |
hw/display/bcm2835_fb: fix fb_use_offsets condition
It is common practice when implementing double-buffering on VideoCore to do so by multiplying the height of the virtual buffer by the number of virtual screens desired (i.e., two - in the case of double-bufferring). At present, this won't work in QEMU because the logic in fb_use_offsets require that both the virtual width and height exceed their physical counterparts. This appears to be unintentional/a typo and indeed the comment states; "Experimentally, the hardware seems to do this only if the viewport size is larger than the physical screen". The viewport/virtual size would be larger than the physical size if either virtual dimension were larger than their physical counterparts and not necessarily both. Signed-off-by: SamJakob <me@samjakob.com> Message-id: 20240713160353.62410-1-me@samjakob.com Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/display/bcm2835_fb.c')
| -rw-r--r-- | hw/display/bcm2835_fb.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c index e40ed2d2e1..650db3da82 100644 --- a/hw/display/bcm2835_fb.c +++ b/hw/display/bcm2835_fb.c @@ -145,7 +145,7 @@ static bool fb_use_offsets(BCM2835FBConfig *config) * viewport size is larger than the physical screen. (It doesn't * prevent the guest setting this silly viewport setting, though...) */ - return config->xres_virtual > config->xres && + return config->xres_virtual > config->xres || config->yres_virtual > config->yres; } |