Rūdolfs,
On 09.02.2015 10:28, Rūdolfs Bundulis wrote:
Hi,
yeah it turned out that when running from the VirtualBox installation
path 3D support works for my frontend, seems that it comes from the
fact that the COM API is using the dll's from the installation
folder. I'm just gonna leave this information here in case anyone else
stumbles on the same issue.
VBoxC.dll contains "in-process" COM components (which live in the "API
client" process), and the path to it is kept in the registry. Normal COM
stuff.
2015-02-07 18:37 GMT+02:00 Rūdolfs Bundulis
<[email protected] <mailto:[email protected]>>:
Hi,
again thanks for all the previous help, I managed to build VBox
with the LogRel() but when I copied the dll's over the
installation i got a ton of errors about invalid image hashes (I
guess that just copying over is not the way to go). Anyhow, I came
up with a different approach and made a small frontend that would
basically do the same stuff as my app but also draw the output to
a window. When I launch the application from the VirtualBox
installation folder everything works fine - 3D support works, when
I take the app and all the virtualbox binaries and put them in a
random folder, it again stops working. And what is interresting
that using Process Explorer I was able to see that actually two
copies of VBoxC.dll are loaded (one from the installation folder
and one from my folder) and one VBoxRT.dll (only from the
VirtualBox installation folder). I assume the ones from the
installation folder are loaded by the COM object? Is this a very
very bad practice to try and deploy the VirtualBox binaries
outside the installation path?
The invalid image hashes most likely mean that VirtualBox isn't
accepting the signature in your binaries. It only accepts the "one
signer" of everything, so if you mix Oracle and your own build then it
won't work very well.
Deploying VirtualBox binaries outside the installation path isn't
exactly forbidden, but we don't test it right now. This will stay for a
while, we have still way too much noise on the hardening related tickets.
Klaus
2015-01-26 15:25 GMT+02:00 Rūdolfs Bundulis
<[email protected] <mailto:[email protected]>>:
Hi Vitali,
this was what I was looking for, much appreciated :)
Best Regards,
Rudolfs Bundulis
2015-01-26 14:59 GMT+02:00 Vadim Galitsyn
<[email protected] <mailto:[email protected]>>:
Hi Rudolfs,
you could add LogRel() messages and they should appear in
release log (VBox.log file) once VBox has been built w/
corresponding flag. Note, that this only works for guest
R0 code (miniport). Adding LogRel() to R3 code (display
driver) will not result in extra messages in log.
Please consider to add VBOX_WITH_R0_LOGGING=1 into
LocalConfig.kmk in order to enable LogRel()’s.
Vadim
On 26 Jan 2015, at 15:26, Rūdolfs Bundulis
<[email protected]
<mailto:[email protected]>> wrote:
Hi Vadim,
ok clear, thanks for the info. We'll so far I haven't
patched anything in the VBox code itself, as I said I
have a custom frontend. Does that code help you in any
way? I'll make a debug build and look for more messages
and mail back if it gives any additional info, thanks for
all the help so far. The main thing I wanted to
understand was is there any way to see the output from
the WARN macros in the miniport driver, and as far as I
understand there is none.
Best Regards,
Rudolfs Bundulis
2015-01-26 13:42 GMT+02:00 Vadim Galitsyn
<[email protected]
<mailto:[email protected]>>:
Hi Rudolfs,
Debug build of VBox itself would probably add a bit
more messages to VBox.log (and to debug log as well),
but this definitely will not prevent the fact that
debug version of GAs cause BSOD. Is it possible if
you share a patch to OSE tree with your changes, so I
could take a look at it later this week (or another)?
Vadim
On 26 Jan 2015, at 14:00, Rūdolfs Bundulis
<[email protected]
<mailto:[email protected]>> wrote:
Hi Vadim,
Well since I also came to the the conclusion that
the WinId could cause this, I tried making a dummy
window for each of the IFramebuffer instances, but
nothing changed. Though the windows do not have any
logic in the message loop, and I do not resize them
when the resolutions change - maybe this causes some
errors. That is why I asked if any logs from the
miniport driver is available to see where does it
actually crash. If I make a debug VirtualBox build
then would debug GAs work?
Best Regards,
Rudolfs Bundulis
2015-01-26 12:50 GMT+02:00 Vadim Galitsyn
<[email protected]
<mailto:[email protected]>>:
Hi Rudolfs,
As far as I can understand, returning NULL WinID
might cause the behaviour you are observing on
Windows host (please note, I have not tried that
locally, take it like a gesture). Seems, you
also already have 3D host service running. Can
you try to provide valid WinID to
Main/src-client stuff as an experiment and see
if things changed?
Regarding to GAs, I am afraid you’ll have a BSOD
in guest once you attempt to boot VM with debug
GAs installed. We currently have some debug R0
assertion there.
Vadim
On 26 Jan 2015, at 13:12, Rūdolfs Bundulis
<[email protected]
<mailto:[email protected]>> wrote:
Hi Vadim,
thanks for the pointers, I'll look up the code,
I was already afraid that something is simply
missing.
To describe what I am doing:
I am running a research project in University
of Latvia where we are trying to use VirtualBox
for large scale high resolution display wall
construction - basically we run VirtualBox with
a custom frontend that takes the video data
from the VRAM, encodes it and streams over to a
display wall, currently we've been able to run
a 9600x5400 surface with Windows XPDM (we set
this resolution as a hint and then internally
split it to 5*5 1920x1080 displays) , which is
really impressive, so thanks again for the
great software. In terms of resolution I guess
this is as far as the existing 256MB VRAM limit
in VirtualBox can go (at least according to the
calculations for framebuffer needs provided by
Klaus Erspenlaub and mentioned in your code).
Since the resolution limit is reached we are
trying to address two more issues - 3D support
and a weird unaligned stack crash in
VBoxREM.dll with more than 1 CPU shared to the
machine (for the second issue I need to do some
more research as to where it is coming from
before I ask any help here). As for the 3D -
we'd basically want our software to function in
the same way the VirtualBox QT client does, but
currently it does not. Thanks for the pointer
about the HGCM/OpenGL service, I'll check out
that code and see what I can adapt.
Our software basically uses the VirtualBox COM
interface to create the needed machine, set the
number of displays/resolutions, injects the
IFramebuffer instances and powers up the
machine via the IConsole interface. So I
examined all the IFramebuffer implementations
in VirtualBox frontends, and didn't see
anything very special in the 3D related
callbacks there. As for the log - I tried to
compare the log of a session from our software
with a session from the same machine under QT
fronted where the 3D acceleration works.
Basically there were no errors and differences,
in both cases the logs contained the lines
about OpenGL support (i guess this comes from
the OpenGL capability test exe), I'll send both
logs as soon as I get back to that machine but
I doubt they'll give much help, since they
don't have any errors, and in both of them the
guest additions log line states that
acceleration is supported. Basically the only
thing that differs is that the D3D/OpenGL
(we've tried both API's, since the test
application is built on Unity it is trivial to
force either mode) device creation fails on our
frontend. That is why I asked about the
get_WinId, I examined the miniport driver code
and as far as I understood it uses the window
id value to create a swap chain. Out frontend
does not have an actual window, so I am always
returning NULL, can this cause an error? I also
saw that the miniport driver has a lot of WARN
macros, is the output visible anywhere? I
tried using DebugView but that didn't help?
Should I try building a debug version of guest
additions to get some log information?
Best Regards,
Rudolfs Bundulis
2015-01-26 10:34 GMT+02:00 Vadim Galitsyn
<[email protected]
<mailto:[email protected]>>:
Hi Rudolfs,
In order to provide 3D acceleration, VBox
HGCM/OpenGL host service should be running.
It is currently a part of VirtualBoxVM
process (ShCrOpenGL thread). In order to
provide 3D acceleration support for your
frontend, I am afraid, you need to adapt
stuff from this thread for your code. And I
am afraid this might be not that easy
(there is a bit of magic when VBox GUI
conversates w/ 3D stuff). Please refer to
src/VBox/HostServices/SharedOpenGL and
src/VBox/GuestHost/OpenGL sources.
Btw, if you describe a little bit more why
do you need this and what you already have
done, maybe I could explain you more
things/steps you need to do in order to
reach the goal. VBox.log also might be helpful.
Vadim
> On 24 Jan 2015, at 14:14, Rūdolfs
Bundulis <[email protected]
<mailto:[email protected]>> wrote:
>
> Hi,
>
> I'm having a bit of a hard time
understanding why my custom framebuffer
cannot use the 3D acceleration feature. I
have a Windows 7 guest machine (3D
acceleration enabled, guest additions
installed) and a Unity demo application.
Under the default QT GUI the application
launches fine, while under my frontend
Unity is not able to create the D3D device.
First I though that this could be due to
incorrect implementation of IFramebuffer,
but when I looked at
UIFrameBuffer::Notify3DEvent(ULONG uType,
BYTE *pData) in UIFrameBuffer.cpp there
wasn't any special magic there. Are there
any hints to guide me towards understanding
the cause of this? Is there any tracing
facilities for the guest miniport driver?
Also, I don't have a window handle for my
frontend since there is no actual window.
If I am returning 0 in get_WinId in my
framebuffer can that mess things up?
>
> Best Regards,
> Rudolfs Bundulis
>
_______________________________________________
> vbox-dev mailing list
> [email protected]
<mailto:[email protected]>
>
https://www.virtualbox.org/mailman/listinfo/vbox-dev
_______________________________________________
vbox-dev mailing list
[email protected]
https://www.virtualbox.org/mailman/listinfo/vbox-dev