<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
On 09.02.2015 11:54, Rūdolfs Bundulis wrote:<br>
<blockquote
cite="mid:CAHtFw63F_GY95eHSi=p9qj8bbiTxq-t8Y=VqiMOsw4OGOEpW-w@mail.gmail.com"
type="cite">
<div dir="ltr">Hi Klaus,
<div><br>
</div>
<div>thanks for the response, yeah I suspected that the path was
read from somewhere, since running regsvr32 to unregister
VBoxC.dll from installation directory and then registering it
from my path didn't chagne anything, but I'm happy - it's not
an issue to run my binaries from the installation folder, the
main thing is that things seem to be working. Now the only
thing I need is to see if I can make OpenGL render to a custom
FBO so I can live without the window and access the OpenGL
pixel data, but that is my issue, if I come up with anything
interesting maybe that can be use fro you too. At least as far
as I understand right now, due to the need of a window on the
host, VBoxHeadless.exe does not provide any 3D acceleration
support right?</div>
</div>
</blockquote>
From what I understood it does work for quite a while now (at least
4.3)... all the FBO stuff should be already in place and working for
VBoxHeadless, as long as the process gets started in a context
offers working GDI/Direct3D functions.<br>
<br>
The only question is if this does what you need or only does the
necessary work for the VRDE interface...<br>
<br>
Vitali?<br>
<blockquote
cite="mid:CAHtFw63F_GY95eHSi=p9qj8bbiTxq-t8Y=VqiMOsw4OGOEpW-w@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>Sorry to bother you so much, but the issue I'm more
troubled by is the crash I get - I've already described it
before but I have made little progress. Basically what happens
is whenever I start my VM with my custom frontend with more
than 1 CPU it crashes on Windows startup (longjmp_internal
from Microsoft C runtime fails with unaligned stack, the last
stack entry I saw from VBoxREM.dll was cpu_exit_loop or smth)
- since VBoxREM.dll is built with MinGW visual studio does not
help a lot, and when running under debug version under MinGW I
also was unable to obtain any valuable info. With 1 CPU it
always works fine. I've tried CRT debug heap, Application
Verifier etc. to find potential issues with my code (since the
default Qt frontend does not crash with the same
configuration) I blame my part of the code, but still maybe
there are some peculiarities with the COM interface. Do you
know any bugs that have reported similar issues to what I'm
seeing? Or maybe you can give any pointers since currently I'm
kind of stuck.</div>
<div><br>
</div>
<div>Again, great thanks for the support, my research would have
hit dead end without your help, yesterday I finally finished
splitting so thanks to VirtualBox I am able to run a single
virtual 9600x5400 display on VirtualBox (what is weird, even
with WDDM drivers) and split/encode it to 25 displays,
basically this cannot be done with hardware (well in terms of
a single homogeneous display) so I'm very happy.</div>
</div>
</blockquote>
Could be that we're just over cautious with WDDM (assuming the
behavior of certain greedy apps) and that there is actually no hard
requirement for a 3rd buffer.<br>
<blockquote
cite="mid:CAHtFw63F_GY95eHSi=p9qj8bbiTxq-t8Y=VqiMOsw4OGOEpW-w@mail.gmail.com"
type="cite">
<div dir="ltr">
<div><br>
</div>
<div>Best Regards,</div>
<div>Rudolfs Bundulis</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2015-02-09 12:21 GMT+02:00 Klaus
Espenlaub <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:klaus.espenlaub@oracle.com" target="_blank">klaus.espenlaub@oracle.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Rūdolfs,<span
class=""><br>
<br>
<div>On 09.02.2015 10:28, Rūdolfs Bundulis wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Hi,
<div><br>
</div>
<div>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.</div>
</div>
</blockquote>
</span> 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.<span
class=""><br>
<blockquote type="cite">
<div class="gmail_extra"><br>
<div class="gmail_quote">2015-02-07 18:37 GMT+02:00
Rūdolfs Bundulis <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:rudolfs.bundulis@gmail.com"
target="_blank">rudolfs.bundulis@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0
0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div dir="ltr">Hi,
<div><br>
</div>
<div>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?</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
</span> 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.<br>
<br>
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.<span
class="HOEnZb"><font color="#888888"><br>
<br>
Klaus</font></span>
<div>
<div class="h5"><br>
<blockquote type="cite">
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div>
<div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2015-01-26
15:25 GMT+02:00 Rūdolfs Bundulis <span
dir="ltr"><<a
moz-do-not-send="true"
href="mailto:rudolfs.bundulis@gmail.com"
target="_blank">rudolfs.bundulis@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div dir="ltr">Hi Vitali,
<div><br>
</div>
<div>this was what I was looking
for, much appreciated :)</div>
<div><br>
</div>
<div>Best Regards,</div>
<div>Rudolfs Bundulis</div>
</div>
<div>
<div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2015-01-26
14:59 GMT+02:00 Vadim
Galitsyn <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:vadim.galitsyn@oracle.com"
target="_blank">vadim.galitsyn@oracle.com</a>></span>:<br>
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div
style="word-wrap:break-word">
<div>Hi Rudolfs,</div>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>Please consider to
add VBOX_WITH_R0_LOGGING=1
into LocalConfig.kmk
in order to enable
LogRel()’s.</div>
<span><font
color="#888888">
<div><br>
</div>
<div>Vadim</div>
</font></span>
<div>
<div><br>
<div>
<blockquote
type="cite">
<div>On 26 Jan
2015, at
15:26, Rūdolfs
Bundulis <<a
moz-do-not-send="true" href="mailto:rudolfs.bundulis@gmail.com"
target="_blank">rudolfs.bundulis@gmail.com</a>>
wrote:</div>
<br>
<div>
<div dir="ltr">Hi
Vadim,
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>Best
Regards,</div>
<div>Rudolfs
Bundulis</div>
</div>
<div
class="gmail_extra"><br>
<div
class="gmail_quote">2015-01-26
13:42
GMT+02:00
Vadim Galitsyn
<span
dir="ltr"><<a
moz-do-not-send="true" href="mailto:vadim.galitsyn@oracle.com"
target="_blank">vadim.galitsyn@oracle.com</a>></span>:<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
<div
style="word-wrap:break-word">
<div>Hi
Rudolfs,</div>
<div><br>
</div>
<div>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)?</div>
<span><font
color="#888888">
<div><br>
</div>
<div>Vadim</div>
</font></span>
<div>
<div><br>
<div>
<blockquote
type="cite">
<div>On 26 Jan
2015, at
14:00, Rūdolfs
Bundulis <<a
moz-do-not-send="true" href="mailto:rudolfs.bundulis@gmail.com"
target="_blank">rudolfs.bundulis@gmail.com</a>>
wrote:</div>
<br>
<div>
<div dir="ltr">Hi
Vadim,
<div><br>
</div>
<div>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?</div>
<div><br>
</div>
<div>Best
Regards,</div>
<div>Rudolfs
Bundulis</div>
</div>
<div
class="gmail_extra"><br>
<div
class="gmail_quote">2015-01-26
12:50
GMT+02:00
Vadim Galitsyn
<span
dir="ltr"><<a
moz-do-not-send="true" href="mailto:vadim.galitsyn@oracle.com"
target="_blank">vadim.galitsyn@oracle.com</a>></span>:<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
<div
style="word-wrap:break-word">
<div>Hi
Rudolfs,</div>
<div><br>
</div>
<div>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?</div>
<div><br>
</div>
<div>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.</div>
<span><font
color="#888888">
<div><br>
</div>
<div>Vadim</div>
</font></span>
<div>
<div><br>
<div>
<blockquote
type="cite">
<div>On 26 Jan
2015, at
13:12, Rūdolfs
Bundulis <<a
moz-do-not-send="true" href="mailto:rudolfs.bundulis@gmail.com"
target="_blank">rudolfs.bundulis@gmail.com</a>>
wrote:</div>
<br>
<div>
<div dir="ltr">Hi
Vadim,
<div><br>
</div>
<div>thanks
for the
pointers, I'll
look up the
code, I was
already afraid
that something
is simply
missing.</div>
<div><br>
</div>
<div>To
describe what
I am doing:</div>
<div>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.</div>
<div><br>
</div>
<div>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?</div>
<div><br>
</div>
<div>Best
Regards,</div>
<div>Rudolfs
Bundulis</div>
</div>
<div
class="gmail_extra"><br>
<div
class="gmail_quote">2015-01-26
10:34
GMT+02:00
Vadim Galitsyn
<span
dir="ltr"><<a
moz-do-not-send="true" href="mailto:vadim.galitsyn@oracle.com"
target="_blank">vadim.galitsyn@oracle.com</a>></span>:<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">Hi
Rudolfs,<br>
<br>
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.<br>
<br>
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.<br>
<br>
Vadim<br>
<div>
<div
class="moz-signature"><br>
<br>
> On 24 Jan
2015, at
14:14, Rūdolfs
Bundulis <<a
moz-do-not-send="true" href="mailto:rudolfs.bundulis@gmail.com"
target="_blank">rudolfs.bundulis@gmail.com</a>>
wrote:<br>
><br>
> Hi,<br>
><br>
> 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?<br>
><br>
> Best
Regards,<br>
> Rudolfs
Bundulis<!-- This signature was generated by the MyDesktop Oracle Business Signature utility version 4.2 -->
</div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
</body>
</html>