[vbox-dev] OpenGL service screen redirection

Rūdolfs Bundulis rudolfs.bundulis at gmail.com
Wed Apr 8 10:56:10 GMT 2015


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?

>> 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.

>> 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.

Best Regards,
Rudolfs Bundulis

2015-04-08 13:41 GMT+03:00 Vitali Pelenjow <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
>> https://www.virtualbox.org/mailman/listinfo/vbox-dev
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.virtualbox.org/pipermail/vbox-dev/attachments/20150408/1aff35f8/attachment.html>


More information about the vbox-dev mailing list