[vbox-dev] OpenGL service screen redirection

Vitali Pelenjow Vitali.Pelenjow at oracle.com
Wed Apr 8 11:01:26 GMT 2015


On 4/8/2015 12:56 PM, Rūdolfs Bundulis wrote:
> Hi Vitali,
>
> >> the OpenGL output redirect was created only for VRDP 3D support. 
> Currently it is internal and can use only 1 redirect.
>
> I got the same impression from the sources. But if I am running a 
> custom frontend and disable VRDP (or to be more exact, do not allow to 
> enable it), and perform this call and occupy the single allowed 
> redirect, then I should be fine right?
Right.

>
> >> The output redirect provides a bitmap of 3D frame when it is displayed. 
> If you have a 3D application in a window then you'll get
> >> only content of the window.
>
> If I understand correctly then CRORGeometry gives me the window 
> dimensions so as far as I see there should be no issues with blitting 
> it over the contents of VRAM.
Correct.

>
> >> As an alternative you could also use the screenshot API to get the image. 
> In this case you can choose the update interval and get the entire screen.
> Since I already have the VRAM contents from the IFramebuffer, asking 
> for the whole screen in parallel would be an overkill, and I also like 
> the the IFramebuffer methods provide the updated rectangle 
> coordinates, that helps me further down the pipeline with color 
> conversion and encoding. If I get the whole screen (which in my case 
> is 9600x5400) that again downgrades the performance.
>
> Please correct me if I'm getting something very wrong, but as far as I 
> see, combining the IFramebuffer updates and the frame callback from 
> the OpenGL service should do what I need since then I just update a 
> region inside the whole large screen with the 3D frame when it's done.
Yes, that is how VRDP 3D redirection works.

Vitali.

>
> Best Regards,
> Rudolfs Bundulis
>
> 2015-04-08 13:41 GMT+03:00 Vitali Pelenjow <Vitali.Pelenjow at oracle.com 
> <mailto:Vitali.Pelenjow at oracle.com>>:
>
>     Hi Rudolfs,
>
>     the OpenGL output redirect was created only for VRDP 3D support.
>     Currently it is internal and can use only 1 redirect.
>     The output redirect provides a bitmap of 3D frame when it is
>     displayed. If you have a 3D application in a window then you'll get
>     only content of the window.
>
>     As an alternative you could also use the screenshot API to get the
>     image. In this case you can choose the update interval and get the
>     entire screen.
>
>     Vitali.
>
>
>     On 4/8/2015 9:50 AM, Rūdolfs Bundulis wrote:
>
>         Hi,
>
>         I am finally starting to look into 3D acceleration for my
>         headless frontend and the first thing I wanted to try is the
>         OpenGL output redirection to a frambuffer. Looking at the code
>         I came down to the following question - what is the correct
>         way to hook into the OpenGL service? Looking
>         ConsoleVRDPServer.cpp it seems very straightforward -
>         ConsoleVRDPServer::remote3DRedirect basically just does one
>         HGSMI call SHCRGL_HOST_FN_SET_OUTPUT_REDIRECT but as far as I
>         understand they are done through internal functions that are
>         not exported by any of the dlls so I cannot hook into that,
>         correct? The shared OpenGL dll exports a function
>         crVBoxServerOutputRedirectSet where I can pass the same
>         callbacks, so I assume I should use that, correct?
>
>         Best Regards,
>         Rudolfs Bundulis
>
>
>
>         _______________________________________________
>         vbox-dev mailing list
>         vbox-dev at virtualbox.org <mailto:vbox-dev at virtualbox.org>
>         https://www.virtualbox.org/mailman/listinfo/vbox-dev
>
>
>





More information about the vbox-dev mailing list