|
11 | 11 | #include "device.h"
|
12 | 12 | #include "riscv.h"
|
13 | 13 | #include "riscv_private.h"
|
| 14 | +#include "virgl.h" |
14 | 15 | #include "window.h"
|
15 | 16 |
|
16 | 17 | #define PRIV(x) ((emu_state_t *) x->priv)
|
@@ -722,19 +723,23 @@ static int semu_start(int argc, char **argv)
|
722 | 723 | emu.mtimer.mtimecmp = calloc(vm.n_hart, sizeof(uint64_t));
|
723 | 724 | emu.mswi.msip = calloc(vm.n_hart, sizeof(uint32_t));
|
724 | 725 | emu.sswi.ssip = calloc(vm.n_hart, sizeof(uint32_t));
|
725 |
| -#if SEMU_HAS(VIRTIOGPU) |
726 |
| - emu.vgpu.ram = emu.ram; |
727 |
| - virtio_gpu_init(&(emu.vgpu)); |
728 |
| - virtio_gpu_add_scanout(&(emu.vgpu), 1024, 768); |
729 |
| - window_init(); |
730 |
| -#endif |
731 | 726 | #if SEMU_HAS(VIRTIOINPUT)
|
732 | 727 | emu.vkeyboard.ram = emu.ram;
|
733 | 728 | virtio_input_init(&(emu.vkeyboard));
|
734 | 729 |
|
735 | 730 | emu.vmouse.ram = emu.ram;
|
736 | 731 | virtio_input_init(&(emu.vmouse));
|
737 | 732 | #endif
|
| 733 | +#if SEMU_HAS(VIRTIOGPU) |
| 734 | + emu.vgpu.ram = emu.ram; |
| 735 | + virtio_gpu_init(&(emu.vgpu)); |
| 736 | + virtio_gpu_add_scanout(&(emu.vgpu), 1024, 768); |
| 737 | + |
| 738 | + window_init(); |
| 739 | +#endif |
| 740 | +#if SEMU_HAS(VIRGL) |
| 741 | + semu_virgl_init(&(emu.vgpu)); |
| 742 | +#endif |
738 | 743 |
|
739 | 744 | /* Emulate */
|
740 | 745 | uint32_t peripheral_update_ctr = 0;
|
@@ -773,6 +778,10 @@ static int semu_start(int argc, char **argv)
|
773 | 778 | if (emu.vmouse.InterruptStatus)
|
774 | 779 | emu_update_vinput_mouse_interrupts(&vm);
|
775 | 780 | #endif
|
| 781 | + |
| 782 | +#if SEMU_HAS(VIRGL) |
| 783 | + semu_virgl_fence_poll(); |
| 784 | +#endif |
776 | 785 | }
|
777 | 786 |
|
778 | 787 | emu_update_timer_interrupt(vm.hart[i]);
|
|
0 commit comments