Hi Rudolfs,

IFramebuffer::Lock() in 4.3 did not prevent the guest access to the guest VRAM (framebuffer).

Vitali.

Rūdolfs Bundulis wrote:
Hi Vitali,

    the guest may access the guest VRAM between NotifyUpdate calls.
    Which means that in principle the guest can change the content
    while the frontend thread is reading pixels.

Yeah, it seems that this is what is happening. It can be easily observed when looking at the mouse cursor in our video stream - you can see some pixels of the previous ones. If there just was something equivalent to the old IFramebuffer::Lock() then we could just prevent the guest from accessing the pixels (I mean it would still be for a very short time - only as long as it takes for the pixel conversion). I mean my plan Z now is that I can recompile VirtualBox and put back additional methods for locking - but I was wondering don't you guys ever experience the same issues (however since you simply blit the pixels to the display I guess not :D).

    Actually I wonder why this worked for your in VBox 4.3 because if
    the 4.3 framebuffer implementation
    used the guest VRAM directly, then it was the same case as in 5.0.

In VBox 4.3 we performed the RGB to NV12 conversion inside the notify update callback and we also locked an internal critical section which also was locked if IFramebuffer::Lock was called - so during the time while our frontend was reading the pixels noone else could access them. This was safe, but slow as hell. I mean the responsiveness of the guest OS has become much much much better now with the normalized fps encoding instead of reacting to every update.

    Do you remember whether the 4.3 framebuffer implementation
    allocated the memory and did not use VRAM directly?

We always used VRAM. If the amount of memory wasn't so high we could use our own pointer and copy, but in case of a full screen video or OpenGL redirection where we won't be able to simply copy smaller regions this will be a performance pitfall.

Best Regards,
Rudolfs Bundulis

_______________________________________________
vbox-dev mailing list
vbox-dev@virtualbox.org
https://www.virtualbox.org/mailman/listinfo/vbox-dev

Reply via email to