From 14bafb885686da4bc63c4a5b4f0c87187a83bb8e Mon Sep 17 00:00:00 2001 From: s40in Date: Mon, 12 Apr 2021 11:12:23 +0000 Subject: [PATCH 1/2] Fix init video device. Add device name in accelerant. --- vmware_video/accelerant/GetAccelerantHook.c | 2 +- vmware_video/accelerant/GetDeviceInfo.c | 24 +++++++++++++++++++++ vmware_video/accelerant/Makefile | 1 + vmware_video/kernel/device.c | 3 ++- 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 vmware_video/accelerant/GetDeviceInfo.c diff --git a/vmware_video/accelerant/GetAccelerantHook.c b/vmware_video/accelerant/GetAccelerantHook.c index 515995c..54f3e02 100644 --- a/vmware_video/accelerant/GetAccelerantHook.c +++ b/vmware_video/accelerant/GetAccelerantHook.c @@ -27,7 +27,7 @@ get_accelerant_hook(uint32 feature, void *data) HOOK(ACCELERANT_CLONE_INFO_SIZE); HOOK(GET_ACCELERANT_CLONE_INFO); HOOK(UNINIT_ACCELERANT); - //HOOK(GET_ACCELERANT_DEVICE_INFO); + HOOK(GET_ACCELERANT_DEVICE_INFO); HOOK(ACCELERANT_RETRACE_SEMAPHORE); /* mode configuration */ diff --git a/vmware_video/accelerant/GetDeviceInfo.c b/vmware_video/accelerant/GetDeviceInfo.c new file mode 100644 index 0000000..d951557 --- /dev/null +++ b/vmware_video/accelerant/GetDeviceInfo.c @@ -0,0 +1,24 @@ +/* + Author: + s40in, 2021 +*/ + +#include +#include +#include + +/* Get some info about the device */ +status_t GET_ACCELERANT_DEVICE_INFO(accelerant_device_info * adi) +{ + + /* no info on version is provided, so presumably this is for my info */ + adi->version = 1; + + sprintf(adi->name, "VMware SVGA"); + sprintf(adi->chipset, "VM"); + sprintf(adi->serial_no, "None"); + //adi->memory = (si->ps.memory_size * 1024); + //adi->dac_speed = si->ps.max_dac1_clock; + + return B_OK; +} diff --git a/vmware_video/accelerant/Makefile b/vmware_video/accelerant/Makefile index 7327cc3..ae75abb 100644 --- a/vmware_video/accelerant/Makefile +++ b/vmware_video/accelerant/Makefile @@ -35,6 +35,7 @@ SRCS= Acceleration.c \ EngineManagment.c \ Fifo.c \ GetAccelerantHook.c \ + GetDeviceInfo.c \ GetModeInfo.c \ GlobalData.c \ InitAccelerant.c \ diff --git a/vmware_video/kernel/device.c b/vmware_video/kernel/device.c index 063f6ad..2321d7f 100644 --- a/vmware_video/kernel/device.c +++ b/vmware_video/kernel/device.c @@ -290,7 +290,7 @@ ControlHook(void *dev, uint32 msg, void *buf, size_t len) return B_OK; case VMWARE_FIFO_START: - WriteReg(SVGA_REG_ENABLE, 1); + //WriteReg(SVGA_REG_ENABLE, 1); WriteReg(SVGA_REG_CONFIG_DONE, 1); return B_OK; @@ -310,6 +310,7 @@ ControlHook(void *dev, uint32 msg, void *buf, size_t len) WriteReg(SVGA_REG_WIDTH, dm->virtual_width); WriteReg(SVGA_REG_HEIGHT, dm->virtual_height); WriteReg(SVGA_REG_BITS_PER_PIXEL, BppForSpace(dm->space)); + WriteReg(SVGA_REG_ENABLE, 1); //HAKILO si->fbOffset = ReadReg(SVGA_REG_FB_OFFSET); si->bytesPerRow = ReadReg(SVGA_REG_BYTES_PER_LINE); ReadReg(SVGA_REG_DEPTH); From f3daee58dc35e738a0df5d74186808a6c0fe90a6 Mon Sep 17 00:00:00 2001 From: s40in Date: Tue, 13 Apr 2021 09:43:21 +0000 Subject: [PATCH 2/2] Add some screen size --- vmware_video/accelerant/ProposeDisplayMode.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vmware_video/accelerant/ProposeDisplayMode.c b/vmware_video/accelerant/ProposeDisplayMode.c index 0a4e368..c35274f 100644 --- a/vmware_video/accelerant/ProposeDisplayMode.c +++ b/vmware_video/accelerant/ProposeDisplayMode.c @@ -29,6 +29,7 @@ static const display_mode kModeList[] = { { 86730, 1440, 1472, 1800, 1832, 900, 919, 927, 946, 0 }, B_RGB32_LITTLE, 1440, 900, 0, 0, MODE_FLAGS }, /* 1440x900@50Hz */ { { 90890, 1280, 1312, 1656, 1688, 1024, 1045, 1054, 1076, 0 }, B_RGB32_LITTLE, 1280, 1024, 0, 0, MODE_FLAGS }, /* 1280x1024@50Hz */ { { 102150, 1400, 1432, 1816, 1848, 1050, 1072, 1081, 1103, 0 }, B_RGB32_LITTLE, 1400, 1050, 0, 0, MODE_FLAGS }, /* 1400x1050@50Hz */ + { { 108000, 1600, 1700, 1800, 1900, 900, 1000, 1100, 1200, 0 }, B_RGB32_LITTLE, 1600, 900, 0, 0, MODE_FLAGS }, /* 1600x900@60Hz */ { { 121680, 1680, 1712, 2168, 2200, 1050, 1072, 1081, 1103, 0 }, B_RGB32_LITTLE, 1680, 1050, 0, 0, MODE_FLAGS }, /* 1680x1050@50Hz */ { { 137970, 1600, 1632, 2152, 2184, 1200, 1225, 1235, 1261, 0 }, B_RGB32_LITTLE, 1600, 1200, 0, 0, MODE_FLAGS }, /* 1600x1200@50Hz */ { { 164500, 1920, 1952, 2576, 2608, 1200, 1225, 1235, 1261, 0 }, B_RGB32_LITTLE, 1920, 1200, 0, 0, MODE_FLAGS }, /* 1920x1200@50Hz */ @@ -38,6 +39,7 @@ static const display_mode kModeList[] = { { 210640, 1920, 1952, 2752, 2784, 1440, 1470, 1482, 1513, 0 }, B_RGB32_LITTLE, 1920, 1440, 0, 0, MODE_FLAGS }, /* 1920x1440@50Hz */ { { 245600, 2048, 2080, 3008, 3040, 1536, 1568, 1581, 1613, 0 }, B_RGB32_LITTLE, 2048, 1536, 0, 0, MODE_FLAGS }, /* 2048x1536@50Hz */ { { 319750, 3440, 3488, 3520, 3600, 1440, 1443, 1453, 1481, 0 }, B_RGB32_LITTLE, 3440, 1440, 0, 0, MODE_FLAGS }, /* 3440x1440@60Hz */ + { { 505490, 3072, 3320, 3656, 4240, 1920, 1921, 1924, 1987, 0 }, B_RGB32_LITTLE, 3072, 1920, 0, 0, MODE_FLAGS }, /* 3072x1920@60Hz */ };