edid: use physical dimensions if available

Replace dpi with width_mm/height_mm in qemu_edid_info.

Use it when set (non-zero) to compute the DPI and generate the EDID.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-id: 20200927145751.365446-3-marcandre.lureau@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Marc-André Lureau
2020-09-27 18:57:47 +04:00
committed by Gerd Hoffmann
parent 6c8f847ac1
commit fd36eade01
3 changed files with 38 additions and 14 deletions

View File

@ -9,7 +9,10 @@
#include "qemu/cutils.h"
#include "hw/display/edid.h"
static qemu_edid_info info;
static qemu_edid_info info = (qemu_edid_info) {
.prefx = 1024,
.prefy = 768,
};
static void usage(FILE *out)
{
@ -39,6 +42,7 @@ int main(int argc, char *argv[])
{
FILE *outfile = NULL;
uint8_t blob[256];
uint32_t dpi = 100;
int rc;
for (;;) {
@ -83,7 +87,7 @@ int main(int argc, char *argv[])
}
break;
case 'd':
if (qemu_strtoui(optarg, NULL, 10, &info.dpi) < 0) {
if (qemu_strtoui(optarg, NULL, 10, &dpi) < 0) {
fprintf(stderr, "not a number: %s\n", optarg);
exit(1);
}
@ -110,6 +114,9 @@ int main(int argc, char *argv[])
outfile = stdout;
}
info.width_mm = qemu_edid_dpi_to_mm(dpi, info.prefx);
info.height_mm = qemu_edid_dpi_to_mm(dpi, info.prefy);
memset(blob, 0, sizeof(blob));
qemu_edid_generate(blob, sizeof(blob), &info);
fwrite(blob, sizeof(blob), 1, outfile);