aboutsummaryrefslogtreecommitdiffstats
path: root/vxd_vdd.c
diff options
context:
space:
mode:
authorJaroslav Hensl <jara@hensl.cz>2024-08-18 16:51:58 +0200
committerJaroslav Hensl <jara@hensl.cz>2024-08-18 16:51:58 +0200
commit6e547655ca3c97f57c876d349b92ee1b9b6daa5b (patch)
tree64429d0ec48f1ff11fbb4485de9d66bf4abcd75f /vxd_vdd.c
parenta1812e7538bd018ffbabb6573dee9e7345c6d57a (diff)
downloadvmdisp9x-6e547655ca3c97f57c876d349b92ee1b9b6daa5b.tar.gz
SVGA: double buffering
Diffstat (limited to 'vxd_vdd.c')
-rw-r--r--vxd_vdd.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/vxd_vdd.c b/vxd_vdd.c
index 422b1c4..af7b200 100644
--- a/vxd_vdd.c
+++ b/vxd_vdd.c
@@ -92,6 +92,18 @@ DWORD map_pm16(DWORD vm, DWORD linear, DWORD size)
return selector << 16;
}
+void update_pm16(DWORD vm, DWORD oldmap, DWORD linear, DWORD size)
+{
+ WORD selector = oldmap >> 16;
+ DWORD hi = 0;
+ DWORD low = 0;
+
+ dbg_printf("update_pm16: %ld\n", linear);
+
+ _BuildDescriptorDWORDs(linear, RoundToPages(size), 0x92, 0x80, 0, &hi, &low);
+ _SetDescriptor(selector, vm, hi, low, 0);
+}
+
/*
You can implement all the VESA support entirely in your mini-VDD. Doing so will
cause VESA applications to run more efficiently since all of the VESA support is
@@ -128,7 +140,7 @@ See also VDD_REGISTER_DISPLAY_DRIVER_INFO.
**/
VDDPROC(REGISTER_DISPLAY_DRIVER, register_display_driver)
{
- dbg_printf(dbg_register, state->Client_EBX, state->Client_ECX, ThisVM);
+ dbg_printf("register: ebx = %ld, ecx = %ld, VM = %lX\n", state->Client_EBX, state->Client_ECX, ThisVM);
if(hda->vram_pm16 == 0)
{