<div dir="ltr">Hi Vitali,<div><br></div><div>great, thanks for the confirmations, this should be enough for me to try out this, see if one GPU can actually pull off rendering at that resolution and then further investigate what I can to accelerate Direct3D. Thanks for the information and your time.</div><div><br></div><div>Best Regards,</div><div>Rudolfs Bundulis</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-04-08 14:01 GMT+03:00 Vitali Pelenjow <span dir="ltr"><<a href="mailto:Vitali.Pelenjow@oracle.com" target="_blank">Vitali.Pelenjow@oracle.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 4/8/2015 12:56 PM, Rūdolfs Bundulis wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Vitali,<br>
<br>
>> the OpenGL output redirect was created only for VRDP 3D support. Currently it is internal and can use only 1 redirect.<br>
<br>
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?<br>
</blockquote></span>
Right.<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
>> 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<br>
>> only content of the window.<br>
<br>
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.<br>
</blockquote></span>
Correct.<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
>> 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.<br>
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.<br>
<br>
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.<br>
</blockquote></span>
Yes, that is how VRDP 3D redirection works.<br>
<br>
Vitali.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Best Regards,<br>
Rudolfs Bundulis<br>
<br>
2015-04-08 13:41 GMT+03:00 Vitali Pelenjow <<a href="mailto:Vitali.Pelenjow@oracle.com" target="_blank">Vitali.Pelenjow@oracle.com</a> <mailto:<a href="mailto:Vitali.Pelenjow@oracle.com" target="_blank">Vitali.Pelenjow@<u></u>oracle.com</a>>>:<div><div class="h5"><br>
<br>
    Hi Rudolfs,<br>
<br>
    the OpenGL output redirect was created only for VRDP 3D support.<br>
    Currently it is internal and can use only 1 redirect.<br>
    The output redirect provides a bitmap of 3D frame when it is<br>
    displayed. If you have a 3D application in a window then you'll get<br>
    only content of the window.<br>
<br>
    As an alternative you could also use the screenshot API to get the<br>
    image. In this case you can choose the update interval and get the<br>
    entire screen.<br>
<br>
    Vitali.<br>
<br>
<br>
    On 4/8/2015 9:50 AM, Rūdolfs Bundulis wrote:<br>
<br>
        Hi,<br>
<br>
        I am finally starting to look into 3D acceleration for my<br>
        headless frontend and the first thing I wanted to try is the<br>
        OpenGL output redirection to a frambuffer. Looking at the code<br>
        I came down to the following question - what is the correct<br>
        way to hook into the OpenGL service? Looking<br>
        ConsoleVRDPServer.cpp it seems very straightforward -<br>
        ConsoleVRDPServer::<u></u>remote3DRedirect basically just does one<br>
        HGSMI call SHCRGL_HOST_FN_SET_OUTPUT_<u></u>REDIRECT but as far as I<br>
        understand they are done through internal functions that are<br>
        not exported by any of the dlls so I cannot hook into that,<br>
        correct? The shared OpenGL dll exports a function<br>
        crVBoxServerOutputRedirectSet where I can pass the same<br>
        callbacks, so I assume I should use that, correct?<br>
<br>
        Best Regards,<br>
        Rudolfs Bundulis<br>
<br>
<br>
<br>
        ______________________________<u></u>_________________<br>
        vbox-dev mailing list<br></div></div>
        <a href="mailto:vbox-dev@virtualbox.org" target="_blank">vbox-dev@virtualbox.org</a> <mailto:<a href="mailto:vbox-dev@virtualbox.org" target="_blank">vbox-dev@virtualbox.<u></u>org</a>><br>
        <a href="https://www.virtualbox.org/mailman/listinfo/vbox-dev" target="_blank">https://www.virtualbox.org/<u></u>mailman/listinfo/vbox-dev</a><br>
<br>
<br>
<br>
</blockquote>
<br>
</blockquote></div><br></div>